# WEB 应用安全测试备忘单
> 原文:[Web Application Security Testing Cheat Sheet](https://www.owasp.org/index.php/Web_Application_Security_Testing_Cheat_Sheet)
> 来源:[WEB应用安全测试备忘单](http://cheatsheets.hackdig.com/?8.htm)
## 介绍
这个备忘单是一个对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](https://github.com/raesene/OWASP_Web_App_Testing_Cheatsheet_Converter/blob/master/OWASP_Web_Application_Testing_Cheat_Sheet.xml)
Asana在[Templana](http://templana.com/templates/owasp-website-security-checklist/)的格式 (感谢Bastien Siebman)
## 作者与主编
[Simon Bennetts](https://www.owasp.org/index.php/User:Simon_Bennetts)
[Rory McCune](https://www.owasp.org/index.php/User:Raesene)
Colin Watson
Simone Onofri
包括Testing Guide v3的全部作者
## 其他贡献者
[Ryan Dewhurst](https://www.owasp.org/index.php/User:Ryan_Dewhurst)
[Amro AlOlaqi](https://www.owasp.org/index.php/User:Amro_Ahmed)
翻译 TaoGOGO