知識(shí)梳理
-
XSS簡介
XSS:跨站腳本攻擊(Cross Site Scripting),是一種注入型攻擊,攻擊者使用Web應(yīng)用程序?qū)阂饽_本發(fā)送到不同的用戶終端,若應(yīng)用程序沒有對(duì)輸入的腳本進(jìn)行驗(yàn)證、過濾or編碼等處理,且終端用戶的瀏覽器無法識(shí)別腳本是否受信任時(shí),受害者在不知情的情況下訪問對(duì)應(yīng)的頁面,惡意代碼會(huì)在其瀏覽器上執(zhí)行,惡意腳本可以訪問其保留在瀏覽器中的站點(diǎn)cookie、會(huì)話標(biāo)記or其他敏感信息;這些腳本甚至可以重寫HTML頁的內(nèi)容,從而產(chǎn)生XSS攻擊。
XSS分為三種類型:反射型(Reflected)、存儲(chǔ)型(Stored)、DOM型
-
XSS測試策略
檢查Web頁面中可輸入的位置。除了前端頁面,還有前端代碼中,所對(duì)應(yīng)的隱藏or明顯的輸入位置。如:HTTP參數(shù)、POST data、隱藏的表單域(文本框、密碼框、隱藏域、單選or復(fù)選框、下拉選擇框)。通過前端源代碼可查看到以上位置的存在。
分析每個(gè)輸入位置,使用特別構(gòu)造的數(shù)據(jù),檢測潛在的漏洞。通過預(yù)先構(gòu)造的攻擊字符串or敏感符號(hào)對(duì)Web程序進(jìn)行模糊測試,根據(jù)返回的響應(yīng)初步判斷前后端對(duì)敏感字符的處理機(jī)制如何。
識(shí)別對(duì)Web程序有安全影響的XSS漏洞。根據(jù)響應(yīng)數(shù)據(jù)和HTML代碼,判斷哪些位置沒有對(duì)攻擊字符or字符串進(jìn)行過濾、轉(zhuǎn)義、正確編碼處理的防范,對(duì)這些弱防御的位置進(jìn)一步攻擊測試,檢測確定安全漏洞。
-
反射型XSS概述
Reflected XSS:攻擊負(fù)載是通過單個(gè)請(qǐng)求和響應(yīng)進(jìn)行交互和執(zhí)行的,當(dāng)用戶在前端輸入帶有XSS性質(zhì)的腳本作為HTTP請(qǐng)求的一部分發(fā)送給服務(wù)端,后端對(duì)收到的請(qǐng)求數(shù)據(jù)進(jìn)行解析處理(字符串檢測、轉(zhuǎn)義...)之后返回給前端,前端瀏覽器將對(duì)該返回?cái)?shù)據(jù)進(jìn)行解析,若其中包含的惡意腳本可被瀏覽器解析并執(zhí)行時(shí),就會(huì)觸發(fā)反射型XSS。
反射XSS攻擊也稱為非持久XSS攻擊,反射型XSS腳本注入的攻擊并不存儲(chǔ)在應(yīng)用程序中,而是存儲(chǔ)在瀏覽器客戶端,即非持久。只要不通過點(diǎn)擊該特定url鏈接進(jìn)行訪問,就不會(huì)引起攻擊。
原理:用戶輸入的數(shù)據(jù)被當(dāng)作前端代碼執(zhí)行
測試方式
JS觸發(fā):<script>alert(1)</script>
偽協(xié)議觸發(fā):javascript:alert(1)
事件觸發(fā):<img src="" onerror=alert(1) />
onerror 失敗后觸發(fā) onload 成功后觸發(fā)
靶場演示
靶場地址
地址http://59.63.200.79:8002/xss/index.php
看到框先直接動(dòng)手嘗試一下
<script>alert(1)</script>

將我們輸入的代碼轉(zhuǎn)換成了字符

查看網(wǎng)頁源代碼發(fā)現(xiàn)通過單引號(hào)閉合,嘗試閉合,閉合完成還是不行,查看源代碼發(fā)現(xiàn) 尖括號(hào)
<>被轉(zhuǎn)義了
<script>alert(1)</script>

尖括號(hào)轉(zhuǎn)義了就不能使用JS方式觸發(fā),嘗試使用事件觸發(fā)
'onfocus=alert(1) autofocus"
onfocus 獲取焦點(diǎn)事件
autofocus 獲取焦點(diǎn)

得到flag{zkaq-xssgood-Q0OA}