新手上路 | 上傳Word文件形成存儲型XSS路徑
2018-05-31 13:25 來源:FreeBuf.COM 作者: clouds 編譯 編輯: 在滲透測試過程中,每當看到目標測試網站存在上傳功能時,總會激起我的好奇心。如果能夠走運的話,若目標網站服務器是PHP或ASP架構,而且上傳功能沒作後綴過濾,這樣就能導致可以直接上傳反彈腳本形成控制。如果這招行不通,我會嘗試上傳一個HTML頁面去觸發我自己設置的客戶端javascript腳本形成XSS攻擊。本文我就分享一個上傳docx文件形成存儲型XSS漏洞的實例。
測試上傳功能
剛好在某次Web測試工作中,我發現目標網站上傳功能中,用一個未授權用戶即可上傳自己的文件,該上傳功能中允許用戶上傳.docx文件:
當把這種.docx文件上傳之後,它還能被下載。通過比較發現,上傳成功的文件uploaded.docx和服務器上其對應的可下載文件downloaded.docx之間存在着一些不同,也就是說,文件上傳成功之後,在提供下載之前,服務器會對這個上傳文件進行一些處理操作,之後,再提供下載。
用來上傳的文件必須是一個有效的.docx文件,那基於瀏覽器的解析显示來說,它可能會把它轉換為html格式來显示,那我能不能把它後綴作個更改呢?所以我先來試試在POST請求中把.docx後綴更改為.html看看:
當這個.html文件上傳之後,向服務器請求這個文件后,服務器會把其Content-Type頭默認為text/html,這樣的話,瀏覽器會把這個文件解析為HTML執行:
插入XSS Payload
這樣,我就想到了把XSS Payload捆綁到一個像下圖這樣的.docx壓縮文件中去。由於這是.docx經直接把後綴更改為.zip的壓縮格式文件包樣例,我需要確定在上傳或Web解析過程中某些不會被轉儲更改的區域,最後,我發現了這種docx變zip壓縮格式包中的某些文件路徑會保持原樣,像下圖這樣,我把其中的Settings.xml文件名加上了一長串字母好待區分。
之後,再把這個zip格式後綴還原為docx格式,用UItraEdit查看hex代碼,再在保持原樣的區域中覆蓋掉一些字節,插入我自己設置的JavaScript XSS代碼:
上傳時,服務器能正常接收這個經過構造的.docx文件,在HTTP POST過程中,我把它的後綴更改為.html後綴進行了最終上傳:
向服務器請求這個文件時,它能被服務器解析為HTML文件,其中包含了完整的之前插入的XSS Payload代碼:
當然瀏覽器解析之後,也能成功執行其中插入的XSS Payload:
為了對這種XSS攻擊進行混淆隱蔽,攻擊者可以在其中加入一個包含URI統一資源標識符的隱藏iframe框架,能對受害者產生迷惑效果,像下圖這樣:
防護措施
這樣的效果對於開發者來說應該採取以下手段來進行限制。
文件上傳之前,在服務器端驗證上傳文件格式是否為.doc或.docx有效格式;
嚴格限制Content-Type頭,對Content-Type頭或特定後綴格式更改過的上傳文件須保持與上傳文件相同的Content-Type頭信息;
控制文件下載時的其它操作情況,添加響應標頭:"Content-Disposition: attachment",以防止在瀏覽器中內嵌显示文件;
過濾掉所有包含HTML標籤的上傳,因為docx可經壓縮篡改其中包含的HTML文件。
網站內容來源http://safe.it168.com/
【精選推薦文章】
如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!
想要讓你的商品在網路上成為最夯、最多人討論的話題?
網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線
不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務
想知道最厲害的台北網頁設計公司推薦、台中網頁設計公司推薦專業設計師"嚨底家"!!
https://www.3chy3.com/?p=2137
Orignal From: 新手上路 | 上傳Word文件形成存儲型XSS路徑
留言
張貼留言