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
text4shell-tools — Detecte e corrija Apache Commons Text vulneráveis em artefatos JAR/WAR Java; identifique classes por fingerprint e analise o bytecode em busca de locais de chamada do CVE-2022-42889 (Text4Shell). | Kitploit
Ferramentas/GitHubGitHub/jfrog/text4shell-tools
Ferramentas DefensivasAnálise EstáticaAnálise de VulnerabilidadesAnálise de CódigoAnálise de BináriosSegurança da Cadeia de Suprimentos
GitHubjfrog/text4shell-tools

text4shell-tools

Detecte e corrija Apache Commons Text vulneráveis em artefatos JAR/WAR Java; identifique classes por fingerprint e analise o bytecode em busca de locais de chamada do CVE-2022-42889 (Text4Shell).

Ver Repositório
104205há 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

commons-text-tools

Links rápidos

Clique para encontrar:

  • Localizar arquivos .jar do commons-text e suas versões
  • Chamadas às funções vulneráveis do commons-text
  • Hot patch em arquivos .jar do commons-text para desativar os comportamentos vulneráveis
  • Exemplo de varredura e patch

Visão geral

A CVE-2022-42889 pode representar uma séria ameaça a uma ampla gama de aplicações baseadas em Java. As perguntas importantes que um desenvolvedor pode fazer nesse contexto são:

1. O meu código inclui commons-text? Quais versões?

O código distribuído inclui commons-text? Qual versão da biblioteca está incluída nele? Responder a essas perguntas pode não ser imediato devido a dois fatores:

  1. Dependências transitivas: embora commons-text possa não estar na lista de dependências diretas do projeto, ele pode ser usado indiretamente por alguma outra dependência.

  2. O código desta biblioteca pode não aparecer diretamente como um arquivo separado, mas sim estar empacotado em algum outro arquivo jar de código.

A JFrog está disponibilizando uma ferramenta para ajudar a resolver esse problema: scan_commons_text_versions. A ferramenta procura pelo código da classe StringLookupFactory independentemente dos nomes dos arquivos .jar e do conteúdo dos arquivos pom.xml, e tenta identificar as versões dos objetos para informar se a versão incluída do commons-text é vulnerável.

2. O meu código usa funções vulneráveis do commons-text?

A pergunta é relevante para os casos em que o desenvolvedor deseja verificar se as chamadas ao commons-text no código podem passar dados potencialmente controlados por um atacante. Embora a forma mais segura de corrigir a vulnerabilidade, conforme discutido nos avisos de segurança, seja aplicar os patches apropriados, avaliar e verificar o impacto potencial sob a suposição de um commons-text sem patch pode ser valioso em muitas situações.

scan_commons_text_calls_jar.py, que localiza as chamadas às funções vulneráveis em arquivos .jar compilados, e relata os resultados como nome da classe e nomes dos métodos nos quais cada chamada aparece.

3. Tenho arquivos .jar do commons-text vulneráveis no meu sistema, como posso desativar rapidamente o comportamento perigoso?

  • Atualizar continua a ser a melhor solução — esta solução destina-se a um hot patch rápido.

  • No contexto da vulnerabilidade CVE-2022-42889, a classe org/apache/commons/text/lookup/ScriptStringLookup no commons-text permite a execução de scripts que podem estar embutidos em uma string recebida de uma fonte controlada pelo atacante por meio de ${script}. Portanto, invocações da função ScriptStringLookup.lookup indicam que a funcionalidade está ativada.

  • Fornecemos uma ferramenta, Text4ShellPatch, que permite aplicar patch nessa chamada específica para que a funcionalidade de execução de scripts não possa ser utilizada. Após aplicar o patch, a biblioteca sempre executará um script que retorna uma mensagem de aviso (em vez do código potencialmente controlado pelo atacante).

  • Da mesma forma, o lookup de DNS e URL pode carregar conteúdo não confiável se for controlado por um atacante por meio de ${dns} e ${url}; assim, seus respectivos lookups DnsStringLookup e UrlStringLookup podem ser desativados por meio de patch para retornar uma mensagem de aviso.

  • O patch pode ser aplicado a um arquivo jar específico, apenas para o lookup script, ou para script, dns e url para uma melhor proteção caso não sejam destinados ao uso na aplicação.

  • Um backup é gerado no mesmo local do jar original antes de ser substituído pelo jar com patch. O nome do arquivo de backup segue o seguinte padrão: <original_jar_name>_YYYY.MM.DD_HH.mm.ss.orig.jar, onde YYYY, MM, DD são respectivamente o ano, o mês e o dia, e HH, mm, ss são respectivamente a hora, os minutos e os segundos.

  • Também é possível localizar versões vulneráveis do commons-text e aplicar patch nelas automaticamente, como a próxima pergunta responde.

4. Posso automatizar a varredura e o patch de arquivos .jar do commons-text vulneráveis?

Duas das nossas ferramentas, em conjunto, oferecem a capacidade de varrer e aplicar patch nos arquivos .jar do commons-text vulneráveis.

Um exemplo de script bash está presente neste repositório do Github com o nome scan_and_patch.sh. Basicamente, ele usa o script scan_commons_text_versions.py para encontrar, em uma root-folder específica, os arquivos .jar do commons-text vulneráveis com uma versão vulnerável e executar a ferramenta Text4ShellPatch neles, como a seguir.

Example of automation


scan_commons_text_versions.py

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

A ferramenta varrerá root_folder recursivamente em busca de arquivos .jar e .war; em cada arquivo localizado, a ferramenta procura por StringLookupFactory.class (recursivamente em cada arquivo .jar). Se pelo menos uma das classes for encontrada, a ferramenta tenta identificar sua versão (incluindo algumas variações encontradas em patches e backports de patches) para informar se o código é vulnerável.

Com a flag -quiet, apenas as conclusões sobre a versão são exibidas, e as outras mensagens (arquivos não encontrados / arquivos que falharam ao abrir / arquivos protegidos por senha) são silenciadas.

As pastas que aparecem após -exclude (opcional) são ignoradas.


scan_commons_text_calls_jar.py

A ferramenta requer python 3 e as seguintes bibliotecas de terceiros: jawa, tqdm, easyargs, colorama

Instalação das dependências
root@kitploit:~
pip install -r requirements.txt
Uso

O caso de uso padrão:

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

varrerá recursivamente todos os arquivos .jar em root-folder, exibindo para cada um as localizações (nome da classe e nome do método) das chamadas aos métodos lookup/replace/replaceIn de StringSubstitutor/StringLookup.

A ferramenta pode ser configurada para casos de uso adicionais usando os seguintes argumentos de linha de comando.

FlagDefault valueUse
--class_regex(.*StringSubstitutor|.*StringLookup)Expressão regular para o nome da classe exigida
--method_regex(lookup|replace|replaceIn)Expressão regular para o nome do método exigido
--quickmatch_string(StringLookup|StringSubstitutor)Pré-condição para análise de arquivos: arquivos .jar que não contêm a regex especificada serão ignorados
--class_existenceNão definidoQuando não definido, procura chamadas para classe::método conforme especificado pelas regexes. Quando definido, --method_regex é ignorado e a ferramenta procurará a existência de classes especificadas por --class_regex no jar.
--no_quickmatchNão definidoQuando definido, o valor de --quickmatch_string é ignorado e todos os arquivos .jar são analisados
--caller_block.*org/apache/commons/textSe a classe do chamador corresponder a esta regex, ela não será exibida

text_4_shell_patch

Uso
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]  

A ferramenta procurará a classe org/apache/commons/text/lookup/ScriptStringLookup no jar do commons-text fornecido e substituirá o conteúdo da função lookup() por uma mensagem de aviso, retornando da função. Assim, o eval não existirá na nova classe ScriptStringLookup.

Ela também pode aplicar patch nas classes DnsStringLookup e URLStringLookup e desativar a função lookup() ao definir a opção PATCHING_MODE como 1.

Um arquivo de backup é gerado durante o processo no mesmo caminho, com a extensão .orig.jar.

Geração a partir do Código-Fonte

O Text4ShellPatch pode ser editado e compilado com o Maven usando o simples comando: mvn clean assembly:single. Ele criará um arquivo Text4ShellPatch.jar na pasta target/.

Baixar ferramenta