利用文件上傳實現XSS攻擊是一個Hacking Web應用的很好機會,特別是無處不在的用戶頭像上傳案例中,這就給予我們很多發現開發者錯誤的機會。基本的文件上傳 XSS 攻擊有以下幾種。
1) 文件名
文件名本身可能就是網頁的一部分可以造成反射,所以可以通過將 XSS 語句插入文件名中來觸發反射。
盡管不是有意為之,但是這個 XSS 可以實踐在 W3Schools。
2) 元數據
使用 exiftool 工具可以修改 EXIF 元數據,從而在某些地方造成反射:
$ exiftool -FIELD=XSS FILE
例子:
$ exiftool -Artist=’ “><img src=1 onerror=alert(document.domain)>’ brute.jpeg
3) 內容
如果 Web 應用允許上傳 SVG(一種圖像類型)擴展名,則以下內容可以用來觸發 XSS:
<svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.domain)"/>
一個 POC 可以在這里看到 brutelogic.com.br/poc.svg。
4)源碼
我們可以很容易的創建一張包含 JAVAscript payload 的 GIF 圖片,然后將這張圖片當做源碼加以引用。如果我們可以成功的注入相同的域名,如下所示,則這樣可以有效的幫我們繞過 CSP(內容安全策略)防護(其不允許執行例如<script>alert(1)</script>)
創建這樣一張圖片可以使用如下內容并將文件命名為 .gif 后綴:
GIF89a/*<svg/onload=alert(1)>*/=alert(document.domain)//;
GIF 文件標識 GIF89a 做為一個 JavaScript 的變量分配給 alert 函數。中間注釋部分的 XSS 是為了以防圖像被檢索為 text/html MIME 類型時,通過請求文件來執行 payload。
我們通過下圖可以發現,類 UNIX 命令的 php 函數 exif_imagetype() 和 getimagesize() 都會將這個文件識別為 GIF 文件。而一般的 Web 應用都是使用這些函數來驗證圖像類型的,所以這樣一個文件是可以被上傳的(但上傳后可能會被殺毒軟件查殺)。
點擊關注我的頭條號,0基礎掌握更多黑客秘籍
私信回復‘’資料‘’領取更多技術文章和學習資料,加入專屬的安全學習圈一起進步
安界
安界貫徹人才培養理念,結合專業研發團隊,打造課程內容體系,推進實訓平臺發展,通過一站式成長計劃、推薦就業以及陪護指導的師帶徒服務,為學員的繼續學習和職業發展保駕護航,真正實現和完善網絡安全精英的教練場平臺;
關注私信‘資料’
如果你想實現進高企、就高職、拿高薪,即使低學歷也可實現職業發展中的第一個“彎道超車”!趕緊私信我!等你來!