當前位置:
首頁 > 新聞 > 以針對Yahoo! 的安全測試為例講解如何高效的進行子域名收集與篩選

以針對Yahoo! 的安全測試為例講解如何高效的進行子域名收集與篩選

平常我在Hackerone平台上尋找新目標時,常常會關注廠商響應信息,如果廠商響應越積極我就越感興趣。相對於響應信息很少的廠商而言,我們更能從中摸索到問題的本質。換句話說,即越是大廠越是容易挖到漏洞。不信?今天就拿Yahoo!練手。


預測

眾所周知Yahoo!是一個國際性的大廠,所以我預計其擁有大量子域名,路徑以及重定向頁面。從何處下手呢?我常使用Sublister及Fierce進行枚舉/爆破子域名。我希望能夠利用這些工具找到被遺忘,配置錯誤的或者還在使用舊版軟體運行的子域名。使用Subliste3r我獲得了超過9000條子域名信息,如何進行檢查呢?




Semi - 自動化搜索


我不信這9000多條子域名中沒有一個存在漏洞的。打開Sublist3r掃描結果,手動刪除一些無效及重複子域名。雖然我沒有進行很細緻的檢查,但仍舊還有7000多條記錄。接下來進行這些記錄進行排序,使用Nmap以更容易解析的XML方式輸出結果。

nmap -sS -p80,443 -iL nmap_input.txt -oX nmap_output

輸出XML樣例:

<hostnames>
<hostname name=」start.producersdesktop.yahoo.com」 type=」user」/>
<hostname name=」proxy.publish.bf1.yahoo.com」 type=」PTR」/>
</hostnames>
<ports><port protocol=」tcp」 portid=」80"><state state=」closed」 reason=」reset」 reason_ttl=」42"/><service name=」http」 method=」table」 conf=」3"/></port>
</ports>
<times srtt=」148262" rttvar=」148262" to=」741310"/>
</host>

我們只能掃描Nmap命令中指定的埠,對我來說掃描結果中最有用的參數為state以及hostname name。我相信hostname name就是DNS記錄,就我以往的經驗而言,這裡有時可能會是你的ISP地址,這時你就該考慮該站點是否有進行解析的問題。我們這裡的基數比較大,扔幾百條記錄出去影響也不大。為此我寫了一個腳本,根據主機名的name參數決定是否刪除該XML條目。

import xmltree
def removeHostname():
  for host in root.iter("host"):
       for elem in host.iter():
           if "name" in elem.attrib and elem.attrib["name"] == "ISP_redir_site":
               root.remove(host)
tree.write("output.xml")

至此獲得所有開放80埠的子域名,接下來可以使用Nmap掃描這些子域名的HTML標題(?—?script http-title),並且再次對所得數據進行除重。Yahoo!這個國際性大廠設有多語言站點,比如:

ru.search.yahoo.com
br.search.yahoo.com
de.stars.yahoo.com

接下來我們便是要清除這些明顯的子域名,在最後獲得的子域名中依舊有700條記錄。

枯燥的研究


接下來就是花時間仔細檢測剩下的子域名記錄了。由於不知道這些子域名之間是否還存在著共同點,所以只能手工一個一個的來測試了。測試一段時間之後,我發現某些子域名存在相似點以及可重複性。打開http://yvap.query.yahoo.com/我才發現其屬於YQL內部主機,同樣的我在http://ygh-app.media.yahoo.com/也觀察到這個信息。



YQL (Yahoo! Query Language)內部主機



Beaker


深入探究

http://yvap.query.yahoo.com/v1/test/js/console_ajax.js中的JavaScript代碼之外,我沒有發現任何有趣的信息。這裡不止一個內部主機,但是不是出於關閉狀態就是下面截圖這個樣子。



鎖著的內部YQL主機YQL的示例查詢如下:

https://query.yahooapis.com/v1/public/yql?q=show%20tables&diagnostics=true

我嘗試使用該方法來重置鎖著的主機,意思即是雖然主面板顯示內部主機是無法訪問,但你仍然可以通過URL提交查詢。將列表中的子域名一個一個的拿來檢測,其中大部分都能運行show tables命令。在向廠商報告問題之後我想繼續深入下去,結果發現該頁面可任意訪問

在http://ygh-app.media.yahoo.com我發現用於測試的Beaker站點,老實說這還是我第一次處理這種情況。經過檢測發現了另一個泄露的信息。


總結


這並不是一個革命性的方法,但相交其他方式會快一點,準確一點,耗費時間更少一點。在兩個星期前我發現一個名為Aquatone的工具將所用到的腳本都集成到一起了。


時間軸


5月10日 - 向HackerOne平台報告


5月11日 - Yahoo!響應YQL主機的問題之前已經有報告過,但第二個問題是最新報告


5月12日 - 我提出可以向YQL主機發送查詢請求的可能


5月18日 - 答覆這是有意的行為


6月 2日 - 獲取獎金


*參考來源:medium,freebuf小編鳶尾編譯,轉載請註明來自FreeBuf.com


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

Vault 7系列「陰影」項目曝光:雷神公司暗中為CIA提供惡意程序分析
如何利用密碼學以及數論基礎攻擊一個「宣稱安全」的密碼系統
MOTS攻擊之TCP攻擊
gSOAP 開源軟體開發庫曝「綠蘿」漏洞,數百萬 IoT 設備岌岌可危

TAG:FreeBuf |

您可能感興趣

哪些疾病一定要進行子宮切除?女人沒了子宮會怎樣?
法國一女子進行子宮切除手術,醫生竟將手套紗布忘在了患者體內
「大姨媽」來臨,趕緊抓住這個時機,三步進行子宮「大掃除」!