跨站點(diǎn)腳本攻擊測試要點(diǎn)

1.確定站點(diǎn)及其功能--與開發(fā)人員和PM交流

繪制一些簡單的數(shù)據(jù)流圖表,對站點(diǎn)上的頁面及其功能進(jìn)行描述。此時,可以安排一些與開發(fā)人員和項(xiàng)目經(jīng)理的會議來建立威脅模型。在會議上盡可能對應(yīng)用程序進(jìn)行深入探討。站點(diǎn)公開了Web服務(wù)嗎?是否有身份驗(yàn)證表單?有留言板嗎?有用戶設(shè)置頁面嗎?確保列出了所有這些頁面

2.找出并列出所有由用戶提供輸入的點(diǎn)

對站點(diǎn)地圖進(jìn)行進(jìn)一步細(xì)化。我通常會為此創(chuàng)建一個電子表格。對于每個頁面,列出所有查詢字符串參數(shù)、cookie值、自定義HTTP標(biāo)頭、POST數(shù)據(jù)值和以其他形式傳遞的用戶輸入。不要忘記搜索Web服務(wù)和類似的SOAP請求,并找出所有允許用戶輸入的字段。

分別列出每個輸入?yún)?shù),因?yàn)橄旅嫘枰?dú)立測試每個參數(shù)。這可能是最重要的一個步驟!如果閱讀下面的電子表格,您會看到我已經(jīng)在示例站點(diǎn)中找出了一大堆這樣的東西。如forwardURL和lang這樣的查詢字符串。如name、password、msgBody、msgTitle和這樣的POST數(shù)據(jù),甚至某些Cookie值。所有這些都是我們感興趣的重要測試內(nèi)容

3.認(rèn)真思考并列出測試用例

4.開始測試并注意輸出結(jié)果

在查找漏洞的過程中,最重要的部分并不是您是否找到了漏洞。而是您是否真正知道究竟發(fā)生了哪些事情。對于XSS,只需檢查HTML輸出并看看您輸入的內(nèi)容在什么地方。它在一個HREF標(biāo)記中嗎?是否在IFRAME標(biāo)記中?它在CLSID標(biāo)記中嗎?在IMG SRC中嗎?某些Flash內(nèi)容的PARAM NAME是怎樣的?

我會檢查所有這些情況,如果您對所輸入內(nèi)容的目的十分了解,可以調(diào)整您的測試來找出問題。這意味著您可能需要添加一個額外的封閉括號“>”來讓某個標(biāo)記變得完整,或者添加一個雙引號來關(guān)閉標(biāo)記內(nèi)的一個元素。或者,您可能需要使用URL或HTML來編碼您的字符,例如將雙引號變?yōu)?22或"。

5.這個站點(diǎn)看來防范比較嚴(yán)密。現(xiàn)在該怎么辦呢?

那么,也許您的簡單測試用例alert(‘hi’)并不能產(chǎn)生期望中的警告對話框。仔細(xì)想想這個問題并在可能的情況下與開發(fā)人員進(jìn)行交流。也許他們對輸入中的尖括號、單引號或圓括號進(jìn)行了過濾。也許他們會過濾“scrīpt”這個詞。重新研究為何輸入會產(chǎn)生這樣的輸出,并理解每個值(查詢字符串、cookie、POST數(shù)據(jù))的作用。“pageId=10”這樣的查詢字符串值可能對輸出沒有影響,因此不值得花費(fèi)時間測試它。有時,最好試著注入單個字符(例如尖括號、雙引號標(biāo)記或者圓括號),看看應(yīng)用程序是否過濾這些字符。然后,便可以知道您面對的過濾級別究竟如何。接著,可以調(diào)整測試方法,對這些字符進(jìn)行編碼并重試,或者尋找其他注入辦法。

改變測試用例

我恐怕無法充分對此進(jìn)行說明:研究輸入的值會輸出什么樣的HTML頁面非常重要。如果它們不能產(chǎn)生輸出,那么不要在它們上面浪費(fèi)時間。如果可以,請進(jìn)行研究,因?yàn)槟枰鶕?jù)輸出對測試進(jìn)行相應(yīng)的修改。我使用了各種變化形式來找出能接受和顯示腳本代碼的參數(shù)。因?yàn)檫@涉及太多內(nèi)容,因此在這里無法一一進(jìn)行討論,但是請務(wù)必注意以下幾種情況:

有許多變化形式可以嘗試。關(guān)鍵在于了解程序究竟使用何種方式處理輸入和顯示輸出頁面。如同這些例子所展示的,常見的變化形式經(jīng)常是在腳本代碼前面加上“>””,以嘗試封閉網(wǎng)站可能在輸出中生成的標(biāo)記。還可以對代碼進(jìn)行URL編碼,嘗試?yán)@過服務(wù)器端的輸入過濾功能。此外,因?yàn)榧饫ㄌ枴?lt;>”通常會在輸入時被過濾和從輸出中刪除,所以還必須嘗試不需要尖括號的XSS,例如”&{alert('XSS')};”

持久和動態(tài)

找出一個成功的XSS頗費(fèi)周折,因?yàn)樵陂_始時XSS攻擊可能并不是那么顯而易見的。隨便舉一個例子,如果向網(wǎng)站添加一條新留言并在“msgTitle”值中注入代碼,在提交數(shù)據(jù)后,您可能不會立即看到腳本代碼

被執(zhí)行。但是,當(dāng)您訪問留言板的時侯,將會在HTML頁面中使用“msgTitle”值并將其作為腳本代碼執(zhí)行。這種情況被稱作持久性XSS攻擊,如果包含腳本代碼的值將被保存到客戶端或者后端系統(tǒng)并在稍候的時間被執(zhí)行,便會發(fā)生此種攻擊。

而與此相對的是動態(tài)XSS攻擊,這種攻擊會立即執(zhí)行并只發(fā)生一次。比如,如果某個鏈接或GET請求在某個用來控制頁面輸出的查詢字符串中包含了腳本代碼,那么在點(diǎn)擊鏈接后會立即顯示輸出。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,654評論 19 139
  • 跨站腳本(XSS)是web應(yīng)用中的一種典型的計(jì)算機(jī)安全漏洞。XSS允許攻擊者可以在其他用戶瀏覽的web頁面中注入客...
    留七七閱讀 8,314評論 1 26
  • 之前積累了XSS 有一段時間,因?yàn)槟壳伴_始了一件有趣的工程,需要整合非常多的知識,其中Web 安全這一塊出現(xiàn)最多的...
    刀背藏身閱讀 9,564評論 0 16
  • 1、漏洞概述 XSS 是指攻擊者在網(wǎng)頁中嵌入客戶端腳本,通常是 JavaScript 編寫的惡意代碼,當(dāng)用戶使 用...
    linkally閱讀 1,785評論 2 10
  • HTTP.sys遠(yuǎn)程代碼執(zhí)行 測試類型:基礎(chǔ)結(jié)構(gòu)測試 威脅分類:操作系統(tǒng)命令 原因:未安裝第三方產(chǎn)品的最新補(bǔ)丁或最...
    天天向上的小M閱讀 4,157評論 0 0

友情鏈接更多精彩內(nèi)容