淺談 Web 滲透中的 XSS

閱讀本文大概需要 2.4 分鐘

XSS,即跨站腳本攻擊漏洞。

Web 安全中,攻擊者常利用此漏洞,在網(wǎng)頁中注入 JS 攻擊代碼。

一旦受害者訪問該網(wǎng)頁,則 JS 代碼執(zhí)行,攻擊者則能以此進行一系列攻擊操作。

比如竊取用戶 Cookie 信息,甚至可能取得受害者機器的完整控制權(quán)。

今天談一下 3 種 XSS 類型。

以 DVWA 為例。首先將 DVWA 難度設(shè)置為 Low。

0x01 DOM 型 XSS

DOM 型 XSS 是由于瀏覽器 DOM 解析的漏洞所導致的。

值得一提的是,對于 DOM XSS,在網(wǎng)頁源代碼中是看不到 XSS Payload 的。只有在網(wǎng)頁動態(tài)運行過程中,才會注入,通過 F 12 才可以看到。

打開 DVWA 中的 XSS (DOM)。

點擊 Select,可以看到所選的內(nèi)容出現(xiàn)在了地址欄。

image

打開 HackerBar,Load URL,將地址上的 English 替換為如下 Payload。

<script>alert(1)</script>
image

成功觸發(fā) XSS,且查看源代碼,看不到這段 XSS Payload。因為這段代碼是在網(wǎng)頁動態(tài)運行過程中插入進去的。

其實就是源代碼里的這一段代碼干的。

<script> 
    if (document.location.href.indexOf("default=") >= 0) {
        var lang = document.location.href.substring(document.location.href.indexOf("default=")+8);
        document.write("<option value='" + lang + "'>" + decodeURI(lang) + "</option>");
        document.write("<option value='' disabled='disabled'>----</option>");
     }

     document.write("<option value='English'>English</option>");
     document.write("<option value='French'>French</option>");
     document.write("<option value='Spanish'>Spanish</option>");
     document.write("<option value='German'>German</option>"); 
</script>

直接將地址欄參數(shù)插入到了 DOM 中,從而造成了 XSS。

0x02 反射型 XSS

和 DOM 型 XSS 有些類似,不同的是,可以直接在網(wǎng)頁源代碼中看到 XSS Payload。

打開 DVWA 中的 XSS (Reflected)。

在輸入框輸入剛剛使用的 Payload,一樣觸發(fā) XSS。

并且查看源代碼,可以在源代碼中看到 Payload。

image

服務(wù)端代碼如下。

<?php
header ("X-XSS-Protection: 0");

// Is there any input?
if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
    // Feedback for end user
    echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';
}
?>

可以看出是由于服務(wù)端直接將客戶端提交的內(nèi)容回顯,導致的 XSS。

0x03 存儲型 XSS

存儲型 XSS 是 XSS 中危害最大的。因為它的 XSS Payload 將會存儲在服務(wù)端,導致每個訪問網(wǎng)頁的用戶都將被攻擊。

打開 XSS (Stored)。

在 Name 和 Message,輸入 Payload,沒錯還是剛剛那個。

出現(xiàn)一點小問題,Name 限制了長度。直接 F 12 修改 maxlength 即可。

image

提交,成功觸發(fā) XSS。查看源代碼,可以看到剛剛提交的 Payload。

image

并且每次刷新頁面或者重新進入,都會觸發(fā)。

因為 Payload 被存儲在了服務(wù)端。

每次訪問,服務(wù)端又會將其查詢出來,返回給客戶端。

由此可見存儲型 XSS 的危害性,每個用戶每次訪問,都將受到攻擊。

0x04 總結(jié)

上面只是一些最簡單的 XSS 例子,實際滲透過程中,往往會有各種過濾,各種防火墻,導致 XSS 攻擊失敗。

這個時候就需要知道各種繞過姿勢,這需要我們不斷地去深入學習。

加油!

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

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

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