0x01 簡單介紹
一個檔案上傳點是執行XSS應用程式的絕佳機會。很多網站都有使用者權限上傳個人資料圖檔的上傳點,你有很多機會找到相關漏洞。如果碰巧是一個self XSS,你可以看看這篇文章。
0x02 執行個體分析
首先基本上我們都可以找到類似下面的一個攻擊入口點,我覺得這個并不難。
姿勢一:檔案名方式
檔案名本身可能會反映在頁面是以一個帶有XSS命名的檔案便可以起到攻擊作用。
雖然我沒有準備靶場,但是你可以選擇在W3Schools練習這種XSS 。
姿勢二:Metadata
使用exiftool這個工具可以通過改變EXIF metadata進而一定幾率引起某處反射:
1 | |
例如:
1 | |
姿勢三:Content
如果應用允許上傳SVG格式的檔案(其實就是一個圖像類型的),那麼帶有以下content的檔案可以被用來觸發XSS:
1 | |
一個 PoC用來驗證。你可以通過通路brutelogic.com.br/poc.svg看到效果
姿勢四:Source
建立一個攜帶有JavaScript payload的GIF圖像用作一個腳本的源。這對繞過CSP(内容安全政策)保護“script-src ‘self’”(即不允許使用示例的這種xss方式進行攻擊
<script>alert(1)</script>
)是很有用的,但前提是我們能夠成功地在相同的域注入,如下所示。
要建立這樣的圖像需要這個作為content 和 name,并使用.gif擴充名:
1 | |
這個GIF的圖檔頭——GIF89a,作為alert function的變量配置設定給alert function。但是他們之間,還有一個被标注的XSS變量用來防止圖檔被恢複為text/HTML MIME檔案類型,是以隻需發送一個對這個檔案的請求payload 就可以被執行。
正如我們下面看到的,檔案類unix指令和PHP函數中的exif_imagetype()和getimagesize()會将其識别為一個GIF檔案。是以如果一個應用程式僅僅是使用這些方式驗證是否是一個圖像,那麼該檔案将可以上傳成功(但可能在上傳後被殺掉)。
0x03 最後
如果你想知道更多的有其标志性ASCII字元可以用于一個javascript變量指派的檔案類型,看我随後的文章。
也有很多比較詳細的使用XSS和圖像檔案相結合繞過圖形處理函數庫過濾的例子。這方面的一個很好的例子是here
原文連結:http://brutelogic.com.br/blog/