URL注入概念
輸出HTML、JS,可引發XSS跨站攻擊
調用SQL語句,可引發SQL注入攻擊
使用SHELL命令,可引發OS命令注入
URL參數可控,可引發URL注入攻擊
URL注入攻擊與XSS跨站、SQL注入類似,也是參數可控的一種攻擊方式。URL注入攻擊的本質就是URL參數可控。攻擊者可通過篡改URL地址,修改為攻擊者構造的可控地址,從而達到攻擊的目的。
攻擊思路
安全屆至理名言:永遠不要相信用戶的輸入。
使用經典的輸入——處理——輸出模型來看Web應用,在有輸入的地方,或者用戶可控的地方均可能存在安全風險,處理過程和輸出過程亦會產生安全風險。
攻擊思路來源和某SRC審核小哥哥的撕逼,內容如下:"你好,非常感謝提交漏洞,該問題的核心我們認為是沒有對提交的內容進行過濾,可以使用不可控的URL作為輸入。這僅是針對這個網站而言的。但……"
URL可控,那但凡涉及到傳遞URL參數的地方均可能存在安全隱患。
URL注入漏洞測試方法很簡單,只需要有一台公網可訪問的VPS服務器,如想如虎添翼,可另配置一個401認證頁面,並記錄輸入賬號密碼。
漏洞危害
1 管理后台
查找管理后台的方法:字典爆破、搜索引擎、Robots.txt、信息泄漏、社工等等,URL注入攻擊,有時可以幫助你找到管理后台地址。
2 跨站XSS
URL可控處,輸入XSS Payload,某些頁面會加載此處URL地址,使用img標簽,這時可能存在安全風險,導致跨站問題。
3 SSRF
SSRF(Server-Side Request Forgery:服務器端請求偽造) 是一種由攻擊者構造形成由服務端發起請求的一個安全漏洞。一般情況下,SSRF攻擊的目標是從外網無法訪問的內部系統。SSRF 形成的原因大都是由於服務端提供了從其他服務器獲取數據的功能,但沒有對目標地址做過濾與限制。比如從指定URL地址獲取網頁文本內容,加載指定地址的圖片,下載等。
4 401基礎認證釣魚
如果一個頁面需要Basic認證,它會檢查請求報文頭中的Authorization字段的內容,該字段的值由認證方式和加密值構成。在Basic認證中,它會將用戶和密碼部分組合:"username"+":"+"password",然后進行Base64編碼。
挖掘技巧
但凡傳遞URL參數的地方均有可能存在問題,常見的URL參數梳理如下:go、return、returnTo、logout、register、login、returnUrl、path、redirectURI、redir、returl share、wap、url、link、src、source、target、u、3、display、sourceURl、imageURL、domain。具體是哪個參數,取決於天馬行空的程序員,但是如果看到某個請求中含有http://|https://開頭的內容,不妨嘗試替換一下。
另外,某些情形下,可能對域名做了限制,這時候可以嘗試繞過,這里繞過的技巧類似URL重定向繞過或SSRF繞過技巧。主要說一下畸形構造繞過,當然也可以Fuzzing,畸形構造主要涉及如下字符:";"、 "/"、"\"、"?"、":"、"@"、"="、"&"、"."。常見bypass方式:
a. 單斜線"/"繞過
https://www.xxx.com/redirect.php?url=/www.evil.com
b. 缺少協議繞過
https://www.xxx.com/redirect.php?url=//www.evil.com
c. 多斜線"/"前綴繞過
https://www.xxx.com/redirect.php?url=///www.evil.com
https://www.xxx.com/redirect.php?url=////www.evil.com
d. 利用"@"符號繞過
https://www.xxx.com/redirect.php?url=https://www.xxx.com@www.evil.com
e. 利用反斜線"\"繞過
https://www.xxx.com/redirect.php?url=https://www.evil.com\https://www.xxx.com/
f. 利用"#"符號繞過
https://www.xxx.com/redirect.php?url=https://www.evil.com#https://www.xxx.com/
g. 利用"?"號繞過
https://www.xxx.com/redirect.php?url=https://www.evil.com?www.xxx.com
h. 利用"\\"繞過
https://www.xxx.com/redirect.php?url=https://www.evil.com\\www.xxx.com
i. 利用"."繞過
https://www.xxx.com/redirect.php?url=.evil
https://www.xxx.com/redirect.php?url=.evil.com
j.重復特殊字符繞過
https://www.xxx.com/redirect.php?url=///www.evil.com//..
https://www.xxx.com/redirect.php?url=////www.evil.com//..
其他常見的繞過方式還有,使用地址,而不是域名;使用跳轉到IPV6地址,而不是IPv4地址;用10進制、8進制、16進制形式表示;更換協議,使用ftp、gopher協議等;
案例分享
某站點上傳圖片進行演示
1上傳時候,抓數據包,查看返回數據包內容
2修改返回數據包URL地址,此處改為某401認證頁面地址
3放過數據包,進行保存
4再次訪問頁面,跳出認證頁面
防御
檢測URL中是否含有特殊字符;
對加載URL域進行檢測,可正則匹配xxx.com域,只允許該域下地址;
題記
這篇文章是關於URL注入的,我覺得寫得挺好,方便我查閱,不知道是哪位安全區的大佬寫的,我是在張敬沛沖的知識星球里看到他的,我加他的星球初衷是多學點網安姿勢,了解下行業情況,結果他發着發着0day號被封了,以下是我從他開始發的所有資源內容整理,應該對大家有所幫助。