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-2024-22243 — Example exploitable scenarios for CVE-2024-22243 affecting the Spring framework (open redirect & SSRF). | Kitploit
Ferramentas/GitHubGitHub/seanpesce/cve-2024-22243
Vulnerability AnalysisCode AnalysisExploitationWeb Application ExploitationWeb SecurityCTFLearning & Education
GitHubseanpesce/cve-2024-22243

CVE-2024-22243

Example exploitable scenarios for CVE-2024-22243 affecting the Spring framework (open redirect & SSRF).

Ver Repositório
132há 1 anoAinda 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

CVE-2024-22243

Autor: Sean Pesce

Este projeto contém um exemplo de aplicação web que demonstra cenários exploráveis para CVE-2024-22243, uma vulnerabilidade de análise de URL no Spring Framework do Java (divulgação oficial aqui).

Vulnerabilidade

As versões afetadas do Spring analisam o "segmento userinfo" de URLs de uma forma única, potencialmente resultando na extração de um segmento de nome de host que difere de muitas outras bibliotecas comuns.

O comportamento anormal deve-se à seguinte expressão regular ("regex") na classe UriComponentsBuilder (introduzida por este commit em 2014):

root@kitploit:~
private static final String USERINFO_PATTERN = "([^@\\[/?#]*)";

Esta regex não permite o caractere "colchete esquerdo" ([) no segmento de userinfo. No entanto, o Spring parece ser uma exceção com esse comportamento, então chamar getHost() em um objeto UriComponents construído usando UriComponentsBuilder.fromUriString ou UriComponentsBuilder.fromHttpUrl pode resultar em comportamento inesperado. As classes RestTemplate, RestClient e WebClient também são afetadas devido ao uso interno de UriComponentsBuilder; portanto, as implementações podem se tornar vulneráveis mesmo sem o uso direto de UriComponentsBuilder.

Para entradas especialmente criadas, o Spring retornará um valor de nome de host que difere de todos os seguintes:

  • Navegadores web modernos, incluindo:
    • Chrome (e outros navegadores baseados em Chromium)
    • Firefox
    • Safari
  • java.net.URI (relatadamente apenas para versões específicas do Java; outras versões lançam uma URISyntaxException)
  • java.net.URL
  • curl
  • android.net.Uri
  • okhttp3.HttpUrl
  • (Python 3) urllib.parse.urlparse

(Note que esta lista não é exaustiva.)

Este comportamento potencialmente torna as aplicações web baseadas em Spring vulneráveis a open redirect e server-side request forgery (SSRF) se a implementação dependente usar nomes de host confiáveis para autorização ou outros mecanismos de segurança.

Exemplos

A aplicação web de exemplo contém dois endpoints vulneráveis.

O primeiro endpoint, /redirect, mostra como a análise anormal de URL do Spring pode resultar em um open redirect. Pode ser explorado usando uma URL como a seguinte:

root@kitploit:~
https://127.0.0.1[@evil.com

O segundo endpoint, /health-check, demonstra como uma incompatibilidade na análise de URL entre o Spring e a classe URL da biblioteca padrão Java pode resultar em server-side request forgery (SSRF). Pode ser explorado usando uma URL como a seguinte:

root@kitploit:~
https://evil.com[@127.0.0.1

Uso

Para construir este projeto com Maven, execute o seguinte comando (testado com OpenJDK 17):

root@kitploit:~
mvn clean package

Em seguida, inicie a aplicação web com um comando como o seguinte:

root@kitploit:~
java -jar seanpesce-cve-2024-22243.jar 9999

A aplicação web estará acessível em http://127.0.0.1:9999/.

Docker

Para construir a imagem Docker, execute o seguinte comando:

root@kitploit:~
docker build -t seanpesce-cve-2024-22243:latest .

Em seguida, inicie a aplicação web com um comando como o seguinte:

root@kitploit:~
docker run -i -e PORT=9999 -p 9999:9999 seanpesce-cve-2024-22243:latest

A aplicação web estará acessível em http://127.0.0.1:9999/ no host Docker.

Semgrep

Este repositório também contém regras semgrep para auxiliar na varredura de caminhos de código potencialmente vulneráveis. spring-cve-2024-22243_loose.yaml realiza varreduras ingênuas para qualquer uso das APIs vulneráveis; como tal, frequentemente retornará um grande número de falsos positivos. spring-cve-2024-22243_strict.yaml tenta usar lógica mais rigorosa e análise de taint; no entanto, isso não foi testado minuciosamente e tem alto potencial de perder algumas implementações vulneráveis (especialmente quando não se usa Semgrep Pro, que é necessário para análise entre arquivos).

Outros Recursos

  • Entrada do banco de dados NIST
  • Commit Git que corrigiu a vulnerabilidade
  • Demonstração de implementação vulnerável: Fluxo OAuth vulnerável com open redirect por threedr3am do SecCoder Security Lab
  • CVE-2024-22259, uma segunda vulnerabilidade de análise de URL que foi descoberta no rastro de CVE-2024-22243
  • CVE-2024-22262, uma terceira vulnerabilidade de análise de URL que foi descoberta no rastro das duas primeiras descobertas
  • PortSwigger URL Bypass Cheat Sheet, que inclui payloads para CVE-2024-22243
Baixar ferramenta