前期准备
0.侦查和分析
- 识别Web服务器和技术
- 枚举子域
- 目录枚举
- 查找泄漏的ID,电子邮件(pwndb)
- 识别WAF
- 在所有网站上搜寻有趣的关键字,例如密码,令牌等
- 测试调试参数
- 识别数据输入点
- 尝试找到/robots.txt /crossdomain.xml /clientaccesspolicy.xml /phpinfo.php /sitemap.xml和/.well-known/
- 查看有关源代码的注释
- 检查/.git
- Shodan
- Google dorking
- 检查waybackurls(gau和waybackurls)
- 检查备份文件(bfac)
- 找到管理员和登录面板
1.网络测试
- [ ]检查允许的ICMP数据包
- [ ]检查DMARC策略(欺骗检查)
- [ ]在80和443以外的其他端口上查看服务
- [ ]检查UDP端口(udp-proto-scanner或nmap)
- [ ]测试SSL(testssl)
2.准备
- [ ]研究网站结构
- [ ]列出所有可能的测试用例
用户管理
1.注册
- [ ]重复注册
- [ ]覆盖现有用户(现有用户接管)
- [ ]用户名唯一
- [ ]弱密码政策
- [ ]电子邮件验证流程不足
- [ ]实施注册功能薄弱或允许使用一次性电子邮件地址
- [ ]创建用户后进行模糊检查,以检查是否有任何文件夹被覆盖或使用您的个人资料名称创建
- [ ]仅在密码中添加空格
2.认证方式
- [ ]用户名枚举
- [ ]密码猜测能力
- [ ]账户恢复功能
- [ ]“记住我”功能
- [ ]模拟功能
- [ ]不安全的凭据分发
- [ ]失效条件
- [ ]多阶段机制
- [ ]SQL注入
- [ ]自动完成测试
- [ ]更改电子邮件,密码或2FA时缺少密码确认
- [ ]如果HTTP和HTTPS均可用,则登录功能较弱
- [ ]暴力破解的用户帐户锁定机制
- [ ]检查密码单词表(cewl和burp-goldenNuggets)
- [ ]测试0auth的登录功能打开重定向
- [ ]在SAML身份验证中测试响应篡改
- [ ]在OTP中检查可猜测的代码和比赛条件
- [ ]如果是JWT,请检查常见缺陷
- [ ]浏览器缓存弱点(例如,语法,过期,最大年龄)
3.会话
- [ ]会话处理
- [ ]测试令牌的含义
- [ ]测试令牌的可预测性
- [ ]令牌传输不安全
- [ ]日志中令牌的公开
- [ ]令牌到会话的映射
- [ ]会话终止
- [ ]会话固定
- [ ]跨站点请求伪造
- [ ]Cookie范围
- [ ]解码Cookie(Base64,十六进制,URL等)
- [ ]Cookie有效期
- [ ]检查HTTPOnly和安全标志
- [ ]使用来自不同有效IP地址或系统的相同Cookie
- [ ]访问控制
- [ ]使用多个帐户进行控制的有效性
- [ ]不安全的访问控制方法(请求参数,Referer标头等)
- [ ]通过不同的机器/ IP检查并发登录
- [ ]绕过AntiCSRF令牌
- [ ]生成的安全性问题较弱
- [ ]Cookie上的路径遍历
4.个人资料/帐户详细信息
- [ ]查找具有用户ID的参数,并尝试篡改以获取其他用户的详细信息
- [ ]创建仅与用户帐户有关的功能列表,然后尝试CSRF
- [ ]更改电子邮件ID并使用任何现有的电子邮件ID更新。检查其是否在服务器上得到验证。
- [ ]检查任何新的电子邮件确认链接,如果用户不确认该怎么办。
- [ ]文件上传:eicar,无大小限制,文件扩展名,过滤器绕过,brup扩展
- [ ]CSV导入/导出:命令注入,XSS,宏注入
- [ ]检查个人资料图片的网址并查找电子邮件ID /用户信息或EXIF地理位置数据
- [ ]图片个人资料上传中的imagetragick
- [ ]元数据的所有下载文件的
- [ ]帐户删除选项,然后尝试使用“忘记密码”功能重新激活
- [ ]更改任何用户唯一参数时,请尝试使用bruteforce枚举。
- [ ]检查应用程序请求重新认证以进行敏感操作
- [ ]尝试参数污染以将相同字段的两个值相加
- [ ]检查其他角色政策
5.忘记密码
- [ ]注销和重置密码时使会话无效
- [ ]忘记密码重置链接/代码的唯一性
- [ ]重置链接过期时间
- [ ]在重置链接中找到用户ID或其他敏感字段并对其进行篡改
- [ ]请求2个重置密码链接并使用较旧的
- [ ]检查许多请求是否具有顺序令牌
- [ ]使用email@burp_collab并分析回调
输入处理
- [ ]模糊所有请求参数
- [ ]识别所有反射数据
- [ ]反射XSS
- [ ]GET&POST(X转发主机)中的HTTP标头注入
- [ ]任意重定向
- [ ]储存攻击
- [ ]操作系统命令注入
- [ ]路径遍历,LFI和RFI
- [ ]脚本注入
- [ ]文件包含
- [ ]SMTP注入
- [ ]本机软件缺陷(缓冲区溢出,整数错误,格式字符串)
- [ ]SOAP注入
- [ ]LDAP注入
- [ ]SSI注射
- [ ]XPath注入
- [ ]XXE在任何请求,改变内容类型为text / xml
- [ ]存储的XSS
- [ ]SQL注入
- [ ]NoSQL的注入
- [ ]HTTP请求走私
- [ ]开放式重定向
- [ ]代码注入
- [ ]SSRF在以前发现的开放端口
- [ ]xmlrpc.php DOS和用户枚举
- [ ]HTTP危险方法选项删除
- [ ]尝试发现隐藏的参数(arjun或parameth)
错误处理
- [ ]访问自定义页面,如/whatever_fake.php(.aspx、.html等)
- [ ]使用不同的值在GET和POST请求中添加多个参数
- [ ]在Cookie值和参数值中添加“ []”,“]]”和“ [[”以创建错误
- [ ]通过在URL末尾输入“ /〜randomthing /%s”来产生错误
- [ ]在输入中使用Burp入侵者“ Fuzzing Full”列表来生成错误代码
- [ ]尝试使用其他HTTP动词(例如PATCH,DEBUG)或错误的(例如FAKE)
应用逻辑
- [ ]识别逻辑攻击面
- [ ]通过客户端测试数据传输
- [ ]测试对客户端输入验证的依赖
- [ ]胖客户端组件(Java,ActiveX,Flash)
- [ ]多阶段处理逻辑缺陷
- [ ]处理不完整的输入
- [ ]信任界限
- [ ]交易逻辑
- [ ]以电子邮件形式实施CAPTCHA以避免泛滥
- [ ]篡改产品ID,价格或数量值的任何操作(添加,修改,删除,放置,支付…)
- [ ]篡改礼物或折扣代码
- [ ]重复使用礼品代码
- [ ]尝试参数污染在同一请求中两次使用礼品代码
- [ ]尝试将XSS存储在非受限字段(例如地址)中
- [ ]检查付款表格中的CVV和卡号是否为纯文本或带掩码
- [ ]检查是由应用本身处理还是发送到第三部分
- [ ]其他用户的IDOR详细信息机票/购物车/货运
- [ ]检查IDINT的PRINT或PDF创建
- [ ]使用用户枚举检查退订按钮
- [ ]社交媒体共享链接上的参数污染
- [ ]CORS(corsy)
- [ ]将POST敏感请求更改为GET
其他检查
1.主机
- [ ]共享基础架构中的隔离
- [ ]ASP托管的应用程序之间的隔离
- [ ]Web服务器漏洞
- [ ]危险的HTTP方法
- [ ]代理功能
- [ ]虚拟主机配置错误
- [ ]检查请求中的内部数字IP
- [ ]检查外部数字IP并解决
- [ ]测试云存储
- [ ]检查是否存在其他渠道(www.web.com与m.web.com)
2.验证码
- [ ]发送旧的验证码值。
- [ ]发送带有旧会话ID的旧验证码值。
- [ ]请求验证码的绝对路径,例如www.url.com/captcha/1.png
- [ ]使用任何adblocker删除验证码,然后再次请求
- [ ]用OCR工具绕过(简单的一种)
3.安全HTTP头
- [ ]X-XSS-Protection
- [ ]Strict-Transport-Security
- [ ]Content-Security-Policy
- [ ]Public-Key-Pins
- [ ]X-Frame-Options
- [ ]X-Content-Type-Options
- [ ]Referer-Policy
- [ ]Cache-Control
- [ ]Expires
[…] Day008: 漏洞挖掘网站检查表 […]
赞赞