介绍
这个备忘单是一个对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应用程序
其他格式
作者与主编
Simon Bennetts
Rory McCune
Colin Watson
Simone Onofri
包括Testing Guide v3的全部作者
其他贡献者
翻译TaoGOGO
英文原文: https://www.owasp.org/index.php/Web_Application_Security_Testing_Cheat_Sheet