WEB 应用安全测试备忘单

原文:Web Application Security Testing Cheat Sheet

来源:WEB应用安全测试备忘单

介绍

这个备忘单是一个对WEB应用程序执行黑盒测试的任务清单。

目的

这个清单可以当成有经验的测试老手的备忘录、结合OWASP测试指南一起使用。清单将与测试指南v4一起更新(https://www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_of_Contents)。

我们希望把这个备忘单做成XML文档,这样就可以使用脚本来将其转换成各种格式,如pdf、Media Wki、HTML等,这样同样使得将文档转换为某种打印格式变得容易。

感谢所有给予反馈和帮助的人,如果你有任何意见或建议,欢迎提出并加入到编辑队伍中来。

检查列表

收集信息

手动访问站点

使用爬虫来抓取(手工)无法访问或隐藏的内容

检查泄露信息的文件,如robots.txt, sitemap.xml, .DS_Store

检查主要的搜索引擎索引的此站点的公开内容

检查不同的浏览器UA获取的内容的差异(如使用爬虫的UA访问手机站点)

检查WEB应用程序的指纹(Fingerprinting)

确认使用的技术

确认用户角色

确认应用程序的入口地址

确认客户端代码

确认不同的版本的差异(如web, mobile web, mobile app, web services)

确认位于同一主机或业务相关的应用程序

确认所有的主机名和端口

确认第三方的托管内容

配置管理

检查常用的应用程序和管理URL

检查旧文件、备份文件和未引用文件是否存在

检查支持的HTTP方法和XST漏洞(http://www.hackdig.com/?01/hack-11.htm

检查对文件后缀的处理

检查安全HTTP头(如CSP, X-Frame-Options, HSTS,见http://www.hackdig.com/?07/hack-4958.htm

测试安全策略(如Flash, Silverlight, robots)

在线上环境测试非生产数据或做相反的操作

检查客户端代码中的敏感信息(如API keys,凭据等)

安全传输

检查SSL版本、算法和密钥长度

检查数字证书有效性

检查凭据是否只通过HTTPS传输数据

检查登陆表单是否只通过HTTPS传输数据

检查会话令牌是否只通过HTTPS传输

检查是否使用了HSTS

认证

测试枚举用户

测试认证绕过

测试暴力破解保护

测试密码规则的质量

测试记住密码功能

测试密码表单的自动完成的功能

测试密码重置和找回

测试密码修改流程

测试验证码

测试多因子认证

测试注销功能

测试HTTP的缓存管理(如Pragma, Expires, Max-age)

测试默认登陆账号

测试用户认证历史

测试账号锁定和密码修改成功的通知渠道

测试跨应用程序共享模式/SSO的一致性

会话管理

确定应用程序管理会话的方式(如将cookie tokens、url中的token)

检查会话cookie的标示(httpOnly和secure)

检查会话cookie的返回(path和domain)

检查会话cookie的有效期(expires和 max-age)

检查会话cookie的过期失效

检查会话cookie的相对超时失效

检查会话cookie退出后失效

测试用户是否可以同时拥有多个会话

测试会话cookie的随机性

确认会话令牌在登陆、角色变化和退出时的更新

测试跨应用共享session会话的一致性

测试会话过载(未限制会话应用范围,见:https://www.owasp.org/index.php/Testing_for_Session_puzzling_(OTG-SESS-010)

测试是否存在CSRF和点击劫持漏洞

授权

测试路径遍历

测试绕过授权

测试垂直访问控制问题

测试水平访问控制问题

测试授权检查缺失

数据验证

测试反射型XSS

测试存储型XSS

测试DOM型XSS

测试CSF(flash XSS)

测试HTML注入

测试SQL注入

测试LDAP注入

测试ORM注入

测试XML注入(http://www.hackdig.com/?03/hack-8921.htm

测试XXE注入

测试SSI注入(http://www.hackdig.com/?01/hack-7955.htm)

测试XPath注入

测试XQuery注入

测试IMAP/SMTP注入

测试Code注入

测试EL注入(https://www.owasp.org/index.php/Expression_Language_Injection

测试Command注入

测试Overflow (堆, 栈和整形溢出)

测试Format String(错误的字符串格式化)

测试incubated vulnerabilities(缺陷孵化)

测试HTTP Splitting/Smuggling(协议层)

测试HTTP Verb Tampering(权限干涉)

测试Open Redirection

测试本地文件包含

测试远程文件包含

比较客户端与服务端的验证规则

测试NoSQL注入

测试HTTP参数污染

测试自动绑定(auto-binding:https://click.apache.org/docs/user-guide/html/ch02s03.html

测试Mass Assignment(见ror经典漏洞,http://blog.xdite.net/posts/2012/03/05/github-hacked-rails-security/

测试NULL/Invalid Session Cookie

拒绝服务

测试反自动化/机器请求

测试账号锁定

测试HTTP 协议DoS

测试SQL通配符DoS/sleep Dos

业务逻辑

测试功能滥用

测试缺乏不可否认性(非对称加密作用)

测试信任关系

测试数据完整性

测试指责分离

密码学

检查应加密数据是否加密

根据上下文检查是否使用了错误的算法

检查使用弱算法

检查是否合理使用盐

检查随机函数(的随机性)

风险功能—文件上传

检查可接受的文件类型是否在白名单内

检查文件尺寸限制、上传频率和总文件数的阈值与限制情况

检查文件内容是否与定义的文件类型相符

检查所有上传的文件都经过杀毒软件扫描

检查不安全的文件名是否经过处理

检查不能在web根目录下直接访问上传文件

检查上传的文件是否存储在相同的主机名和端口

检查文件和其他媒体继承了身份验证和授权功能

风险功能—支付信息

测试WEB服务器或应用程序是否存在已知漏洞和配置问题

测试默认或易被猜到的密码

测试生产环境的非生产数据或做相反的测试

测试注入漏洞

测试缓冲区溢出

测试不安全的加密存储

测试传输层保护不足

测试不适当的错误处理

测试CVSS v2 评分> 4.0的全部漏洞

测试身份验证和授权的问题

测试CSRF

HTML 5

测试WEB消息传递

测试WEB本地存储SQL注入

检查CORS的实现

检查离线的WEB应用程序

其他格式

DradisPro模板格式 on github

Asana在Templana的格式 (感谢Bastien Siebman)

作者与主编

Simon Bennetts

Rory McCune

Colin Watson

Simone Onofri

包括Testing Guide v3的全部作者

其他贡献者

Ryan Dewhurst

Amro AlOlaqi

翻译 TaoGOGO