Раскрытие скрытых опасностей в неисправленном исследовании уязвимости WordPress SSRF

админ

Введение – Исследование неизвестного: Под поверхностью неисправленного WordPress SSRF

В постоянно меняющемся ландшафте кибербезопасности WordPress остается популярной целью из-за его широкого использования и обширной экосистемы плагинов. Хотя ядро WordPress в целом безопасно, уязвимости часто возникают из-за сторонних плагинов и тем. Одной из таких уязвимостей, которая привлекла внимание, является уязвимость Server-Side Request Forgery (SSRF). В этой записи блога мы углубимся в тонкости неисправленной уязвимости WordPress SSRF, ее последствия и то, как WP-Firewall может помочь защитить ваш сайт WordPress от таких угроз.

## Основная причина: wp_http_validate_url()

В сентябре 2022 года SonarSource опубликовала рекомендацию о неисправленном WordPress Core Unahenticated Blind SSRF. Основная причина этой уязвимости кроется в функции `wp_http_validate_url()`, которая подвержена атакам перепривязки DNS. Хотя само ядро WordPress напрямую не затронуто, плагины, использующие эту уязвимую функцию, находятся под угрозой.

Понимание wp_http_validate_url()

Функция `wp_http_validate_url()` предназначена для проверки URL-адресов с целью предотвращения атак перенаправления и подделки запросов. Однако она не обеспечивает защиты от атак перепривязки DNS, что делает ее потенциальным вектором уязвимостей SSRF. Эта функция часто используется совместно с `wp_remote_get()` и ее более безопасной альтернативой `wp_safe_remote_get()`.

Очевидная часть: wp_remote_get() и wp_safe_remote_get()

Функция `wp_remote_get()` обычно используется для запроса удаленных хостов через сервер. Однако хорошо известно, что передача введенных пользователем URL-адресов в эту функцию может привести к уязвимостям SSRF. Чтобы снизить этот риск, WordPress представил `wp_safe_remote_get()`, который включает дополнительные проверки для предотвращения атак SSRF.

Насколько безопасен wp_safe_remote_get()?

Функция `wp_safe_remote_get()` разработана как более безопасная альтернатива `wp_remote_get()`. Согласно официальной документации WordPress:

«Эта функция идеальна, когда HTTP-запрос отправляется на произвольный URL-адрес. URL-адрес проверяется, чтобы избежать перенаправлений и атак с подделкой запросов».

Однако безопасность функции ограничена базовой функцией `wp_http_validate_url()`, которая, как упоминалось ранее, уязвима для атак с перепривязкой DNS.

Погружение в функцию

Исходный код `wp_safe_remote_get()` выглядит следующим образом:

PHP-файл
функция wp_safe_remote_get( $url, $args = array() ) {
$args['reject_unsafe_urls'] = true;
$http = _wp_http_get_object();
вернуть $http->get( $url, $args );
}

В строке 2 параметр `$args['reject_unsafe_urls']` установлен в `true`, что в конечном итоге передает пользовательский ввод в функцию `wp_http_validate_url()` перед запросом URL. Поскольку `wp_http_validate_url()` уязвим для атак перепривязки DNS, любая функция, полагающаяся исключительно на него для проверки, также уязвима.

Ограничения уязвимости

Хотя это и не полноценный SSRF, существуют ограничения, накладываемые функцией `wp_http_validate_url()`:

– Протокол должен быть либо `http://`, либо `https://`
– Порт может быть только одним из 80, 443 или 8080.

Несмотря на эти ограничения, запрос внутренних хостов в этих границах возможен через этот SSRF.

Уязвимый код плагина

Вот несколько примеров уязвимого кода плагина:

Неслепой SSRF

PHP-файл
<?php
require_once('wp-load.php');
$url = $_GET['url'];
$response = wp_safe_remote_get( $url );
$response = wp_remote_retrieve_body( $response );
эхо $ответ;
?>

Если плагин принимает пользовательский ввод, передает его функции `wp_safe_remote_get()`, а затем отображает ответ, он уязвим для неслепого ограниченного SSRF.

Слепой SSRF

PHP-файл
<?php
require_once('wp-load.php');
$url = $_GET['url'];
$response = wp_safe_remote_get( $url );
$response_code = wp_remote_retrieve_response_code( $response );
если ($код_ответа == 200) {
echo "Работает";
} еще {
echo "Упал или не найден!";
}
?>

Если плагин передает пользовательский ввод в `wp_safe_remote_get()`, но возвращает только код ответа/статус, он уязвим для слепой атаки SSRF, ограничивающей воздействие сканированием портов 80, 443 или 8080 любого внутреннего хоста.

Демонстрация атаки

Чтобы продемонстрировать эту уязвимость, мы провели атаку на сервер Apache, работающий под управлением WordPress на порту 80, и сервер PHP, работающий на localhost:8080 с некоторой секретной информацией. Уязвимый код был вставлен в каталог плагина `/wp-content/plugins/vulnerable-plugin/index.php`.

Репозиторий GitHub

Вы можете найти уязвимый экземпляр Docker и скрипт эксплойта, чтобы поэкспериментировать с этой уязвимостью здесь Репозиторий GitHub. Кредит: Ананда Дхакал

## Еще больше уязвимых функций

Та же уязвимость применима и к другим функциям, которые используют `wp_http_validate_url()` для проверки:

– `wp_safe_remote_request()`
– `wp_safe_remote_post()`
– `wp_safe_remote_head()`

Кроме того, некоторые функции действуют как оболочки для `wp_safe_remote_get()` и также в некоторой степени уязвимы:

– `WP_REST_URL_Details_Controller::get_remote_url()`
– `download_url()`
– `wp_remote_fopen()`
– `WP_oEmbed::discover()`

Заключение

Очевидно, что функции, считающиеся безопасными и разработанные для защиты от уязвимостей SSRF, не являются полностью надежными. Зависимость от `wp_http_validate_url()`, которая уязвима для атак перепривязки DNS, подвергает сайты WordPress потенциальным атакам SSRF. Мы призываем команду WordPress Core решить эту проблему и выпустить исправление для повышения безопасности платформы.

Как WP-Firewall может помочь

В WP-Firewall мы понимаем, насколько важно защищать ваш сайт WordPress от новых угроз. Наши комплексные решения безопасности разработаны для обеспечения надежной защиты от широкого спектра уязвимостей, включая атаки SSRF. Вот как WP-Firewall может помочь защитить ваш сайт WordPress:

Обнаружение угроз в реальном времени

WP-Firewall предлагает возможности обнаружения угроз в реальном времени, которые отслеживают ваш сайт на предмет подозрительной активности и потенциальных уязвимостей. Наши передовые алгоритмы могут определять и блокировать попытки SSRF, гарантируя, что ваш сайт останется в безопасности.

Регулярные проверки безопасности

Наша команда экспертов по безопасности проводит регулярные проверки вашего сайта WordPress и его плагинов для выявления и устранения уязвимостей. Опережая потенциальные угрозы, мы помогаем вам поддерживать безопасную среду для ваших пользователей.

Автоматизированное управление исправлениями

Поддержание ядра WordPress, тем и плагинов в актуальном состоянии имеет решающее значение для безопасности. WP-Firewall обеспечивает автоматическое управление исправлениями, гарантируя, что все компоненты вашего сайта будут обновлены до последних исправлений безопасности.

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

WP-Firewall позволяет вам создавать пользовательские правила брандмауэра, соответствующие вашим конкретным потребностям. Внедряя правила, которые блокируют вредоносные запросы и попытки несанкционированного доступа, вы можете повысить безопасность своего сайта.

Комплексная отчетность

Наши подробные отчеты по безопасности содержат информацию об обнаруженных угрозах и действиях, предпринятых для защиты вашего сайта. С WP-Firewall вы можете быть в курсе состояния безопасности вашего сайта WordPress в любое время.

Защита от SSRF с помощью WP-Firewall

Для устранения уязвимостей SSRF WP-Firewall предлагает следующие функции:

Проверка входных данных

WP-Firewall выполняет строгую проверку ввода, чтобы гарантировать, что предоставленные пользователем URL-адреса безопасны и не содержат вредоносных намерений. Проверяя ввод на нескольких уровнях, мы предотвращаем атаки SSRF, использующие уязвимые функции.

Защита от перепривязки DNS

Наш брандмауэр включает механизмы защиты от перепривязки DNS, которые обнаруживают и блокируют попытки использовать уязвимости перепривязки DNS. Это гарантирует, что ваш сайт останется защищенным, даже если такие базовые функции, как `wp_http_validate_url()`, уязвимы.

Безопасные API-запросы

WP-Firewall защищает запросы API, применяя строгие меры проверки и аутентификации. Это предотвращает несанкционированный доступ и снижает риск атак SSRF, нацеленных на конечные точки API.

Непрерывный мониторинг

Наши возможности непрерывного мониторинга позволяют внимательно следить за трафиком и активностью вашего сайта. Любое подозрительное поведение помечается и оперативно устраняется, что сводит к минимуму риск успешных атак SSRF.

Призыв к действию

Хотя неисправленная уязвимость WordPress SSRF представляет значительный риск, проактивные меры могут смягчить ее воздействие. Используя комплексные решения безопасности WP-Firewall, вы можете защитить свой сайт WordPress от атак SSRF и других новых угроз. Будьте на шаг впереди потенциальных уязвимостей и обеспечьте безопасную среду для своих пользователей с WP-Firewall.

Не ждите, пока нарушение безопасности примет меры. Защитите свой сайт WordPress сегодня с помощью WP-Firewall. Начните бесплатную пробную версию и ощутите душевное спокойствие, которое дает надежная защита в режиме реального времени.

Для получения дополнительной информации о том, как WP-Firewall может помочь защитить ваш сайт WordPress, посетите наш веб-сайт или свяжитесь с нашей службой поддержки.

Оставайтесь в безопасности, будьте в безопасности и защитите свой сайт WordPress с помощью WP-Firewall.

Еженедельные советы по безопасности

Получайте на свою электронную почту последние новости о безопасности WordPress. Подпишитесь на нашу рассылку и будьте в курсе последних угроз и лучших практик по защите вашего сайта WordPress.

Последние новости по безопасности

Ознакомьтесь со всеми последними рекомендациями по безопасности и будьте в курсе критических уязвимостей, влияющих на плагины и темы WordPress.

– 19 мая 2024 г.: Отчет об уязвимостях WordPress (с 6 мая 2024 г. по 12 мая 2024 г.)
– 15 мая 2024 г.: Исправлены уязвимости высокого приоритета в плагине Uncode Core


wordpress security update banner

Получайте WP Security Weekly бесплатно 👋
Зарегистрируйтесь сейчас
!!

Подпишитесь, чтобы каждую неделю получать обновления безопасности WordPress на свой почтовый ящик.

Мы не спамим! Читайте наши политика конфиденциальности для получения более подробной информации.