注:轉(zhuǎn)載請注明出自:https://blog.csdn.net/qq_36711453/article/details/83745195
XSS跨站腳本攻擊:兩種情況。一種通過外部輸入然后直接在瀏覽器端觸發(fā),即反射型XSS;還有一種則是先把利用代碼保存在數(shù)據(jù)庫或文件中,當(dāng)web程序讀取利用代碼并輸出在頁面上時觸發(fā)漏洞,即存儲型XSS。DOM型XSS是一種特殊的反射型XSS。
危害:前端頁面能做的事它都能做。(不僅僅盜取cookie、修改頁面等)
XSS挖掘的關(guān)鍵在于尋找有沒有被過濾的參數(shù),且這些參數(shù)傳入到輸出函數(shù)。
常用輸出函數(shù):print、print_r、echo、printf、sprintf、die、var_dump、var_export,所以只要尋找?guī)в凶兞康倪@些函數(shù)即可。
XSS漏洞挖掘受瀏覽器影響比較大,最重要的還要掌握各種瀏覽器容錯、編碼等特性和數(shù)據(jù)協(xié)議。
常出現(xiàn)場景:文章發(fā)表、評論、留言、注冊資料的地方、修改資料的地方等;
黑盒測試時:只需要將尖括號、單雙引號等提交到web服務(wù)器,檢查返回的html頁面里面有沒有保留原來的特殊字符即可判斷;
白盒測試時:只需尋找?guī)в袇?shù)的輸出函數(shù),然后根據(jù)輸出函數(shù)對輸出的內(nèi)容回溯輸入?yún)?shù),觀察有沒有過濾;
例如:
代碼中:oauth_signature 參數(shù)未經(jīng)任何過濾,直接輸出,則可以直接用GET方式注入代碼。
就是需要先把利用代碼保存在例如數(shù)據(jù)庫或文件中,當(dāng)web 應(yīng)用程序讀取利用代碼并輸出在頁面上時執(zhí)行利用代碼,原理圖流程如下:
存儲型XSS比反射型要容易利用的多,不用考慮繞過瀏覽器的過濾,在隱蔽性上也要好得多。特別在社交網(wǎng)絡(luò)中的存儲型XSS蠕蟲能造成大面積的傳播,影響非常大。
挖掘存儲型XSS:尋找未過濾的輸入點(diǎn)和未過濾的輸出函數(shù),這個最終的輸出點(diǎn)可能和輸入點(diǎn)完全不在一個業(yè)務(wù)流上,對于這類可以根據(jù)當(dāng)前代碼功能去猜測,或追蹤哪里有操作過這個數(shù)據(jù),使用表名、字段名去代碼里面搜索。
(1) 特殊字符HTML實(shí)體轉(zhuǎn)碼。最好的過濾方式是在輸出和二次調(diào)用的時候進(jìn)行加HTML實(shí)體一類的轉(zhuǎn)碼,防止腳本注入。
(2) 標(biāo)簽事件屬性黑名單。特殊字符容易被繞過,所以還得加標(biāo)簽事件得黑名單或者白名單,這里推薦使用白名單的方式,實(shí)現(xiàn)規(guī)則可以直接使用正則表達(dá)式來匹配,如果匹配到的事件不在白名單列表,就可以直接攔截,而不是過濾為空。
聯(lián)系客服