Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
text4shell-tools — Verwundbare Apache Commons Text in Java-JAR/WAR-Artefakten erkennen und patchen; Klassen fingerprinten und Bytecode nach CVE-2022-42889 (Text4Shell)-Aufrufstellen durchsuchen. | Kitploit
Tools/GitHubGitHub/jfrog/text4shell-tools
DefensivwerkzeugeStatische AnalyseSchwachstellenanalyseCode-AnalyseBinäranalyseLieferkettensicherheit
GitHubjfrog/text4shell-tools

text4shell-tools

Verwundbare Apache Commons Text in Java-JAR/WAR-Artefakten erkennen und patchen; Klassen fingerprinten und Bytecode nach CVE-2022-42889 (Text4Shell)-Aufrufstellen durchsuchen.

Repository anzeigen
104205vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

commons-text-tools

Schnelllinks

Zum Finden anklicken:

  • Finde commons-text .jar-Dateien und ihre Versionen

  • Aufrufe verwundbarer commons-text-Funktionen

  • Hot-Patch für commons-text .jar-Dateien, um die verwundbaren Verhaltensweisen zu deaktivieren

  • Beispiel für Scan und Patch

Übersicht

CVE-2022-42889 kann eine ernsthafte Bedrohung für eine breite Palette Java-basierter Anwendungen darstellen. Die wichtigen Fragen, die sich ein Entwickler in diesem Zusammenhang stellen kann, sind:

1. Enthält mein Code ? Welche Versionen?

commons-text

Enthält der veröffentlichte Code commons-text? Welche Version der Bibliothek ist darin enthalten? Die Beantwortung dieser Fragen ist möglicherweise nicht unmittelbar möglich, was an zwei Faktoren liegt:

  1. Transitive Abhängigkeiten: Auch wenn commons-text nicht in der direkten Abhängigkeitsliste des Projekts steht, kann es indirekt über eine andere Abhängigkeit verwendet werden.

  2. Der Code dieser Bibliothek erscheint möglicherweise nicht direkt als separate Datei, sondern ist in einer anderen Code-JAR-Datei gebündelt.

JFrog veröffentlicht ein Tool, um bei der Lösung dieses Problems zu helfen: scan_commons_text_versions. Das Tool sucht nach dem Klassencode von StringLookupFactory (unabhängig von den Namen der enthaltenen .jar-Dateien und dem Inhalt von pom.xml-Dateien) und versucht, die Versionen der Objekte per Fingerprinting zu identifizieren, um zu melden, ob die enthaltene Version von commons-text verwundbar ist.

2. Verwendet mein Code verwundbare commons-text-Funktionen?

Diese Frage ist für die Fälle relevant, in denen der Entwickler überprüfen möchte, ob die Aufrufe von commons-text in der Codebasis möglicherweise potenziell angreiferkontrollierte Daten durchreichen. Während der sicherste Weg zur Behebung der Schwachstelle – wie in den Sicherheitshinweisen erörtert – darin besteht, die entsprechenden Patches anzuwenden, kann die Kontrolle und Verifizierung der potenziellen Auswirkungen unter der Annahme eines ungepatchten commons-text in vielen Situationen wertvoll sein.

scan_commons_text_calls_jar.py lokalisiert die Aufrufe der verwundbaren Funktionen in kompilierten .jar-Dateien und meldet die Ergebnisse als Klassen- und Methodennamen, in denen jeder Aufruf erscheint.

3. Ich habe verwundbare commons-text-JAR-Dateien in meinem System. Wie kann ich das gefährliche Verhalten schnell deaktivieren?

  • Aktualisieren bleibt die beste Lösung – diese Lösung ist für schnelles Hot-Patching gedacht.

  • Im Zusammenhang mit der Schwachstelle CVE-2022-42889 ermöglicht die Klasse org/apache/commons/text/lookup/ScriptStringLookup in commons-text die Ausführung von Skripten, die über ${script} in einem String eingebettet sein können, der von einer angreiferkontrollierten Quelle stammt. Daher deuten Aufrufe der Funktion ScriptStringLookup.lookup darauf hin, dass die Funktionalität aktiviert ist.

  • Wir stellen ein Tool namens Text4ShellPatch bereit, mit dem dieser spezifische Aufruf gepatcht werden kann, sodass die Skriptausführungsfunktion nicht genutzt werden kann. Nach dem Anwenden des Patches führt die Bibliothek stets ein Skript aus, das eine Warnmeldung zurückgibt (anstelle des potenziell angreiferkontrollierten Codes).

  • In ähnlicher Weise können DNS- und URL-Lookups nicht vertrauenswürdige Inhalte laden, wenn sie von einem Angreifer über ${dns} und ${url} kontrolliert werden; daher können die jeweiligen Lookups DnsStringLookup bzw. UrlStringLookup per Patch deaktiviert werden, sodass sie eine Warnmeldung zurückgeben.

  • Der Patch kann auf eine bestimmte JAR-Datei angewendet werden, entweder nur für das script-Lookup oder für script, dns und url für einen besseren Schutz, falls diese in der Anwendung nicht verwendet werden sollen.

  • Am selben Speicherort wie die ursprüngliche JAR-Datei wird ein Backup erstellt, bevor diese durch die gepatchte Datei ersetzt wird. Der Backup-Dateiname folgt dem folgenden Muster: <original_jar_name>_YYYY.MM.DD_HH.mm.ss.orig.jar, wobei YYYY, MM, DD jeweils das Jahr, den Monat und den Tag und HH, mm, ss jeweils die Stunde, die Minuten und die Sekunde darstellen.

  • Es ist auch möglich, verwundbare Versionen von commons-text zu lokalisieren und automatisch zu patchen – die nächste Frage beantwortet dies.

4. Kann ich das Scannen und Patchen verwundbarer commons-text-JAR-Dateien automatisieren?

Zwei unserer Tools bieten zusammen die Möglichkeit, die verwundbaren commons-text-JAR-Dateien zu scannen und zu patchen.

In diesem Github-Repository ist ein Beispiel-Bash-Skript unter dem Namen scan_and_patch.sh vorhanden. Im Wesentlichen verwendet es das Skript scan_commons_text_versions.py, um unter einem bestimmten root-folder die verwundbaren commons-text-JAR-Dateien mit einer verwundbaren Version zu finden und das Tool Text4ShellPatch wie folgt darauf anzuwenden.

Example of automation


scan_commons_text_versions.py

Verwendung
root@kitploit:~
python scan_commons_text_versions.py root-folder [-quiet] [-exclude folder1 folder2 ..]

Das Tool scannt root_folder rekursiv nach .jar- und .war-Dateien; in jeder gefundenen Datei sucht das Tool nach einer StringLookupFactory.class (rekursiv in jeder .jar-Datei). Wenn mindestens eine der Klassen gefunden wird, versucht das Tool, deren Version per Fingerprinting zu identifizieren (einschließlich einiger Variationen, die in Patches und Backport-Patches gefunden wurden), um zu melden, ob der Code verwundbar ist.

Mit dem Flag -quiet werden nur Versionsschlussfolgerungen ausgegeben und andere Meldungen (Dateien nicht gefunden / Archive konnten nicht geöffnet werden / passwortgeschützte Archive) werden unterdrückt.

Verzeichnisse, die nach -exclude (optional) angegeben werden, werden übersprungen.


scan_commons_text_calls_jar.py

Das Tool erfordert Python 3 und die folgenden Drittanbieter-Bibliotheken: jawa, tqdm, easyargs, colorama

Installation der Abhängigkeiten
root@kitploit:~
pip install -r requirements.txt
Verwendung

Der Standard-Anwendungsfall:

root@kitploit:~
python scan_commons_text_calls_jar.py root-folder

scannt rekursiv alle .jar-Dateien in root-folder und gibt für jede Datei die Stellen (Klassenname und Methodenname) der Aufrufe der Methoden lookup/replace/replaceIn von StringSubstitutor/StringLookup aus.

Das Tool kann mit den folgenden Befehlszeilenoptionen für weitere Anwendungsfälle konfiguriert werden.

FlagStandardwertVerwendung
--class_regex(.*StringSubstitutor|.*StringLookup)Regulärer Ausdruck für den erforderlichen Klassennamen
--method_regex(lookup|replace|replaceIn)Regulärer Ausdruck für den erforderlichen Methodennamen
--quickmatch_string(StringLookup|StringSubstitutor)Vorbedingung für die Dateianalyse: .jar-Dateien, die den angegebenen regulären Ausdruck nicht enthalten, werden ignoriert
--class_existenceNicht gesetztWenn nicht gesetzt, wird nach Aufrufen von class::method gesucht, wie durch die regulären Ausdrücke angegeben. Wenn gesetzt, wird --method_regex ignoriert und das Tool sucht nach der Existenz von Klassen, die durch --class_regex in der JAR-Datei angegeben sind.
--no_quickmatchNicht gesetztWenn gesetzt, wird der Wert von --quickmatch_string ignoriert und alle JAR-Dateien werden analysiert
--caller_block.*org/apache/commons/textWenn die Aufruferklasse diesem regulären Ausdruck entspricht, wird sie nicht angezeigt

text_4_shell_patch

Verwendung
root@kitploit:~
java -jar Text4ShellPatch.jar TARGET_JAR [PATCHING_MODE]
  Where TARGET_JAR is the application to patch and PATCHING_MODE is
    0 (default): Patch Script lookup
    1:           Patch Script + DNS + URL lookups
  [Note: The original Jar will be kept in the same folder with the .orig.jar extension]  

Das Tool sucht in der angegebenen commons-text-JAR-Datei nach der Klasse org/apache/commons/text/lookup/ScriptStringLookup und ersetzt den Inhalt der Funktion lookup() durch eine Warnmeldung und kehrt anschließend aus der Funktion zurück. Somit wird das eval in der neuen Klasse ScriptStringLookup nicht mehr vorhanden sein.

Es kann auch die Klassen DnsStringLookup und URLStringLookup patchen und die Funktion lookup() deaktivieren, wenn die Option PATCHING_MODE auf 1 gesetzt wird.

Während des Vorgangs wird am selben Pfad eine Sicherungsdatei mit der Erweiterung .orig.jar erzeugt.

Generierung aus dem Quellcode

Text4ShellPatch kann mit dem einfachen Befehl bearbeitet und mit Maven kompiliert werden: mvn clean assembly:single. Es wird eine Datei Text4ShellPatch.jar im Ordner target/ erzeugt.

Tool herunterladen