
Эксплойт-доказательство концепции для CVE-2015-9357: хранимый XSS в парсере смайликов WordPress, обходящий wp_kses, связывающий подделку nonce для создания учетных записей администратора. Только для образовательных целей.
хранимый XSS в парсере смайликов/эмотиконов WordPress, создание учётной записи администратора через поддельный запрос с nonce.
выходит за пределы контекста атрибута <a href> через регулярное выражение эмотиконов, внедряет js в обработчик onerror. тег script не нужен, полезная нагрузка проходит фильтрацию wp_kses в уязвимом поле.
цепочка: отправить полезную нагрузку в любое поле, которое подвергается преобразованию смайликов, администратор просматривает его, XSS срабатывает в его сессии, извлекает nonce для создания пользователя из user-new.php, отправляет запрос на создание новой учётной записи администратора, подтверждает через вход.
только для лабораторного/образовательного использования. требуется, чтобы целевое поле действительно применяло преобразование смайликов WordPress, зависит от темы/плагина.
оригинальное раскрытие уязвимости: https://blog.sucuri.net/2015/10/security-advisory-stored-xss-in-akismet-wordpress-plugin.html
python3 CVE-2015-9357.py -t https://target -l LHOST -p LPORT \
--endpoint https://target/wp-admin/admin-ajax.php \
--field message --action <ajax_action> --nonce <nonce> \
--data "name=a,[email protected],phone=a"
--endpoint / --field зависят от того, где на самом деле находится уязвимый ввод (комментарии, контактная форма и т. д.), сначала найдите его вручную.
вывод при успехе: учётные данные администратора (pwned / Password123!) и url wp-admin.