XSS姿式——文件上傳XSS

XSS姿式——文件上傳XSS

 原文連接:http://brutelogic.com.br/blog/javascript

0x01 簡單介紹


一個文件上傳點是執行XSS應用程序的絕佳機會。不少網站都有用戶權限上傳我的資料圖片的上傳點,你有不少機會找到相關漏洞。若是碰巧是一個self XSS,你能夠看看這篇文章。java

0x02 實例分析


首先基本上咱們均可以找到相似下面的一個攻擊入口點,我以爲這個並不難。安全

姿式一:文件名方式

文件名自己可能會反映在頁面因此一個帶有XSS命名的文件即可以起到攻擊做用。dom

p1

雖然我沒有準備靶場,可是你能夠選擇在W3Schools練習這種XSS 。xss

姿式二:Metadata

使用exiftool這個工具能夠經過改變EXIF  metadata進而必定概率引發某處反射:svg

$ exiftool -field = XSS FILE

例如:函數

$ exiftool -Artist=’ 「><img src=1 onerror=alert(document.domain)>’ brute.jpeg

p2

姿式三:Content

若是應用容許上傳SVG格式的文件(其實就是一個圖像類型的),那麼帶有如下content的文件能夠被用來觸發XSS:工具

<svg xmlns="http://www.w3.org/2000/svg" onload="alert(document.domain)"/>

一個 PoC用來驗證。你能夠經過訪問brutelogic.com.br/poc.svg看到效果網站

姿式四:Source

創建一個攜帶有JavaScript payload的GIF圖像用做一個腳本的源。這對繞過CSP(內容安全策略)保護「script-src ‘self’」(即不容許使用示例的這種xss方式進行攻擊<script>alert(1)</script>)是頗有用的,但前提是咱們可以成功地在相同的域注入,以下所示。this

p3

要建立這樣的圖像須要這個做爲content 和 name,並使用.gif擴展名:

GIF89a/*<svg/onload=alert(1)>*/=alert(document.domain)//;

這個GIF的圖片頭——GIF89a,做爲alert function的變量分配給alert function。可是他們之間,還有一個被標註的XSS變量用來防止圖片被恢復爲text/HTML MIME文件類型,所以只需發送一個對這個文件的請求payload 就能夠被執行。

正如咱們下面看到的,文件類unix命令和PHP函數中的exif_imagetype()和getimagesize()會將其識別爲一個GIF文件。因此若是一個應用程序僅僅是使用這些方式驗證是不是一個圖像,那麼該文件將能夠上傳成功(但可能在上傳後被殺掉)。

p4

0x03 最後


若是你想知道更多的有其標誌性ASCII字符能夠用於一個javascript變量賦值的文件類型,看我隨後的文章。

也有不少比較詳細的使用XSS和圖像文件相結合繞過圖形處理函數庫過濾的例子。這方面的一個很好的例子是here

相關文章
相關標籤/搜索