Heim >Betrieb und Instandhaltung >Sicherheit >So analysieren Sie reflektiertes XSS

So analysieren Sie reflektiertes XSS

PHPz
PHPznach vorne
2023-05-13 20:13:042136Durchsuche

1. Reflected XSS

Reflected XSS bedeutet, dass die Anwendung über Webanfragen nicht vertrauenswürdige Daten erhält und diese an Webbenutzer übermittelt, ohne zu prüfen, ob die Daten schädlichen Code enthalten. Reflektiertes XSS wird im Allgemeinen von Angreifern mit URLs erstellt, die Schadcode-Parameter enthalten. Beim Öffnen der URL-Adresse werden die eindeutigen Schadcode-Parameter von HTML analysiert und ausgeführt. Es zeichnet sich durch Nichtpersistenz aus und erfordert, dass der Benutzer auf einen Link klickt bestimmte Parameter verursachen können. Der Herausgeber verwendet den Quellcode der JAVA-Sprache als Beispiel, um CWE ID 80: Unsachgemäße Neutralisierung skriptbezogener HTML-Tags in einer Webseite (Basic XSS)

2 zu analysieren Der Server empfängt die Daten, verarbeitet sie und sendet sie dann mit dem XSS-Code an den Browser. Nachdem der Browser die Daten mit dem XSS-Code analysiert hat, entsteht eine XSS-Sicherheitslücke, die zum Diebstahl des Ziels führen kann Die Daten der Website werden an den Server des Angreifers übertragen, um die nicht offengelegten Informationen des Benutzers auszulesen oder einen Click-Hijack durchzuführen, um Phishing-Angriffe usw. durchzuführen. Von Januar bis November 2018 gab es in CVE insgesamt 126 diesbezügliche Schwachstelleninformationen. Einige der Schwachstellen sind wie folgt:

CVESchwachstellenübersichtCVE-2018-19091tianti ist ein kostenloses, leichtgewichtiges CMS-System, das in Java geschrieben ist und derzeit Folgendes bietet Insgesamt Lösung vom Back-End-Management bis zur Front-End-Anzeige. Unter anderem weist Tianti 2.3 eine reflektierte XSS-Schwachstelle im Benutzerverwaltungsmodul über den Parameter tianti-module-admin / user /list userName auf. CVE-2018-14929Matera Banco 1.0.0 ist anfällig für mehrfach reflektiertes XSS, wie der URL-Parameter /contingency/web/index.jsp (auch Homepage genannt) zeigt. CVE-2018-12996 ZohoManageEngine Applications Manager bietet Lösungen für die Überwachung und Verwaltung von J2EE-Basisstrukturen und J2EE-Anwendungen. Eine reflektierte Cross-Site-Scripting-Schwachstelle (XSS) in Zoho ManageEngine Applications Manager 13 (Build13800) ermöglicht es entfernten Angreifern, beliebiges Webskript oder HTML über den Parameter „method“ in GraphicalView.do einzuschleusen. CVE-2018-12090LAMS ist eine neue Generation JAVA-basierter Lernsoftware, die gemeinsam von der Macquarie University in Australien, LAMS International Ltd. und der LAMS Foundation entwickelt wurde. Nicht authentifiziertes reflektiertes Cross-Site-Scripting (XSS) gibt es in LAMS vor 3.1, wodurch Remote-Angreifer in „forgetPasswordChange.jsp“ zugelassen werden. Einführung von beliebigem JavaScript durch Manipulation nicht spezifizierter GET-Parameter während der Änderung von Schlüssel = Passwort.

3. Beispielcode

Das Beispiel stammt aus der Samate Juliet Test Suite für Java v1.3 (https://samate.nist.gov/SARD/testsuite.php), Quelldateiname: CWE80_XSS__CWE182_Servlet_URLConnection_03.java. 3.1 defekter Code -in-text Prettyprinted">urlConnection-Objektantwortinhalt, lesen Sie eine Datenzeile aus dem Pufferstrom in Zeile 52 und entfernen Sie den gesamten <script></script>-Tag hinzufügen und die verarbeiteten Daten auf der Seite ausgeben, auch wenn das <script></script>-Tag gefiltert wird , aber es können immer noch andere html-Tags verwendet werden, bei denen eine böswillige URL verwendet wird erstellt wird. Wenn die Website jedoch nicht geschützt ist, liest die Seite den Inhalt von document.cookie und gibt ihn in die Seite ein. Dadurch wird reflektiertes XSS erstellt.

Verwenden Sie 360 ​​​​Code Guard, um den obigen Beispielcode zu erkennen. Sie können den Fehler „reflektiertes XSS“ erkennen und die Anzeigeebene ist hoch. Die Quelle der Datenverschmutzung und die Datenflussrichtung können anhand des Tracking-Pfads analysiert werden, und der Fehler wird in Zeile 100 des Codes gemeldet, wie in Abbildung 1 dargestellt: So analysieren Sie reflektiertes XSSAbbildung 1: Beispiel für die Erkennung von reflektiertem XSS

So analysieren Sie reflektiertes XSS3.2 ReparaturcodeSo analysieren Sie reflektiertes XSS

So analysieren Sie reflektiertes XSSurlConnection对象响应的内容,在第52行从缓冲流中读取一行数据,在第100行中,将获得的数据去除所有的<script></script>标签并向页面输出处理后的数据,即使过滤了<script></script>标签,但仍然可以使用其他html标签,在这里构造了恶意的url,但网站未做防护时,页面会读取到document.cookie的内容并输入到页面。这样就造成了反射型 XSS。

使用360代码卫士对上述示例代码进行检测,可以检出“反射型XSS”缺陷,显示等级为高。从跟踪路径中可以分析出数据的污染源以及数据流向,在代码行第100行报出缺陷,如图1所示:

So analysieren Sie reflektiertes XSS图1:反射型 XSS 检测示例

3.2 修复代码

So analysieren Sie reflektiertes XSS

在上述修复代码中,由于页面输出的内容为用户的年龄,在第96行,对响应的内容转换为数字,这样就过滤了其它 html 的字符,即使存在字符,代码会报出异常,并不会造成反射型 XSS 的发生。

使用360代码卫士对修复后的代码进行检测,可以看到已不存在“反射型XSS”缺陷。如图2:


So analysieren Sie reflektiertes XSS

图2:修复后检测结果

4 、如何避免反射型 XSS

要避免反射型 XSS,需要注意以下几点:

(1) 对用户的输入进行合理验证(如年龄只能是数字),对特殊字符(如 、'、"等)以及<script></script>javascript 等进行过滤。

(2) 根据数据将要置于 HTML 上下文中的不同位置(HTML 标签、HTML 属性、JavaScript 脚本、CSS、URL),对所有不可信数据进行恰当的输出编码。

(3) 设置HttpOnly属性,避免攻击者利用XSS漏洞进行Cookie劫持攻击。在 JavaEE 中,给Cookie添加HttpOnly

Im obigen Reparaturcode ist der von der Seite ausgegebene Inhalt der Konvertieren Sie den Antwortinhalt in Zeile 96 des Benutzers in Zahlen und filtern Sie so andere HTML-Zeichen heraus. Selbst wenn Zeichen vorhanden sind, meldet der Code eine Ausnahme und verursacht kein reflektiertes XSS.

So analysieren Sie reflektiertes XSSVerwenden Sie 360 ​​​​Code Guard, um den reparierten Code zu erkennen, und Sie können sehen, dass kein „reflektierter XSS“-Fehler vorliegt. Wie in Abbildung 2 dargestellt:

🎜
So analysieren Sie reflektiertes XSS 🎜🎜Abbildung 2: Erkennungsergebnisse nach der Reparatur🎜🎜🎜4. So vermeiden Sie reflektierendes XSS🎜🎜🎜Um reflektierendes XSS zu vermeiden, können Sonderzeichen verwendet werden (wie , ', " usw.). .) und <script></script>, Javascript usw. zum Filtern. 🎜🎜(2) Entsprechend den verschiedenen Orten, an denen die Daten im HTML-Kontext platziert werden (HTML-Tags, HTML-Attribute, JavaScript-Skripte, CSS, URL), werden alle nicht vertrauenswürdigen Daten ordnungsgemäß codiert ausgegeben 🎜🎜(3) Festlegen Das Attribut HttpOnly soll verhindern, dass Angreifer die Sicherheitslücke XSS nutzen code class="prettyprint code-in-text Prettyprinted">Cookie-Hijacking-Angriffe Geben Sie in JavaEE Cookieden Code zum Hinzufügen von HttpOnly lautet wie folgt: 🎜🎜🎜🎜

Das obige ist der detaillierte Inhalt vonSo analysieren Sie reflektiertes XSS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen