知識梳理
-
XSS簡介
XSS:跨站腳本攻擊(Cross Site Scripting),是一種注入型攻擊,攻擊者使用Web應(yīng)用程序?qū)阂饽_本發(fā)送到不同的用戶終端,若應(yīng)用程序沒有對輸入的腳本進(jìn)行驗(yàn)證、過濾or編碼等處理,且終端用戶的瀏覽器無法識別腳本是否受信任時(shí),受害者在不知情的情況下訪問對應(yīng)的頁面,惡意代碼會在其瀏覽器上執(zhí)行,惡意腳本可以訪問其保留在瀏覽器中的站點(diǎn)cookie、會話標(biāo)記or其他敏感信息;這些腳本甚至可以重寫HTML頁的內(nèi)容,從而產(chǎn)生XSS攻擊。
XSS分為三種類型:反射型(Reflected)、存儲型(Stored)、DOM型
-
XSS測試策略
檢查Web頁面中可輸入的位置。除了前端頁面,還有前端代碼中,所對應(yīng)的隱藏or明顯的輸入位置。如:HTTP參數(shù)、POST data、隱藏的表單域(文本框、密碼框、隱藏域、單選or復(fù)選框、下拉選擇框)。通過前端源代碼可查看到以上位置的存在。
分析每個(gè)輸入位置,使用特別構(gòu)造的數(shù)據(jù),檢測潛在的漏洞。通過預(yù)先構(gòu)造的攻擊字符串or敏感符號對Web程序進(jìn)行模糊測試,根據(jù)返回的響應(yīng)初步判斷前后端對敏感字符的處理機(jī)制如何。
識別對Web程序有安全影響的XSS漏洞。根據(jù)響應(yīng)數(shù)據(jù)和HTML代碼,判斷哪些位置沒有對攻擊字符or字符串進(jìn)行過濾、轉(zhuǎn)義、正確編碼處理的防范,對這些弱防御的位置進(jìn)一步攻擊測試,檢測確定安全漏洞。
-
反射型XSS概述
Reflected XSS:攻擊負(fù)載是通過單個(gè)請求和響應(yīng)進(jìn)行交互和執(zhí)行的,當(dāng)用戶在前端輸入帶有XSS性質(zhì)的腳本作為HTTP請求的一部分發(fā)送給服務(wù)端,后端對收到的請求數(shù)據(jù)進(jìn)行解析處理(字符串檢測、轉(zhuǎn)義...)之后返回給前端,前端瀏覽器將對該返回?cái)?shù)據(jù)進(jìn)行解析,若其中包含的惡意腳本可被瀏覽器解析并執(zhí)行時(shí),就會觸發(fā)反射型XSS。
反射XSS攻擊也稱為非持久XSS攻擊,反射型XSS腳本注入的攻擊并不存儲在應(yīng)用程序中,而是存儲在瀏覽器客戶端,即非持久。只要不通過點(diǎn)擊該特定url鏈接進(jìn)行訪問,就不會引起攻擊。 -
存儲型XSS概述
攻擊者事先將惡意代碼上傳或儲存到漏洞服務(wù)器中,只要受害者瀏覽包含此惡意代碼的頁面就會執(zhí)行惡意代碼。這就意味著只要訪問了這個(gè)頁面的訪客,都有可能會執(zhí)行這段惡意腳本,因此儲存型XSS的危害會更大。因?yàn)榇鎯π蚗SS的代碼存在于網(wǎng)頁的代碼中,可以說是永久型的。
存儲型 XSS 一般出現(xiàn)在網(wǎng)站留言、評論、博客日志等交互處,惡意腳本存儲到客戶端或者服務(wù)端的數(shù)據(jù)庫中。
原理:用戶輸入的數(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:8082/
發(fā)現(xiàn)網(wǎng)站是FineCMS搭建的,搜索CMS是否存在漏洞

進(jìn)行漏洞復(fù)現(xiàn)
/index.php?c=mail&m=aa<script>alert(1)</script>

利用XSS平臺惡意攻擊代碼進(jìn)行攻擊

得到flag:zKaQ-01sdfDCo0