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

xml rpc что такое. Смотреть фото xml rpc что такое. Смотреть картинку xml rpc что такое. Картинка про xml rpc что такое. Фото xml rpc что такое

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

xml rpc что такое. Смотреть фото xml rpc что такое. Смотреть картинку xml rpc что такое. Картинка про xml rpc что такое. Фото xml rpc что такое

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

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

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

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

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

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

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

xml rpc что такое. Смотреть фото xml rpc что такое. Смотреть картинку xml rpc что такое. Картинка про xml rpc что такое. Фото xml rpc что такое

Как только вышеупомянутый запрос отправлен, хост-жертва (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 что такое. Смотреть картинку xml rpc что такое. Картинка про xml rpc что такое. Фото xml rpc что такое

XML-RPC

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

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

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

Возможности в XML-RPC позволяют сотни попыток перебора логина/пароля пользователя в одном запросе (в WordPress

Источник

Что такое xmlrpc.php в WordPress и зачем его отключать

xml rpc что такое. Смотреть фото xml rpc что такое. Смотреть картинку xml rpc что такое. Картинка про xml rpc что такое. Фото xml rpc что такое

В 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 что такое. Картинка про xml rpc что такое. Фото 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 определяет шесть основных типов данных и два составных типа данных, которые представляют комбинации типов.

Основные типы данных в XML-RPC

Следующий массив содержит четыре целых числа:

Массивы также могут содержать смеси разных типов, как показано здесь:

Создание многомерных массивов просто — просто добавьте массив внутри массива:

Простая структура может выглядеть так:

Таким образом, вы можете реализовать практически все типы данных, поддерживаемые любым языком программирования.

XML-RPC — формат запроса

Запросы XML-RPC представляют собой комбинацию содержимого XML и заголовков HTTP. Содержимое XML использует структуру типизации данных для передачи параметров и содержит дополнительную информацию, определяющую, какая процедура вызывается, а заголовки HTTP предоставляют оболочку для передачи запроса через Интернет.

Заголовки HTTP для этих запросов будут отражать отправителей и содержимое. Базовый шаблон выглядит следующим образом:

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

Это обычный HTTP-запрос с тщательно сконструированной полезной нагрузкой.

XML-RPC — Формат ответа

Ответы очень похожи на запросы, с несколькими дополнительными поворотами. Если ответ успешен — процедура была найдена, выполнена правильно и вернула результаты — тогда ответ XML-RPC будет очень похож на запрос, за исключением того, что элемент methodCall заменяется элементом methodResponse, а элемент methodName отсутствует:

Ответ XML-RPC может содержать только один параметр.

Этот параметр может быть массивом или структурой, поэтому можно возвращать несколько значений.

Всегда требуется возвращать значение в ответе. «Значение успеха» — возможно, логическое значение true (1).

Ответ XML-RPC может содержать только один параметр.

Этот параметр может быть массивом или структурой, поэтому можно возвращать несколько значений.

Всегда требуется возвращать значение в ответе. «Значение успеха» — возможно, логическое значение true (1).

Как и запросы, ответы упакованы в HTTP и имеют заголовки HTTP. Все ответы XML-RPC используют код ответа 200 OK, даже если в сообщении содержится ошибка. Заголовки используют общую структуру, аналогичную структуре запросов, и типичный набор заголовков может выглядеть следующим образом:

XML-RPC требует только поддержки HTTP 1.0, но HTTP 1.1 совместим.

Тип содержимого должен быть установлен на text / xml.

Заголовок Content-Length указывает длину ответа в байтах.

XML-RPC требует только поддержки HTTP 1.0, но HTTP 1.1 совместим.

Тип содержимого должен быть установлен на text / xml.

Заголовок Content-Length указывает длину ответа в байтах.

Полный ответ с заголовками и полезной нагрузкой будет выглядеть следующим образом:

После доставки ответа от сервера XML-RPC клиенту XML-RPC соединение закрывается. Последующие запросы необходимо отправлять как отдельные соединения XML-RPC.

XML-RPC — формат ошибок

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

Реакция на ошибку также может выглядеть так:

XML-RPC — Примеры

Чтобы продемонстрировать XML-RPC, мы собираемся создать сервер, который использует Java для обработки сообщений XML-RPC, и мы создадим Java-клиент для вызова процедур на этом сервере.

Java-часть беседы использует Apache XML-RPC Apache XML Project, доступный по адресу http://xml.apache.org/xmlrpc/.

XML-RPC клиент

Давайте посмотрим, что произошло в приведенном выше примере клиента.

Пакет Java org.apache.xmlrpc содержит классы для клиентов Java XML-RPC и сервера XML-RPC, например XmlRpcClient.

Пакет java.util необходим для класса Vector.

Функция server.execute (…) отправляет запрос на сервер. Сумма процедуры (17,13) вызывается на сервере, как если бы это была локальная процедура. Возвращаемым значением вызова процедуры всегда является Object.

Здесь «образец» обозначает обработчик, который определен на сервере.

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

Класс XmlRpcClient создается путем указания «веб-адреса» сервера, за которым следует / RPC2.

localhost — означает локальный компьютер

Вы можете указать номер IP вместо localhost, например, 194.80.215.219

Вы можете указать доменное имя как xyz.dyndns.org

Вы можете указать номер порта вместе с именем домена как xyz.dyndns.org:8080. Порт по умолчанию — 80

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

Пакет Java org.apache.xmlrpc содержит классы для клиентов Java XML-RPC и сервера XML-RPC, например XmlRpcClient.

Пакет java.util необходим для класса Vector.

Функция server.execute (…) отправляет запрос на сервер. Сумма процедуры (17,13) вызывается на сервере, как если бы это была локальная процедура. Возвращаемым значением вызова процедуры всегда является Object.

Здесь «образец» обозначает обработчик, который определен на сервере.

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

Класс XmlRpcClient создается путем указания «веб-адреса» сервера, за которым следует / RPC2.

localhost — означает локальный компьютер

Вы можете указать номер IP вместо localhost, например, 194.80.215.219

Вы можете указать доменное имя как xyz.dyndns.org

Вы можете указать номер порта вместе с именем домена как xyz.dyndns.org:8080. Порт по умолчанию — 80

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

Из-за вышеуказанного вызова клиент отправляет на сервер следующее сообщение. Обратите внимание, что это обрабатывается внутри server.execute (…), и вы не имеете к этому никакого отношения.

XML-RPC сервер

Ниже приведен исходный код сервера XML-RPC, написанный на Java. Он использует встроенные классы, доступные в org.apache.xmlrpc. *

Давайте посмотрим, что мы сделали на приведенном выше примере сервера.

Пакет org.apache.xmlrpc содержит класс WebServer для реализации сервера XML-RPC.

Сумма процедуры, которая вызывается удаленно, реализована как открытый метод в классе.

Экземпляр того же серверного класса затем связывается с обработчиком, который доступен клиенту.

Сервер инициализируется номером порта (здесь: 80).

Пакет org.apache.xmlrpc содержит класс WebServer для реализации сервера XML-RPC.

Сумма процедуры, которая вызывается удаленно, реализована как открытый метод в классе.

Экземпляр того же серверного класса затем связывается с обработчиком, который доступен клиенту.

Сервер инициализируется номером порта (здесь: 80).

Для вызова, упомянутого в данном примере клиента, сервер отправляет клиенту следующий ответ:

Теперь ваш сервер готов, поэтому скомпилируйте и запустите его, как показано ниже:

Теперь, чтобы проверить функциональность, позвоните на этот сервер следующим образом:

XML-RPC — Резюме

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

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

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

Что дальше?

Следующим шагом является изучение WSDL и SOAP.

WSDL — это язык на основе XML для описания веб-сервисов и способов доступа к ним.

WSDL описывает веб-службу, а также формат сообщения и подробности протокола для веб-службы.

SOAP — это простой протокол на основе XML, который позволяет приложениям обмениваться информацией по HTTP.

Источник

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

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

ТипЗначениеПримеры
int или i432-разрядные целые числа от — 2 147 483 648 до 2 147 483 647.
base64Двоичная информация, закодированная как Base 64, как определено в RFC 2045