403 Forbbiden Bypass技巧合集
2026/2/1大约 3 分钟
参考资料
相关工具
- Burp Suite Intruder:
- 直接替换请求方法或使用URL模糊测试字典爆破
bypass-403(by anasbouslaoui):- 一个用Python写的、专门用于403Bypass尝试的自动化工具
403bypasser(by PortSwigger):- Burp Suite扩展插件
技巧合集
变换请求方法
尝试如下请求方法:
GET
POST
HEAD
PUT
DELETE以及不存在的请求方法:
FOO
BAR路径混淆与路径遍历
ACL
访问控制列表ACL(Access Control List)是由一条或多条规则组成的集合。 所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等。 ACL本质上是一种报文过滤器,规则是过滤器的滤芯。
ACL 的主要应用包括:
- 网络访问控制:
限制特定IP地址或网络对设备的访问,例如阻止特定IP访问服务器,或限制某个网络访问互联网。 - 流量控制:
控制特定类型的流量,例如限制特定协议或端口的流量,以优化网络性能。 - 安全防护:
阻止恶意流量,例如阻止来自已知恶意IP地址的攻击,增强网络设备的安全性。 - 服务质量(QoS)控制:
优先处理特定类型的流量,例如对语音或视频流量进行优先传输,确保关键业务的网络质量。
ACL规则通常是基于URL路径来匹配的。假设要访问的目标是/admin/,那么可以尝试如下技巧:
- 大小写变换:
/Admin/,/ADMIN/
- URL编码:
/admin/->/%61dmin/(对a编码),/a%64min/(对d编码)- 双重URL编码:
/admin/->/%2561dmin/(对a的编码结果%61中的%再进行编码)
- 路径遍历/穿越:
/admin/->/anything/../admin/(进入一个目录再返回)/admin/./-> 在路径后面加.//admin//-> 使用双斜杠
- 特殊字符添加:
/admin->/admin?/admin/->/admin..;//admin->/admin#/admin->/admin.html(尝试不同的文件扩展名)
修改请求头
服务器的访问控制有时会绑定到特定的Host头。
- 使用任意Host头:
Host: anything.com
- 使用
localhost或内部IP:Host: localhostHost: 127.0.0.1Host: [服务器的内网IP](如果能猜到)
- 重写Host头:
- 在Burp Suite中,可以同时提供两个
Host头。一些代理服务器可能只检查第一个,而后端服务器却使用了第二个。
- 在Burp Suite中,可以同时提供两个
利用反向代理/负载均衡的特性
现代Web应用通常部署在反向代理(如Nginx, Apache)或负载均衡器后面。ACL规则可能只在代理层配置,而没有在后端的应用服务器上配置。我们可以尝试绕过代理,直接与后端服务器通信。
添加特定的HTTP头:
这些头通常被代理用来向后端传递客户端的真实信息。我们可以手动添加它们,欺骗后端服务器。- IP地址相关的头:
X-Original-URL: /admin X-Rewrite-URL: /admin X-Forwarded-For: 127.0.0.1 X-Originating-IP: 127.0.0.1 X-Remote-IP: 127.0.0.1 X-Client-IP: 127.0.0.1 - 协议相关的头:
X-Forwarded-Proto: https
- IP地址相关的头:
针对特定代理的Bypass:
- Nginx路径穿越: 如果Nginx配置了
alias但路径末尾没有加/,可能会导致目录遍历。例如,访问/admin../可能会读取到admin目录的父目录。
- Nginx路径穿越: 如果Nginx配置了
变换请求协议
- HTTP vs HTTPS: 如果你当前在
http://example.com/admin上收到403,尝试访问https://example.com/admin。反之亦然。服务器可能只为一种协议配置了访问控制。