
Proof-of-concept e riproduzione in laboratorio per CVE-2026-75816, un account takeover non autenticato di WordPress Frontend Admin tramite invio di form admin-ajax.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-75816
Frontend Admin by DynamiApps 3.29.11 - shabti
Sono @abraxas_null. Laboratorio loopback. Il client è CVE-2026-75816-Abraxas-Labs.py.
user_1 non è un post. admin-ajax.php frontend_admin/form_submit non autenticato. ActionPost::conditions_logic() ritorna anticipatamente quando l'id dell'oggetto non è numerico (user_1), saltando current_user_can('edit_post'). Il campo Email pre_update_value nella 3.29.11 non ha un controllo edit_user e wp_update_user dell'email dell'utente 1. NVD elenca fino alla 3.29.12; il changelog della 3.29.12 ha aggiunto quel controllo. Il laboratorio è la 3.29.11. La versione attuale è la 3.29.13.
| CVE | CVE-2026-75816 · CVE.org |
| CWE | CWE-287 |
| CVSS | Critico: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Prodotto | Frontend Admin by DynamiApps |
| Affetto | tutte le versioni fino alla 3.29.11 (NVD elenca la 3.29.12; la 3.29.12 ha aggiunto il controllo edit_user del campo Email) |
| Corretto | 3.29.12 e successive |
| Auth | nessuna |
| Licenza | GNU Affero GPL v3.0 |
| Laboratorio | solo 127.0.0.1 |
Una POST da guest cambia l'email dell'amministratore. Il reset della password a quell'indirizzo è una compromissione dell'account. Il laboratorio si ferma al cambio email. Non pubblico una ricetta di password dimenticata rivolta all'admin di qualcun altro.
Wordfence ha indicato pre_update_value e user_1. Ho letto conditions_logic, poi il campo Email, poi ho raccolto il form pubblico.
GET /fea-lab/. Estrai _acf_nonce, _acf_objects, la chiave del campo user_email. POST acff[post][<key>][email protected]. GET /?fea_lab_email=1. Piccolo JSON ajax Post updated, poi il nuovo indirizzo.
Vicoli ciechi: action=pre_update_value o parse_array (i nomi delle funzioni non sono route); nonce hard-coded; post_id numerico (allora edit_post viene effettivamente eseguito e un guest viene negato); who_can_see diverso da all; 3.29.12; considerare [email protected] ancora nel body come successo.
Porta 8088. Frontend Admin 3.29.11. Form pubblico /fea-lab/, who_can_see=all, oggetto user_1.
Target solo 127.0.0.1:8088 (o il loopback su cui hai fatto il bind).
cd lab
docker compose up --force-recreate
./run.sh
Witness: GET /?fea_lab_email=1 è [email protected]. L'HTML generico del form o [email protected] non lo è.
Modi per perdere senza imparare nulla:
[email protected] ancora l'email dell'admin0 / -1 / JSON di permesso senza il cambio emailAggiorna Frontend Admin by DynamiApps alla 3.29.12 o successiva (attuale 3.29.13). Riesegui CVE-2026-75816-Abraxas-Labs.py contro la build corretta: l'email dell'admin non deve cambiare.
plugins.trac.wordpress.org/changeset/3664865/acf-frontend-form-element
www.wordfence.com/threat-intel/vulnerabilities/id/f1637a3b-7b0f-485d-9d19-4f711f8c671b?source=cve
Directory del plugin: acf-frontend-form-element
Browser Trac: plugins.trac.wordpress.org/acf-frontend-form-element
Tag SVN: plugins.svn.wordpress.org/acf-frontend-form-element
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Vedi LICENSE.
Il client comunica con il loopback. Usarlo contro sistemi che non possiedi non è autorizzato da Abraxas Labs. Nessuna garanzia.