
All-in-one-Plugin für Burp Suite zur Erkennung und Ausnutzung von Java-Deserialisierungsschwachstellen.
Java Deserialization Scanner ist ein Burp-Suite-Plugin, das darauf abzielt, Java-Deserialisierungsschwachstellen zu erkennen und auszunutzen. Es wurde von Federico Dotta, Principal Security Analyst bei HN Security, geschrieben.
Das Plugin besteht aus drei verschiedenen Komponenten:
Ein kurzer Artikel, der einen Mini-Walkthrough zur Verwendung der verschiedenen Komponenten des Plugins enthält, ist unter der folgenden URL zu finden: https://web.archive.org/web/20201130104913/https://techblog.mediaservice.net/2017/05/reliable-discovery-and-exploitation-of-java-deserialization-vulnerabilities/
Java Deserialization Scanner verwendet benutzerdefinierte Payloads, die mit einer modifizierten Version von „ysoserial“ erzeugt werden, einem von frohoff und gebl entwickelten Tool, um Java-Deserialisierungsschwachstellen zu erkennen. Das ursprüngliche Tool (https://github.com/frohoff/ysoserial) erzeugt Payloads für die Ausführung von Befehlen auf dem System mithilfe der Funktion Runtime.exec. Normalerweise ist es jedoch nicht möglich, die Ausgabe des Befehls zu sehen, und folglich ist es nicht einfach, einen Scanner auf der Grundlage dieser Art von Funktion zu schreiben. Aus diesem Grund wird eine modifizierte Version von ysoserial verwendet, um verschiedene Arten von Payloads zu erzeugen, die eher zur Erkennung des Problems als zur Ausnutzung dienen:
Derzeit melden die passiven Prüfungen des Java-Deserialization-Scanners das Vorhandensein serialisierter Java-Objekte in den HTTP-Anfragen, und die aktiven Prüfungen scannen aktiv nach schwachen Deserialisierungsfunktionen in Verbindung mit dem Vorhandensein der folgenden schwachen Bibliotheken:
Darüber hinaus wurde ein URLSNDS-Payload eingeführt, um Java-Deserialisierung ohne verwundbare Bibliotheken aktiv zu erkennen. Wenn das Plugin nur das URLDNS-Problem findet (und keine verwundbaren Bibliotheken), kann der Angreifer wahrscheinlich DoS-Angriffe ausführen, aber für Remote Code Execution ist mehr Aufwand erforderlich. Weitere Einzelheiten finden Sie unter diesem Link.
Alle Komponenten des Plugins unterstützen die folgenden Kodierungen:
Im Testordner befinden sich einige einfache Java-Serveranwendungen, mit denen das Plugin getestet werden kann. Jede Anwendung verwendet eine andere verwundbare Java-Bibliothek.
Das Plugin bietet einen eigenen Tab, um die Erkennung mit den Sleep- und DNS-Payloads an benutzerdefinierten Einfügepunkten zu starten und so Java-Deserialisierungsschwachstellen in besonderen Situationen zu prüfen, in denen ungewöhnliche Einstiegspunkte die Erkennung mit dem Scanner nicht ermöglichen. Die Ergebnisse des manuellen Testers können zwischen die Ergebnisse des Burp-Suite-Scanners eingefügt werden.
Der manuelle Tester bietet eine zusätzliche Erkennungsmethode: CPU-Erkennung. Die CPU-Erkennungsmethode basiert auf Wouter Coekaerts’ SerialDOS-Arbeit (https://gist.github.com/coekie/a27cc406fc9f3dc7a70d) und kann Deserialisierungsprobleme ohne das Vorhandensein einer verwundbaren Bibliothek erkennen, indem sie ein Objekt verwendet, das für die Deserialisierung viele CPU-Zyklen benötigt, und die Antwortzeit prüft. Die CPU-Erkennungsmethode ist standardmäßig nicht in den aktiven Scan-Prüfungen enthalten, da sie mit Vorsicht verwendet werden muss: Das Senden einer großen Anzahl von „leichten“ SerialDOS-Payloads kann auf alten oder stark ausgelasteten Systemen dennoch Probleme verursachen.
Nachdem eine Java-Deserialisierungsschwachstelle gefunden wurde, ist es möglich, das Problem über den eigenen Tab „Exploiting“ aktiv auszunutzen. Der Tab „Exploiting“ bietet eine komfortable Oberfläche zur Ausnutzung von Deserialisierungsschwachstellen. Dieser Tab verwendet das Tool ysoserial, um Exploitation-Vektoren zu erzeugen, und fügt den erzeugten Payload in eine HTTP-Anfrage ein. ysoserial nimmt als Argument eine verwundbare Bibliothek und einen Befehl entgegen und erzeugt ein serialisiertes Objekt in binärer Form, das an die verwundbare Anwendung gesendet werden kann, um den Befehl auf dem Zielsystem auszuführen (offensichtlich, wenn die Zielanwendung verwundbar ist). Der Tab „Exploiting“ unterstützt dieselben Kodierungsformate wie die Erkennungsabschnitte des Plugins.

Um diese Erweiterung zu verbessern, melden Sie bitte jedes im Plugin gefundene Problem. Wenn Sie mir außerdem eine veröffentlichte Java-Bibliothek melden möchten, die für die Ausnutzung dieser Schwachstelle nützlich ist, werde ich – falls ich Zeit habe – einen aktiven Check dafür in meinem Plugin hinzufügen.
Diese Software wurde ausschließlich zu Zwecken der akademischen Forschung und zur Entwicklung wirksamer Verteidigungstechniken erstellt und ist nicht dafür bestimmt, Systeme anzugreifen, außer wenn dies ausdrücklich genehmigt wurde. Die Projektbetreuer sind nicht verantwortlich oder haftbar für einen Missbrauch der Software. Nutzen Sie sie verantwortungsvoll.
Copyright (c) 2020 Java Deserialization Scanner
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die „Software“) erhält, kostenlos die Erlaubnis erteilt, die Software ohne Einschränkung zu nutzen, einschließlich, ohne Einschränkung, der Rechte zur Nutzung, Vervielfältigung, Änderung, Zusammenführung, Veröffentlichung, Verteilung, Unterlizenzierung und/oder zum Verkauf von Kopien der Software, und Personen, denen die Software zur Verfügung gestellt wird, dies unter den folgenden Bedingungen zu gestatten:
Der obige Urheberrechtshinweis und dieser Erlaubnishinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZITE GARANTIE BEREITGESTELLT, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON RECHTEN. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERRECHTSINHABER FÜR ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNGEN VERANTWORTLICH, SEI ES AUS EINEM VERTRAG, EINER UNERLAUBTEN HANDLUNG ODER ANDERWEITIG, DIE AUS ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN GESCHÄFTEN MIT DER SOFTWARE ENTSTEHEN.