xml rpc что такое
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Что такое файл 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
Cross Site Port Attack(XSPA) или Подделка запросов на стороне сервера (Server Side Request Forgery(SSRF))
Получен успешный ответ со списком всех доступных методов.
Если вам удалось найти строку pingback.ping в списке методов, тогда файл xmlrpc.php потенциально может быть использован для того, чтобы вызвать DDoS-атаку против хоста жертвы.
Это достигается следующим образом:
Для той же цели можно использовать простой webhook.site.
Здесь нужно заполнить 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.
Просто вставьте следующий код в свой файл .htaccess, находящийся в корне вашего сайта WordPress:
Это должно отключит XML-RPC на вашем сайте WordPress.
Отключение WordPress XML-RPC в iThemes Security
iThemes Security — отличный плагин, который позволяет повысить безопасность сайтов на WordPress.
XML-RPC
XML-RPC позволяет внешним сервисам получать доступ и изменять содержимое сайта. В частности примером могут служить Jetpack, WordPress мобильное приложение, и пингбэки
Доступные варианты настройки:
Множественные попытки аутентификации запросом XML-RPC
Возможности в XML-RPC позволяют сотни попыток перебора логина/пароля пользователя в одном запросе (в WordPress
Что такое xmlrpc.php в WordPress и зачем его отключать
В WordPress всегда был встроенный инструмент для удалённого обращения к вашему сайту. Действительно, иногда нужно добраться до своего сайта, а компьютер далеко от вас. Длительное время решением был файл под названием xmlrpc.php. Однако последние годы этот файл стал большей проблемой, чем решением.
Ниже мы подробнее разберём xmlrpc.php и почему он был создан. Мы также рассмотрим общие проблемы безопасности, которые он может вызвать и как их исправить для вашего сайта на WordPress.
Что такое Xmlrpc.php?
XML-RPC – это функциональное средство WordPress, которое позволяет передавать данные, с HTTP выступающим в качестве транспорта и XML – для кодирования. Поскольку WordPress не является закрытой системой и часто общается с другими системами, для этой задачи были найдены решения.
Например, скажем вы хотите сделать публикацию на своём сайте с вашего мобильного телефона. Вам нужно использовать удалённый доступ предоставляемый xmlrpc.php.
Главным функционалом xmlrpc.php являются возможность подключаться к сайту со смартфона, реализация трекбеков и линкбеков с других сайтов и некоторые функции, связанные с плагином Jetpack.
Зачем был создан Xmlrpc.php и как он использовался?
Реализация XML-RPC уходит далеко в ранние дни WordPress и даже до того, как WordPress стал WordPress-ом.
Возвращаясь в те времена, когда интернет только недавно появился, соединения были очень медленными и процесс записи и публикации в вебе был намного сложнее и времязатратнее. Вместо внесения изменений сразу через браузер, большинство делали их в офлайне и потом копировали и вставляли свой контент уже онлайн. И этот процесс был далёк от идеала.
Решением (на тот момент) было создание клиента для офлайн блоггинга, где вы могли составлять свой контент, затем подключаться к своему блогу и публиковать его. Это подключение осуществлялось через XML-RPC. С основным функционалом XML-RPC ранние приложения используя подобные подключения предоставляли людям возможность заходить на их сайты WordPress с других устройств.
XML-RPC сегодня
В 2008 году с версией 2.6 WordPress, появилась опция включения и выключения XML-RPC. Однако с релизом WordPress приложения для iPhone, поддержка XML-RPC была включена по умолчанию и не было возможности для отключения. Так осталось и поныне.
Конечно функциональность, предоставляемая этим файлом значительно уменьшилась со временем, и размер файла уменьшился с 83kb до 3kb, он уже не играет такой роли, как прежде.
Свойства XML-RPC
С новым интерфейсом программирования приложений (API) WordPress мы можем ожидать, что XML-RPC будет уже отключён полностью. Сегодня этот новый API всё ещё на этапе испытаний и может быть включён только через специальный плагин.
Хотя вы можете ожидать, что API будет включён непосредственно в ядро WordPress в будущем, что полностью исключит необходимость использования xmlrpc.php.
Новый API не идеален, но он обеспечивает хорошую надёжную защиту, в отличие от xmlrpc.php.
Зачем отключать Xmlrpc.php
Самой большой проблемой, связанной с XML-RPC, является безопасность. Проблема не напрямую связана с XML-RPC, но его можно использовать для включения атаки на ваш сайт.
Конечно вы можете защититься очень надёжный паролем и плагинами WordPress, обеспечивающими безопасность. Но лучшим режимом защиты будет просто его отключить.
Есть два основных слабых места XML-RPC, которые использовали в прошлом.
Первое – использует атаку путём прямого подбора пароля (brute force attacks) для получения доступа к вашему сайту. Атакующий попытается получить доступ к вашему сайту, используя xmlrpc.php подбирая различные комбинации имён пользователей и паролей. Они могут эффективно использовать одну команду для тестирования сотен различных паролей. Это позволяет им обходить инструменты безопасности, которые обычно обнаруживают и блокируют атаки прямого подбора.
Второе – перевод сайта в офлайн путём DDoS атаки. Хакеры будут использовать обратное уведомление в WordPress для отправки его тысячам сайтов одновременно. Этот функционал xmlrpc.php даёт хакерам почти бесконечное количество IP-адресов для распространения атаки DDoS.
Чтобы проверить, работает ли XML-RPC на вашем сайте, вы можете запустить его с помощью инструмента под названием XML-RPC Validator. Запустите свой сайт с помощью инструмента, и если вы получите сообщение об ошибке, значит, у вас нет поддержки XML-RPC.
Если вы получите сообщение об успешном завершении, вы можете остановить xmlrpc.php одним из двух подходов ниже.
Метод 1: отключение Xmlrpc.php при помощи плагина
Отключить XML-RPC на вашем сайте WordPress невероятно просто.
Перейдите в раздел Плагины › Добавить новый в вашей админ консоли WordPress. Найдите плагин Disable XML-RPC и установите его, он выглядит как на картинке ниже:
Активируйте плагин и всё готово. Этот плагин автоматически вставит необходимый код для отключения XML-RPC.
Однако помните, что установленные плагины могут использовать части XML-RPC, и тогда его отключение может вызвать конфликт плагинов или отдельных их частей и вывод их из рабочего режима.
Если вы хотите только отключить отдельные элементы XML-RPC, но позволить другим плагинам и функциям работать, тогда обратитесь к таким плагинам:
Метод 2: отключение Xmlrpc.php вручную
Если вы не хотите использовать плагин и предпочитаете делать это вручную, следуйте этому подходу. Он остановит все входящие запросы xmlrpc.php до того, как он будет передан в WordPress.
Вставьте этот код в файл .htaccess:
Заключительные мысли
В целом, XML-RPC был добротным решением некоторых проблем, которые возникали из-за удаленной публикации на вашем сайте WordPress. Однако вместе с тем появились некоторые дыры в безопасности, которые оказались довольно опасными для некоторых владельцев сайтов на WordPress.
Чтобы ваш сайт оставался в безопасности, рекомендуется полностью отключить xmlrpc.php, если вам не нужны некоторые функции, необходимые для удаленной публикации и плагина Jetpack. Затем вы можете использовать обходные плагины, которые позволяют использовать эти функции, при этом исправляя дыры в безопасности.
Со временем мы можем ожидать, что функции XML-RPC станут интегрированными в новый WordPress API, который будет поддерживать удаленный доступ, не жертвуя безопасностью.
Вы заблокировали доступ к XML-RPC через плагин или вручную? Или возникли какие-либо проблемы с безопасностью из-за того, что он был прежде активным? Поделитесь своим опытом в комментариях ниже.
Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.
XML-RPC — Краткое руководство
RPC обозначает Удаленный вызов процедур. Как видно из его названия, это механизм для вызова процедуры или функции, доступной на удаленном компьютере. RPC — намного более старая технология, чем Интернет. По сути, RPC предоставляет разработчикам механизм определения интерфейсов, которые можно вызывать по сети. Эти интерфейсы могут быть простыми, как один вызов функции, или сложными, как большой API.
Что такое XML-RPC?
XML-RPC — один из самых простых и надежных подходов к веб-сервисам, который позволяет компьютерам легко вызывать процедуры на других компьютерах.
XML-RPC позволяет программам выполнять вызовы функций или процедур по сети.
XML-RPC использует протокол HTTP для передачи информации с клиентского компьютера на серверный компьютер.
XML-RPC использует небольшой словарь XML для описания характера запросов и ответов.
Клиент XML-RPC указывает имя процедуры и параметры в запросе XML, а сервер возвращает либо ошибку, либо ответ в ответе XML.
Параметры XML-RPC представляют собой простой список типов и содержимого. Структуры и массивы являются наиболее сложными доступными типами.
XML-RPC не имеет понятия об объектах и не имеет механизма для включения информации, которая использует другой словарь XML.
Однако с помощью XML-RPC и веб-сервисов Интернет становится набором процедурных соединений, в которых компьютеры обмениваются информацией по тесно связанным путям.
XML-RPC появился в начале 1998 года; оно было опубликовано UserLand Software и первоначально внедрено в их продукт Frontier.
XML-RPC позволяет программам выполнять вызовы функций или процедур по сети.
XML-RPC использует протокол HTTP для передачи информации с клиентского компьютера на серверный компьютер.
XML-RPC использует небольшой словарь XML для описания характера запросов и ответов.
Клиент XML-RPC указывает имя процедуры и параметры в запросе XML, а сервер возвращает либо ошибку, либо ответ в ответе XML.
Параметры XML-RPC представляют собой простой список типов и содержимого. Структуры и массивы являются наиболее сложными доступными типами.
XML-RPC не имеет понятия об объектах и не имеет механизма для включения информации, которая использует другой словарь XML.
Однако с помощью XML-RPC и веб-сервисов Интернет становится набором процедурных соединений, в которых компьютеры обмениваются информацией по тесно связанным путям.
XML-RPC появился в начале 1998 года; оно было опубликовано UserLand Software и первоначально внедрено в их продукт Frontier.
Почему XML-RPC?
Если вам нужно интегрировать несколько вычислительных сред, но вам не нужно обмениваться сложными структурами данных напрямую, вы обнаружите, что XML-RPC позволяет быстро и легко устанавливать связь.
Даже если вы работаете в одной среде, вы можете обнаружить, что подход RPC упрощает подключение программ, которые имеют разные модели данных или ожидания обработки, и что он может обеспечить легкий доступ к повторно используемой логике.
XML-RPC является отличным инструментом для установления различных соединений между компьютерами.
XML-RPC предлагает интеграторам возможность использовать стандартный словарь и подход для обмена информацией.
Наиболее очевидная область применения XML-RPC — это подключение различных сред, позволяющих Java общаться с Perl, Python, ASP и так далее.
XML-RPC является отличным инструментом для установления различных соединений между компьютерами.
XML-RPC предлагает интеграторам возможность использовать стандартный словарь и подход для обмена информацией.
Наиболее очевидная область применения XML-RPC — это подключение различных сред, позволяющих Java общаться с Perl, Python, ASP и так далее.
Технический обзор XML-RPC
XML-RPC состоит из трех относительно небольших частей:
Модель данных XML-RPC : набор типов для использования при передаче параметров, возвращаемых значений и ошибок (сообщений об ошибках).
Структуры запросов XML-RPC : HTTP-запрос POST, содержащий информацию о методах и параметрах.
Структуры ответов XML-RPC : HTTP-ответ, содержащий возвращаемые значения или информацию об ошибках.
Модель данных XML-RPC : набор типов для использования при передаче параметров, возвращаемых значений и ошибок (сообщений об ошибках).
Структуры запросов XML-RPC : HTTP-запрос POST, содержащий информацию о методах и параметрах.
Структуры ответов XML-RPC : HTTP-ответ, содержащий возвращаемые значения или информацию об ошибках.
Мы будем изучать все эти три компонента в следующих трех главах.
XML-RPC — модель данных
Спецификация XML-RPC определяет шесть основных типов данных и два составных типа данных, которые представляют комбинации типов.