(漏洞檢查項)|服務端請求偽造 SSRF
漏洞場景
服務端請求偽造(SSRF,Server-Side Request Forgery)漏洞發生在應用程序允許攻擊者通過構造惡意請求,利用服務器端發起HTTP請求,并訪問內部資源或進行其他未授權操作。
漏洞描述
SSRF漏洞通常出現在應用程序接受用戶輸入,并將其用來構造和發送HTTP請求時。攻擊者可以通過操縱輸入參數,使服務器發送請求到攻擊者指定的目標(服務器替用戶發送URL請求),可能是內部網絡中的敏感資源或外部惡意服務器。
漏洞原理
SSRF漏洞的產生是因為應用程序未對用戶輸入的URL或其他參數進行充分的驗證和限制。攻擊者可以利用這些輸入參數,使服務器發送請求到內部網絡中的任意地址,從而訪問不應被公開的資源,如內部API、數據庫、元數據服務等。
漏洞危害
- 內部網絡掃描和攻擊: 攻擊者可以利用SSRF漏洞掃描內部網絡,發現并攻擊內部系統。
- 信息泄露: 攻擊者可以通過訪問內部API或元數據服務獲取敏感信息。
- 遠程代碼執行: 在某些情況下,攻擊者可能利用SSRF漏洞進一步獲得對服務器的控制權限,執行惡意代碼。
- 濫用服務器資源: 攻擊者可以利用服務器發送大量請求,進行DDoS攻擊或濫用帶寬。
漏洞評級
高危
漏洞驗證
- 確認用戶輸入用于構造HTTP請求:
- 識別應用程序中接受URL或其他外部資源地址的輸入點,例如文件下載、URL預覽等功能。
- 測試可控的外部請求:
- 使用合法的外部URL測試功能是否正常工作。
- 例如:輸入
http://example.com
,觀察應用程序是否發送請求并處理響應。
- 測試內部網絡請求:
- 嘗試輸入內部網絡地址(如
http://localhost
或http://127.0.0.1
),檢查應用程序是否發送請求到內部地址。
- 嘗試輸入內部網絡地址(如
- 測試信息泄露:
- 輸入指向內部元數據服務的URL(如AWS EC2元數據
http://169.254.169.254/latest/meta-data/
),檢查是否能獲取敏感信息。
- 輸入指向內部元數據服務的URL(如AWS EC2元數據
漏洞利用
- 內部網絡掃描: 利用SSRF漏洞構造請求,掃描內部網絡的各個端口和服務,獲取內部網絡拓撲結構。
- 信息泄露: 訪問內部元數據服務或API,獲取敏感信息如憑證、配置信息等。
- 遠程代碼執行: 通過SSRF漏洞訪問并利用內部存在漏洞的服務,執行惡意代碼。
漏洞防御
- 嚴格輸入驗證: 對用戶輸入的URL進行嚴格的驗證和過濾,確保只允許訪問合法的外部資源。
- 禁止內部地址訪問: 使用網絡層防火墻或應用層邏輯,阻止對內部IP地址范圍(如
127.0.0.1
、169.254.169.254
等)的請求。 - 限制請求權限: 限制服務器端請求的權限,避免其具有過高的訪問權限。
- 使用白名單: 僅允許訪問經過驗證的可信任的外部資源,拒絕所有不在白名單中的請求。
- 監控和日志記錄: 實施監控和日志記錄,及時發現和響應異常的請求行為。
典型案例
- weblogic ssrf攻擊內網redis反彈shell