
Prueba de concepto y reproducción en laboratorio para CVE-2026-75816, una toma de control de cuenta no autenticada de WordPress Frontend Admin mediante el envío de formularios a admin-ajax.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · CVE-2026-75816
Frontend Admin by DynamiApps 3.29.11 - shabti
Soy @abraxas_null. Laboratorio de loopback. El cliente es CVE-2026-75816-Abraxas-Labs.py.
user_1 no es un post. admin-ajax.php frontend_admin/form_submit sin autenticar. ActionPost::conditions_logic() retorna temprano cuando el id del objeto no es numérico (user_1), omitiendo current_user_can('edit_post'). El campo Email pre_update_value en 3.29.11 no tiene comprobación edit_user y hace wp_update_user del email del usuario 1. NVD lista hasta 3.29.12; el changelog de 3.29.12 añadió esa comprobación. El laboratorio es 3.29.11. La actual es 3.29.13.
| CVE | CVE-2026-75816 · CVE.org |
| CWE | CWE-287 |
| CVSS | Crítico: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Producto | Frontend Admin by DynamiApps |
| Afectados | todas las versiones hasta 3.29.11 (NVD lista 3.29.12; 3.29.12 añadió la comprobación edit_user del campo Email) |
| Parcheado | 3.29.12 y posteriores |
| Autenticación | ninguna |
| Licencia | GNU Affero GPL v3.0 |
| Laboratorio | solo 127.0.0.1 |
Un POST de invitado cambia el email del administrador. El restablecimiento de contraseña a esa dirección es toma de control de la cuenta. El laboratorio se detiene en el cambio de email. No estoy publicando una receta de contraseña olvidada dirigida al admin de otra persona.
Wordfence nombró pre_update_value y user_1. Leí conditions_logic, luego el campo Email, luego recolecté el formulario público.
GET /fea-lab/. Extraer _acf_nonce, _acf_objects, la clave del campo user_email. POST acff[post][<key>][email protected]. GET /?fea_lab_email=1. Pequeño JSON ajax Post updated, luego la nueva dirección.
Caminos equivocados: action=pre_update_value o parse_array (los nombres de funciones no son rutas); nonce hardcodeado; post_id numérico (entonces edit_post sí se ejecuta y un invitado es denegado); who_can_see distinto de all; 3.29.12; tratar [email protected] aún en el cuerpo como éxito.
Puerto 8088. Frontend Admin 3.29.11. Formulario público /fea-lab/, who_can_see=all, objeto user_1.
Objetivo solo 127.0.0.1:8088 (o el loopback que hayas enlazado).
cd lab
docker compose up --force-recreate
./run.sh
Testigo: GET /?fea_lab_email=1 es [email protected]. HTML de formulario genérico o [email protected] no lo es.
Formas de perder sin aprender nada:
[email protected] sigue siendo el email del admin0 / -1 / JSON de permiso sin el cambio de emailActualiza Frontend Admin by DynamiApps a 3.29.12 o posterior (actual 3.29.13). Vuelve a ejecutar CVE-2026-75816-Abraxas-Labs.py contra la compilación parcheada: el email del admin no debe cambiar.
plugins.trac.wordpress.org/changeset/3664865/acf-frontend-form-element
www.wordfence.com/threat-intel/vulnerabilities/id/f1637a3b-7b0f-485d-9d19-4f711f8c671b?source=cve
Directorio de plugins: acf-frontend-form-element
Navegador Trac: plugins.trac.wordpress.org/acf-frontend-form-element
Etiquetas SVN: plugins.svn.wordpress.org/acf-frontend-form-element
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
GNU Affero GPL v3.0. Ver LICENSE.
El cliente se comunica con loopback. Usarlo contra sistemas que no posees no está autorizado por Abraxas Labs. Sin garantía.