作者:
瞌睡龍
·
2013/06/28 16:25
0x00 拋磚引玉
當你看到一個引數的值是url的時候你會想到什麼?
結合wooyun裡的案例看,可能產生的危害分為三方面:
1、url重定向跳轉漏洞
2、底層操作類庫支援其他協議導致讀取本地或探測網路資訊
3、不支援其他協議但是沒有設定網路邊界
0x01 詳細介紹
URL重定向跳轉
url跳轉漏洞的科普之前已經發過/papers/?id=58。
url跳轉可能集中過濾不嚴格的情況:
一是白名單同域下可能有其他的302跳轉漏洞結合繞過。
二是單純判斷字串中是否包含白名單域名,可用http://www.attack.com/test.com/index.php或http://www.test.com.attack.com/index.php繞過。
三是後端取host的時候跟瀏覽器識別的差異導致http://www.attack.com\test.com/index.php(測試除了gecko核心,其他瀏覽器都把attack.com當做host)可繞過。
後端如果僅僅是依靠獲取/來結束的話,就會產生差異,包括php中的parse_url函式獲取host的結果也是www.attack.com\test.com
底層操作類庫支援其他協議導致讀取本地或探測網路資訊
wooyun中案例:
WooYun: 微博--微收藏多處任意檔案讀取漏洞
WooYun: 人人網的分享網頁功能存在諸多安全漏洞
獲取地址的內容輸出出來,後端採用curl庫,支援其他的協議,如果沒有做任何過濾防範措施,可使用file協議時便可讀取本地的檔案,telnet探測埠資訊等。
http://share.renren.com/parse_share.do?link=file:///etc/passwd
http://share.renren.com/parse_share.do?link=file:///etc/sysconfig/
http://mark.appsina.com/read.php?sid=2247&type=0&url=telnet://221.179.193.1&pos=1&from=0&gsid=3_5bc7d139d8527229d2df38b6765c6b91b8428eda66bd8c1e61b5df&vt=2
不支援其他協議但是沒有設定網路邊界
wooyun中案例:
WooYun: 我是如何漫遊騰訊內部網路的
WooYun: 我是如何漫遊搜狗和搜狐內部網路的
這兩個漏洞已經對核心白帽子公開,並且廠商已經修復,就拿來做例子了。
當已經針對url做了協議控制只允許http訪問時還能做什麼呢?
嘗試下訪問內網咖
http://wap.sogou.com/tc?url=http%3A%2F%2Fno.sohu.com%2F
可以用暴力破解二級域名的工具找內網的域名跑一下試試,然後嘗試訪問看看是否成功~!
0x02 修復方案
加入有效性驗證Token
我們保證所有生成的連結都是來自於我們可信域的,透過在生成的連結里加入使用者不可控的Token對生成的連結進行校驗,可以避免使用者生成自己的惡意連結從而被利用,但是如果功能本身要求比較開放,可能導致有一定的限制。
設定嚴格白名單及網路邊界
功能要求比較開放的情況下,需要嚴格限定協議以及可訪問的網路。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!