
Setup und Exploit-Reproduktion für CVE-2022-42889 Text4Shell.
Den vollständigen Bericht zum Exploit-Setup und zur Reproduktion finden Sie in der Datei "CVE-2022-42889-Project Vulnerability Exploitation Report". Die VM, die zum Erstellen und Ausführen des Exploits verwendet wurde, ist nicht in diesem Repository enthalten.
Einrichtung und Reproduktion des Exploits für CVE-2022-42889 Text4Shell.
CVE-2022-42889, auch als "Text4Shell" bekannt, war eine kritische Schwachstelle in der Apache-Commons-Text-Bibliothek, einer Bibliothek, die in Java-Anwendungen häufig zur Textverarbeitung und zur Bereitstellung von Erweiterungen für die Textbehandlung des standardmäßigen Java Development Kits (JDK) verwendet wird. Berichten zufolge waren Versionen der Apache-Commons-Text-Bibliothek aus dem Jahr 2018, insbesondere die Versionen 1.5 bis 1.9, betroffen. Die Schwachstelle beruht auf einer unsicheren Eingabeverarbeitung in der Klasse StringSubstitutor, die es Angreifern ermöglicht, die String-Interpolationsfunktionen der Bibliothek auszunutzen. Dies kann bei der Verarbeitung bösartig präparierter Eingaben zu Remote-Codeausführung (RCE) führen und stellt ein erhebliches Risiko für Anwendungen dar, die diese Bibliothek verwenden. CVE-2022-42889 wurde daher als kritische Schwachstelle eingestuft und erhielt einen CVSS-3.x-Basiswert von 9.8, da die Auswirkungen auf betroffene Systeme schwerwiegend sein können, bis hin zur vollständigen Kompromittierung des Systems.
Diese Schwachstelle wurde aufgrund ihres Potenzials zur Ausnutzung in Java-basierten Anwendungen mit den berüchtigten Schwachstellen Log4Shell (CVE-2021-44228) und Spring4Shell (CVE-2022-22965) verglichen. Anders als Log4Shell und Spring4Shell, die selbst in den grundlegendsten Anwendungsfällen verwundbar waren, sind nicht alle Anwender der Apache-Commons-Text-Bibliothek betroffen, da die Bibliothek auf eine bestimmte Weise verwendet werden muss, um die Angriffsfläche zu eröffnen und die Schwachstelle ausnutzbar zu machen.
Die Exploit-Demonstration verwendet das GitHub-Proof-of-Concept von cyberhack255, das alle Skripte und Werkzeuge enthält, die zum Ausführen des Exploits benötigt werden. Im Folgenden wird der Ablauf der Ausnutzung kurz beschrieben:
Die Demonstration verwendet ein Dockerfile, das einen Docker-Container einrichtet, um eine Java-Anwendung auszuführen, die als Fat-JAR-Datei (text4shell-poc.jar) gepackt ist. Es wird das offizielle OpenJDK-8-Laufzeitimage auf Basis von Alpine Linux verwendet, das eine minimale und leichtgewichtige Umgebung bereitstellt. Das Dockerfile installiert bash, um während der Demonstration Bash-Skripte zu ermöglichen. Port 8080 wird freigegeben, um während der Ausführung des Exploits externen Zugriff auf den Container zu ermöglichen.
Dieser PoC konzentriert sich auf die Erstellung einer bösartigen Payload, die den String-Ersetzungsmechanismus der Apache-Commons-Text-Bibliothek ausnutzt. Die Payload zielt auf den Lookup-Key „script“, indem sie die Methode StringSubstitutor.createInterpolator() aufruft. Für diese Demo erstellt die Payload remote eine neue Datei innerhalb des Docker-Containers.