溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么分析反射型XSS

發(fā)布時(shí)間:2022-01-18 15:00:47 來源:億速云 閱讀:173 作者:柒染 欄目:網(wǎng)絡(luò)管理

今天就跟大家聊聊有關(guān)怎么分析反射型XSS,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

1、反射型 XSS

反射型 XSS 是指應(yīng)用程序通過 Web 請求獲取不可信賴的數(shù)據(jù),在未檢驗(yàn)數(shù)據(jù)是否存在惡意代碼的情況下,便將其傳送給了 Web 用戶。反射型 XSS 一般由攻擊者構(gòu)造帶有惡意代碼參數(shù)的 URL,當(dāng) URL 地址被打開時(shí),特有的惡意代碼參數(shù)被 HTML 解析、執(zhí)行,它的特點(diǎn)是非持久化,必須用戶點(diǎn)擊帶有特定參數(shù)的鏈接才能引起。小編以 JAVA 語言源代碼為例,分析 CWE ID 80: Improper Neutralization of Script-Related HTML Tags in a Web Page (Basic XSS) 

2、 反射型 XSS 的危害

當(dāng)用戶訪問一個(gè)帶有 XSS 代碼的 URL 請求時(shí),服務(wù)器端接收數(shù)據(jù)后處理,然后把帶有 XSS 代碼的數(shù)據(jù)發(fā)送到瀏覽器,瀏覽器解析這段帶有XSS代碼的數(shù)據(jù)后,造成 XSS 漏洞,可能導(dǎo)致竊取目標(biāo)網(wǎng)站的 Cookie 到攻擊者的服務(wù)器上,讀取用戶未公開的資料或Click劫持實(shí)施釣魚攻擊等。從2018年1月至11月,CVE 中共有126條漏洞信息與其相關(guān)。部分漏洞如下:

CVE漏洞概述
CVE-2018-19091tianti 是一款使用 Java 編寫的免費(fèi)的輕量級 CMS 系統(tǒng),目前提供了從后臺管理到前端展現(xiàn)的整體解決方案。其中 tianti 2.3 通過 tianti-module-admin / user /list userName 參數(shù)在用戶管理模塊中存在反射型 XSS 漏洞。
CVE-2018-14929Matera Banco 1.0.0 容易受到多個(gè)反射型 XSS 的影響,正如 /contingency/web/index.jsp(又名主頁)url 參數(shù)所示。
CVE-2018-12996 ZohoManageEngine Applications Manager 提供了監(jiān)視和管理 J2EE 底層結(jié)構(gòu)、J2EE應(yīng)用的解決方案。在 Zoho ManageEngine Applications Manager 13(Build13800)中反射型跨站腳本(XSS)漏洞允許遠(yuǎn)程攻擊者通過參數(shù) 'method' 向GraphicalView.do 注入任意 Web 腳本或 HTML。
CVE-2018-12090LAMS 是由澳大利亞 Macquarie 大學(xué),LAMS 國際有限公司和 LAMS 基金會聯(lián)合開發(fā)出來的一個(gè)基于 JAVA 的新一代學(xué)習(xí)軟件。在 3.1 之前的 LAMS 中存在未經(jīng)身份驗(yàn)證的反射型跨站腳本(XSS),允許遠(yuǎn)程攻擊者在 forgetPasswordChange.jsp?key = 密碼更改期間通過操作未經(jīng)過規(guī)范的 GET 參數(shù)來引入任意 JavaScript。

3、示例代碼

示例源于Samate Juliet Test Suite for Java v1.3  (https://samate.nist.gov/SARD/testsuite.php),源文件名:CWE80_XSS__CWE182_Servlet_URLConnection_03.java。

3.1缺陷代碼

怎么分析反射型XSS怎么分析反射型XSS

上述示例代碼操作是獲取用戶的年齡,在第40行創(chuàng)建連接對象,在第44行創(chuàng)建輸入流獲得urlConnection對象響應(yīng)的內(nèi)容,在第52行從緩沖流中讀取一行數(shù)據(jù),在第100行中,將獲得的數(shù)據(jù)去除所有的<script>標(biāo)簽并向頁面輸出處理后的數(shù)據(jù),即使過濾了<script>標(biāo)簽,但仍然可以使用其他html標(biāo)簽,在這里構(gòu)造了惡意的url,但網(wǎng)站未做防護(hù)時(shí),頁面會讀取到document.cookie的內(nèi)容并輸入到頁面。這樣就造成了反射型 XSS。

使用360代碼衛(wèi)士對上述示例代碼進(jìn)行檢測,可以檢出“反射型XSS”缺陷,顯示等級為高。從跟蹤路徑中可以分析出數(shù)據(jù)的污染源以及數(shù)據(jù)流向,在代碼行第100行報(bào)出缺陷,如圖1所示:

怎么分析反射型XSS圖1:反射型 XSS 檢測示例

3.2 修復(fù)代碼

怎么分析反射型XSS

在上述修復(fù)代碼中,由于頁面輸出的內(nèi)容為用戶的年齡,在第96行,對響應(yīng)的內(nèi)容轉(zhuǎn)換為數(shù)字,這樣就過濾了其它 html 的字符,即使存在字符,代碼會報(bào)出異常,并不會造成反射型 XSS 的發(fā)生。

使用360代碼衛(wèi)士對修復(fù)后的代碼進(jìn)行檢測,可以看到已不存在“反射型XSS”缺陷。如圖2:


怎么分析反射型XSS

圖2:修復(fù)后檢測結(jié)果

4 、如何避免反射型 XSS

要避免反射型 XSS,需要注意以下幾點(diǎn):

(1) 對用戶的輸入進(jìn)行合理驗(yàn)證(如年齡只能是數(shù)字),對特殊字符(如 <、>、'、"等)以及<script>、javascript 等進(jìn)行過濾。

(2) 根據(jù)數(shù)據(jù)將要置于 HTML 上下文中的不同位置(HTML 標(biāo)簽、HTML 屬性、JavaScript 腳本、CSS、URL),對所有不可信數(shù)據(jù)進(jìn)行恰當(dāng)?shù)妮敵鼍幋a。

(3) 設(shè)置HttpOnly屬性,避免攻擊者利用XSS漏洞進(jìn)行Cookie劫持攻擊。在 JavaEE 中,給Cookie添加HttpOnly的代碼如下:

怎么分析反射型XSS

看完上述內(nèi)容,你們對怎么分析反射型XSS有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

xss
AI