不尋常的 403 繞過一個完整的網站接管今天我們來看看我今年早些時候進行的一項外部滲透測試。由于保密協議,我們將使用常用域名redacted.com
因此,為了給測試提供一些背景信息,它完全是黑盒子,客戶提供的信息為零。我們唯一知道的是我們被允許測試 redacted.com 和子域 my.redacted.com
我將跳過整個被動信息收集過程,直奔主題。
我開始積極掃描和瀏覽網站以發現潛在的切入點。除了 80 和 443 之外,沒有開放的端口。
因此,我開始使用 gobuster 進行目錄暴力破解,然后我立即看到一個管理面板返回 403 — Forbidden 響應。

看到這一點,我們導航到該網站以驗證它確實是一個 403 并使用 Burp Suite 捕獲請求以進行潛在的繞過。

在我看來,我認為繞過它是不可能的,因為內部 IP 地址有一個 ACL。
盡管如此,我嘗試了以下方法來繞過 403:
HTTP 方法Fuzz(GET、POST、TRACE、HEAD 等) HTTP 標頭Fuzz(X-Originating-IP:127.0.0.1,X-Forwarded-For:127.0.0.1 等) 路徑Fuzz/強制瀏覽(https://redacted.com/admin/index.html、https://redacted.com/admin/./index.html 等) 協議版本更改(從 HTTP 1.2、降級到 HTTP 1.1 等) 字符串終止符(%00、0x00、//、;、%、!、?、[] 等)——將它們添加到路徑末尾和路徑內部
長話短說,這些方法都不起作用。所以,我記得有時安全控制是圍繞請求中組件的字面拼寫和大小寫構建的。因此,我嘗試了“大小寫切換”技術——聽起來可能很愚蠢,但它確實有效!
把它們加起來:
https://redacted.com/admin -> 403 禁止 https://redacted.com/Admin -> 200 OK https://redacted.com/aDmin -> 200 OK 將任何字母轉換為大寫字母將繞過限制。
瞧!我們獲得管理面板的登錄頁面。

我們對這個很幸運,盡管如此,我們現在可以嘗試不同的攻擊(密碼噴灑、暴力破解等)。我們正在測試的公司不小,我們從泄露的數據庫(泄漏檢查、泄漏窺視等)中收集了大量員工憑證。但是,這是管理面板,因此我們進行常規測試:
查看是否有用戶名枚舉 查看是否有登錄限制 檢查可能會因請求數量而阻止我們的 WAF
簡而言之,兩者都沒有。我們無法枚舉用戶名,但是沒有任何類型的速率限制。
考慮到上述情況,我們加載 rockyou.txt 并開始暴力破解“admin”帳戶的密碼。經過幾千次嘗試,我們看到以下內容:

我們找到了管理員帳戶的有效憑據。導航到網站的管理面板,進行身份驗證,我們就進去了!

既然我們已經進入,我們需要做或可以做的事情就不多了(未經客戶同意)。具有管理權限的管理面板允許您更改整個配置 - 控制用戶及其屬性,控制網站頁面,真正控制一切。因此,我決定編寫一個 Python 腳本來抓取整個用戶數據庫(大約 39,300 — 三萬九千零三百),其中包含他們的姓名、電子郵件、電話和地址。收集所有這些細節的想法是,然后將它們呈現給客戶(受害者)——以顯示被利用漏洞的嚴重性。此外,由于這些安全漏洞的嚴重性,我們在同一天針對這些特定問題編寫了一份報告,并在 24 小時內修復了這些問題。
最終,在整個利用過程中沒有任何困難,但是不尋常的 403 繞過確實是我第一次看到,我認為你們中的一些人可能會將其武器化或將其添加到您未來的 403 繞過清單中。
系統安全運維
系統安全運維
LemonSec
系統安全運維
LemonSec
系統安全運維
安全牛
系統安全運維
安全牛
FreeBuf
LemonSec
一顆小胡椒