403 Forbbiden Bypass技巧合集
2025/9/21大约 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: localhost
Host: 127.0.0.1
Host: [服务器的内网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
。反之亦然。服务器可能只为一种协议配置了访问控制。