利用文件上傳實現(xiàn)XSS攻擊是一個Hacking Web應(yīng)用的很好機會,特別是無處不在的用戶頭像上傳案例中,這就給予我們很多發(fā)現(xiàn)開發(fā)者錯誤的機會。基本的文件上傳 XSS 攻擊有以下幾種。
1) 文件名
文件名本身可能就是網(wǎng)頁的一部分可以造成反射,所以可以通過將 XSS 語句插入文件名中來觸發(fā)反射。

盡管不是有意為之,但是這個 XSS 可以實踐在 W3Schools。
2) 元數(shù)據(jù)
使用 exiftool 工具可以修改 EXIF 元數(shù)據(jù),從而在某些地方造成反射:
$ exiftool -FIELD=XSS FILE
例子:
$ exiftool -Artist=’ “><img src=1 onerror=alert(document.domain)>’ brute.jpeg

3) 內(nèi)容
如果 Web 應(yīng)用允許上傳 SVG(一種圖像類型)擴展名,則以下內(nèi)容可以用來觸發(fā) XSS:
<svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.domain)"/>
一個 POC 可以在這里看到 brutelogic.com.br/poc.svg。
4)源碼
我們可以很容易的創(chuàng)建一張包含 JAVAscript payload 的 GIF 圖片,然后將這張圖片當(dāng)做源碼加以引用。如果我們可以成功的注入相同的域名,如下所示,則這樣可以有效的幫我們繞過 CSP(內(nèi)容安全策略)防護(其不允許執(zhí)行例如<script>alert(1)</script>)

創(chuàng)建這樣一張圖片可以使用如下內(nèi)容并將文件命名為 .gif 后綴:
GIF89a/*<svg/onload=alert(1)>*/=alert(document.domain)//;
GIF 文件標(biāo)識 GIF89a 做為一個 JavaScript 的變量分配給 alert 函數(shù)。中間注釋部分的 XSS 是為了以防圖像被檢索為 text/html MIME 類型時,通過請求文件來執(zhí)行 payload。
我們通過下圖可以發(fā)現(xiàn),類 UNIX 命令的 php 函數(shù) exif_imagetype() 和 getimagesize() 都會將這個文件識別為 GIF 文件。而一般的 Web 應(yīng)用都是使用這些函數(shù)來驗證圖像類型的,所以這樣一個文件是可以被上傳的(但上傳后可能會被殺毒軟件查殺)。

點擊關(guān)注我的頭條號,0基礎(chǔ)掌握更多黑客秘籍
私信回復(fù)‘’資料‘’領(lǐng)取更多技術(shù)文章和學(xué)習(xí)資料,加入專屬的安全學(xué)習(xí)圈一起進步
安界
安界貫徹人才培養(yǎng)理念,結(jié)合專業(yè)研發(fā)團隊,打造課程內(nèi)容體系,推進實訓(xùn)平臺發(fā)展,通過一站式成長計劃、推薦就業(yè)以及陪護指導(dǎo)的師帶徒服務(wù),為學(xué)員的繼續(xù)學(xué)習(xí)和職業(yè)發(fā)展保駕護航,真正實現(xiàn)和完善網(wǎng)絡(luò)安全精英的教練場平臺;
關(guān)注私信‘資料’
如果你想實現(xiàn)進高企、就高職、拿高薪,即使低學(xué)歷也可實現(xiàn)職業(yè)發(fā)展中的第一個“彎道超車”!趕緊私信我!等你來!