漏洞簡述:
攻擊者在請求中注入了額外的參數,同時目標網站信任了這些參數並且導致了非預期的結果
漏洞危險性:
危險性可高可低,具體來說看可污染參數重要與否,不過多數的時候屬於低危
漏洞用處:
此漏洞我個人認為最重要的用處時繞過認證,比如最簡單的越權漏洞我們可以通過修改其uid來越權,而對這個漏洞的最常用的檢測就是創建另一個參數包含這個uid然后加密用來驗證是否是這個參數
我們要是知道加密方式還好,可以自己推導出這個參數修改就可以,但是多數我們是很難推測的,但是如果存在這個漏洞,比如有的網站會檢測uid和checkid這兩個參數吧,如果我們在后面或者前面加上&uid=
也就是傳入兩個參數,有些網站無法很好的處理兩個參數,會出現驗證的時候驗證的是前一個或者后一個參數,但是到了接收參數的時候采用的是另一個參數,這就會繞過檢測產生越權,同理如果waf檢測的
是第一個參數,網站監測的覆蓋后的參數也就是第二個參數,那么我們也可以用這個漏洞繞過waf制造sql或者xxs等
漏洞例子:
就展示一個常見例子
http://xxx/horse.php?id=7 union select 1,2,3,current_user
如果網站有waf會輕易檢測出來,如果說這個waf是檢測的第一個參數,而網站會接收最后一個參數,那么我們改成:
http://xxx/horse.php?id=0&id=7 union select 1,2,3,current_user (&就是&的html轉義字符)
漏洞發現:
就直接修改參數不成發現有驗證等可以在左右加上同名參數修改看看
漏洞修改:
1.對用戶輸入數據的參數的格式進行驗證。
2.在WAF或其他網關設備(比如IPS)在檢查URL時,對同一個參數被多次賦值的情況進行特殊處理。
3.在代碼層面,編寫WEB程序時,要通過合理的$_GET方法獲取URL中的參數值,而嘗試獲取web服務器返回給程序的其他值時要慎重處理。