
cve-2022-34169 abgeleitetes automatisches Generierungstool für Jdk Xalan Payloads, das basierend auf verschiedenen Jdk-Versionen die entsprechenden xslt-Dateien generiert
Dies ist ein Tool zur automatischen Generierung von Payloads für die JDK Xalan-Überlaufschwachstelle, die auf der CVE-2022-34169 basiert. Da festgestellt wurde, dass verschiedene JDK-Versionen unterschiedliche Overflow-Payloads benötigen, wurde dieses automatisierte Generierungstool entwickelt. Sie müssen das Projekt nur mit verschiedenen JDK-Versionen ausführen, um unterschiedliche XSLT-Exploit-Dateien zu generieren.
Kopieren Sie select.bak.xslt nach select.xslt und ändern Sie den auszuführenden Befehl.

Führen Sie dann java -jar AutoGenerateXalanPayload.jar aus. Während des Vorgangs werden einige Fehler ausgegeben – ignorieren Sie diese einfach. Nach Abschluss des Programms ist die Datei select.xslt der Payload, der dem entsprechenden JDK-Überlauf-Befehlsausführungs-Payload der JDK-Version entspricht.

https://mp.weixin.qq.com/s/xxAtjFvk9RxWiY-pwGf8Ow
Da es zu viele JDK-Subversionen gibt, habe ich die Binary-Search-Methode verwendet, um die Versionen von JDK 1.6 bis JDK 1.8 zu vergleichen. Am Beispiel der JDK 1.7-Tests: Zuerst wird die höchste Subversion von JDK 1.7 getestet, um ein XSLT zu erhalten – dieses XSLT wird als Typ A definiert. Dann wird die niedrigste Subversion von JDK 1.7 getestet. Wenn dieses XSLT mit dem Inhalt der höchsten Subversion von JDK 1.7 identisch ist, bedeutet dies, dass zwischen der niedrigsten und der höchsten JDK 1.7-Version durchgängig ein einziger Payload vom Typ A verwendet werden kann. Wenn nicht, teste ich die mittlere Version von JDK 1.7 – so wird die binäre Suche fortgesetzt. Dies ist der schnellste mir bekannte Ansatz, ohne alle Versionen installieren zu müssen, aber trotzdem alle abzudecken. Beispiel für ein Testergebnis: JDK-8u301 ist Payload-Typ A, JDK-8u202 ist Payload-Typ A – dann ist JDK-8u221 die mittlere Version dieser beiden, kann es also kein Payload-Typ B sein?
Im Folgenden sind die von mir erzielten Testergebnisse aufgeführt, aus denen hervorgeht, dass es zwischen JDK 1.6 und JDK 1.8 sechs verschiedene Payload-Typen gibt.
https://blog.noah.360.net/xalan-j-integer-truncation-reproduce-cve-2022-34169/
| JDK-Version | XSLS-Typ |
|---|
| Jdk-8u301 | A |
| Jdk-8u202 | A |
| Jdk-8u162 | A |
| Jdk8u152 | A |
| Jdk8u151 | B |
| Jdk8u144 | B |
| Jdk8u131 | B |
| Jdk8u121 | C |
| Jdk8u111 | C |
| Jdk8u102 | D |
| Jdk8u101 | D |
| Jdk8u91 | D |
| Jdk8u60 | D |
| Jdk8u20 | D |
| Jdk7u40 | D |
| Jdk7u21 | D |
| Jdk7u10 | D |
| Jdk7u05 | D |
| Jdk7u04 | D |
| Jdk7u03 | E |
| Idk7u02 | E |
| Jdk7u0 | E |
| Jdk6u45 | E |
| Jdk6u20 | E |
| Jdk6u17 | F |
| Jdk6u15 | F |
| Jdk6u10 | F |
| Jdk6u0 | F |