由引數URL想到的

wyzsk發表於2020-08-19
作者: 瞌睡龍 · 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對生成的連結進行校驗,可以避免使用者生成自己的惡意連結從而被利用,但是如果功能本身要求比較開放,可能導致有一定的限制。

設定嚴格白名單及網路邊界

功能要求比較開放的情況下,需要嚴格限定協議以及可訪問的網路。

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章