Что такое файл xmlrpc.php и как он влияет на безопасность сайтов WordPress


Что такое XML-RPC?

Согласно Википедии:

XML-RPC — это протокол удалённого вызова процедур (RPC), который использует XML для кодирования своих вызовов и HTTP в качестве транспортного механизма.

WordPress задействует этот протокол XML-RPC, который используется для обмена информацией между компьютерными системами по сети. Короче говоря, это система, которая позволяет вам публиковать сообщения в своём блоге WordPress с помощью популярных клиентов веб-журналов, таких как Windows Live Writer, или с помощью мобильного приложения WordPress. Она также необходима, если вы хотите подключиться к таким сервисам, как IFTTT.

Чертовски полезно, если подумать. Но это происходит за счёт рисков для безопасности. К примеру, Xmlrpc brute — инструмент брутфорса WordPress методом xmlrpc.

Это относится к моему сайту на WordPress?

В прошлом были проблемы с безопасностью XML-RPC, поэтому он был отключён по умолчанию.

Однако, начиная с WordPress 3.5.x, в WordPress по умолчанию включён XML-RPC из-за некоторых популярных плагинов WordPress, таких как Jetpack, даже собственное приложение WordPress для Android и iOS использует XML-RPC.

Распространённые уязвимости в XML-RPC

Проблема заключается не в самом XML-RPC, а в том, как файл может быть использован для атаки по подбору пароля на ваш сайт.

WordPress, в котором включён xmlrpc.php для ping-back, трекбэка и т. д., может использоваться злоумышленниками как часть огромного ботнета, вызывающего серьёзные DDoS-атаки.

Проверьте, включён ли xmlrpc.php

  1. Просто сделайте запрос GET к /xmlrpc.php на вашем сайте WordPress.
  2. Типичный путь до файла site.ru/xmlrpc.php, либо в той папке, куда вы выполнили установку: site.ru/wordpress/xmlrpc.php или site.ru/wp/xmlrpc.php.
  3. Если вы получите ответ от сервера: «Сервер XML-RPC принимает только запросы POST» (XML-RPC server accepts POST requests only), как показано на следующем изображении, это означает, что уязвимый файл xmlrpc.php включён.

Cross Site Port Attack(XSPA) или Подделка запросов на стороне сервера (Server Side Request Forgery(SSRF))

  1. Откройте свой прокси (я использую Burp Suite) и отправьте запрос, который мы сделали ранее, на вкладку репитера, чтобы мы могли управлять им.
  2. Теперь мы отправляем запрос POST и перечисляем все доступные методы. Почему? Потому что именно так мы узнаем, какие действия можно совершить, и потенциально использовать одно из них для атаки.
  3. Сделайте запрос POST к файлу xmlrpc.php со следующими данными POST (как показано на следующем изображении)
<methodCall>
<methodName>system.listMethods</methodName>
<params></params>
</methodCall>
  1. Вы получите ответ со списком всех доступных методов.

Получен успешный ответ со списком всех доступных методов.

Если вам удалось найти строку pingback.ping в списке методов, тогда файл xmlrpc.php потенциально может быть использован для того, чтобы вызвать DDoS-атаку против хоста жертвы.

Это достигается следующим образом:

  1. Поскольку мы хотим, чтобы сервер отправлял нам ответный эхо-запрос, нам нужен общедоступный IP-адрес/сервер для прослушивания. В этом примере я использую ngrok для размещения сервера socat, прослушивающего HTTP-порт 80.
  2. Для этого используются следующие команды:
sudo apt install socat 
sudo socat tcp-listen:80,reuseaddr,fork -
./ngrok http 80

Для той же цели можно использовать простой webhook.site.

  1. Теперь просто отправьте запрос POST со следующими данными XML (как показано на изображении).
<?xml version=”1.0" encoding=”UTF-8"?>
<methodCall>
<methodName>pingback.ping</methodName>
<params>
<param>
<value><string>ВАШ_СЕРВЕР:ВАШ_ПОРТ</string></value>
</param>
<param>
<value><string>URL_ДО_ВАЛИДНОГО_БЛОГА_НА_ВЕБСАЙТЕ</string></value>
</param>
</params>
</methodCall>

Здесь нужно заполнить 2 вещи:

(i) IP адрес вашего сервера

(ii) Ссылка на какой-нибудь действительный пост с сайта WordPress, который используется для обратного отклика.


Как только вышеупомянутый запрос отправлен, хост-жертва (115.97.xxx.67tunneling через ngrok) получает запись в своём файле журнала с запросом, исходящим из домена WordPress, подтверждающим ответный пинг. Что видно на скриншоте выше.

Влияние

Это можно автоматизировать с нескольких хостов и использовать для массовых DDoS-атак на жертву.


Этот метод также используется для атак брут-форса паролей с целью кражи учётных данных администратора и других важных учётных данных.

Кроме того, в сети существует множество PoC, касающихся уязвимостей, связанных с XMLRPC.php на веб-сайтах WordPress, некоторые из них: https://www.rapid7.com/db/modules/exploit/unix/webapp/php_xmlrpc_eval

Как отключить WordPress XML-RPC

Есть несколько способов отключить файл xmlrpc.php: как просто заблокировав к нему доступ (даже не потребуется установка плагинов), так и с помощью плагинов WordPress.

Отключение WordPress XML-RPC в .htaccess

Вы можете отключить XML-RPC с помощью файла .htaccess или плагина. .htaccess — это файл конфигурации, который вы можете создавать и изменять.

Просто вставьте следующий код в свой файл .htaccess, находящийся в корне вашего сайта WordPress (решение использует mod_rewrite):

# Блокировка запросов на файл WordPress xmlrpc.php
RewriteRule ^xmlrpc\.php - [NC,F]

Альтернативный вариант:

# Блокировка запросов на файл WordPress xmlrpc.php
<Files xmlrpc.php>
	Require all denied
</Files>

Это должно отключит XML-RPC на вашем сайте WordPress.

Отключение WordPress XML-RPC в iThemes Security

iThemes Security — отличный плагин, который позволяет повысить безопасность сайтов на WordPress.

Чтобы заблокировать в нём XML-RPC, перейдите в настройки плагина и найдите там пункт «Подстройка WordPress» — по умолчанию этот раздел отключён, включите и его и найдите два пункта.

Первая настройка:

XML-RPC

XML-RPC позволяет внешним сервисам получать доступ и изменять содержимое сайта. В частности примером могут служить Jetpack, WordPress мобильное приложение, и пингбэки

Доступные варианты настройки:

  • Отключить XML-RPC — XML-RPC отключён, это очень рекомендуется если Вы не используете Jetpack, мобильные приложения WordPress, пингбэки или другие сервисы использующие XML-RPC.
  • Отключить пингбэки — Отключить только пингбэк. Другие возможности XML-RPC будут работать. Используйте если Вам нужна поддержка мобильных приложений WordPress или Jetpack.
  • Включить XML-RPC — XML-RPC полностью включён. Используйте если сайт не должен ограничивать использование XML-RPC.

Вторая настройка:


Множественные попытки аутентификации запросом XML-RPC

Возможности в XML-RPC позволяют сотни попыток перебора логина/пароля пользователя в одном запросе (в WordPress < 4.4) . Используйте блокировку чтобы предотвратить этот тип атаки.

Доступные варианты настройки:

  • Блокировать — Блокирует XML-RPC запросы с множественными попытками авторизации. Очень рекомендуется.
  • Разрешить — Разрешает XML-RPC запросы с множественной авторизацией. Включайте только если знаете что используете сервис, который требует это.

Плагины WordPress для управления XML-RPC

Здесь стоит упомянуть, что такие плагины, как плагин Remove XML-RPC Pingback Ping, позволяют отключать только функцию pingback вашего сайта — если это именно то, что вам нужно, то вы можете воспользоваться им и вам не нужно полностью отключать XML-RPC.

Ещё один плагин, который может вам помочь: Manage XML-RPC.

Поскольку многие популярные приложения и плагины используют XML-RPC для выполнения некоторых собственных функций. В этом случае вы можете рассмотреть возможность включения только некоторых частей XML-RPC, которые вам нужны для правильного запуска ваших плагинов.

Источник: https://blog.wpsec.com/xml-rpc/


Рекомендуется Вам:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *