Какво представлява файлът xmlrpc.php в WordPress и какво трябва да знаеш за сигурността на уебсайта?

Още един момент, в който трябва да провериш сигурността на твоя WordPress сайт. Не е трудно, ако следваш тези указания.

XML-RPC (Remote Procedure Call eXtensible Markup Language) е технология, която позволява комуникация между различни системи, използващи HTTP протокола. ​Файлът xmlrpc.php в WordPress е въведен от първите версии. Той позволява на външни приложения да взаимодействат със сайта.

Например: позволява на потребителите да публикуват статии от своя смартфон, да използват инструменти за дистанционно управление или да свързват услуги на трети страни, като приложения за блогове и софтуер за настолен компютър.

Какво представлява файлът xmlrpc.php в WordPress
Какво представлява файлът xmlrpc.php в WordPress

За какво служи XMLRPC в WordPress

​​Преди да се роди системата WordPress за управление на съдържанието, XMLRPC вече e съществувала – за комуникация между две системи. Тя се e намирала в платформата за блогове b2 – разклонение, от която се роди WordPress.

WordPress наследи тази система, базирана на Remote Procedure Call (RPC), използвана още преди API да станат широко разпространени.

XMLRPC се намира в основната папка. До версия 3.5 на WordPress е деактивирана ​заради проблеми със сигурността. ​Въпреки това, считано от WordPress 3.5.x, WordPress има XML-RPC активирана по подразбиране. Нуждата се е появила заради някои популярни WordPress плъгини като Jetpack. Дори собственото приложение на WordPress за Android и iOS използва XML-RPC.

Тази функция също така служи, за да накара множество платформи за блогове да комуникират с pingbacks1. Това са системи за уведомяване за цитирания.

Накратко, файлът xmlrpc.php в WordPress действа като интерфейс, който позволява:

  • дистанционно публикуване на статии и страници;
  • управление на коментари;
  • зареждане на медийни файлове;
  • интеграция с мобилни приложения;
  • синхронизация с външни услуги.

​Протоколът е бил особено полезен в ранните дни на интернет, когато скоростта на връзката ограничавала възможността за работа със съдържание. ​

Днес това е остаряла функция, която няма причина да съществува. ​Сега протоколът ​XML-RPC е заменен от WordPress REST API, който работи много по-добре като връзка между WordPress и други приложения. ​Използването на XML-RPC на днешни дни става за сметка на рискове за сигурността.

Какви са те, ще разбереш, ако продължиш да четеш.

Какви са потенциалните заплахи от ​XML-RPC?

Въпреки предимствата си, XML-RPC представлява потенциален риск за сигурността на WordPress сайта. Ето някои от най-често срещаните заплахи:

1. Атаки с груба сила (​brute force2)

Време за brute force атаки
Инфографика, показваща времето, необходимо за груба форсиране на парола с помощта на 12 x RTX 4090 GPU срещу алгоритъма за хеширане на парола bcrypt. Източник Wikimedia

С всяка заявка xmlrpc.php изпраща потребителско име и парола за удостоверяване. Това, както разбираш, представлява сериозен риск за сигурността. За щастие REST API използва различен метод – „OAuth“, който ​вместо потребителски имена или пароли, ​за удостоверяване изпраща токени.

Атака като тази, наречена ​brute force, ако е успешна, може да позволи на хакери да вмъкнат съдържание, да премахнат код или да повредят базата данни.

​Благодарение на функцията „system.multicall“ е възможно да изпратят стотици или хиляди заявки за влизане в една връзка, което прави атаката по-бърза от традиционните опити за влизане. ​При това, особено ако е използвано потребителско име admin и лесно разбиваема парола, има вероятност нападателят в крайна сметка да удари правилната комбинация и да получи достъп до сайта.

2. DDoS3 (Distributed Denial of Service) атаки

DDoS (Distributed Denial of Service) атаки
DDoS (Distributed Denial of Service) атаки, източник Wikimedia

Една от функциите, внедрени в xmlrpc.php, е била pingbacks и trackbacks. Това са известия, които се появяват в коментарите на твоя сайт, когато друг блог или сайт има връзка към твоето съдържание.

Тази комуникация е станала възможна благодарение на протокола XML-RPC, но е заменена от REST API (както вече писах по-горе).

На сайт с активирана XML-RPC, файлът xmlrpc.php в WordPress, ​би могъл да бъде използван от хакери, за да стартират DDoS атака. Чрез него ще изпратят голям брой pingbacks за кратко време. Това може да претовари сървъра, на който е сайтът, и да го срине.

3. Дистанционно изпълнение на код

Отдалеченото изпълнение на код (RCE​remote code execution) е една от най-сериозните заплахи, свързани с XML-RPC. Тази уязвимост позволява на атакуващ да изпълнява произволни команди на сървъра, хостващ WordPress. В миналото пропуските в сигурността на XML-RPC са били използвани за зареждане на зловреден софтуер (malware), създаване на задни вратички (​backdoor) или пълно компрометиране на целостта на сайта. RCE атака може да възникне, когато въвеждането, предоставено чрез XML-RPC, не е правилно валидирано.

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

4. ​ Информационен шпионаж

Използвайки специално създадени XML-RPC заявки, нападателите могат да извлекат информация за инсталиране на WordPress. Това включва версията на WordPress, инсталираните плъгини и теми, които могат да разкрият потенциални уязвимости.

Познавайки версията на софтуера и инсталираните компоненти, атакуващите могат да идентифицират всички известни пропуски в сигурността и да ги използват, за да компрометират сайта.

Този тип атака е особено коварна, защото може да се случи без администраторът на сайта веднага да разбере.

Виж още: Какво са XSS атаките и как да избегнеш уязвимостите в твоя уебсайт

Как да защитиш своя WordPress сайт от XML-RPC атаки

Ако твоят сайт не използва активно XML-RPC, препоръчително е да я деактивираш, за да намалиш риска. Ето някои стратегии за защита на твоя сайт:

Как да провериш дали ​функцията XML-RPC е активна

За да провериш дали XML-RPC е активна на твоя WordPress сайт, можеш да следваш следните стъпки:

1. Използвай браузър или инструмент като cURL4.

Отвори браузъра си и посети https://yourdomain.com/xmlrpc.php.

Ако функцията XML-RPC е активна, ще видиш съобщение като „​XML-RPC server accepts POST requests only„. Това показва, че файлът xmlrpc.php е достъпен. ​

Ако обаче получиш грешка 404 или 403 (Forbidden You don’t have permission to access this resource), тази функция може вече да е деактивирана или блокирана.

Като алтернатива можеш да използваш cURL от терминала:

curl -X POST -d https://yourdomain.com/xmlrpc.php

Ако получиш отговор, подобен на първото съобщение по-горе, XML-RPC е активна.

2. ​Използване на плъгини

Няколко добавки за сигурност на WordPress предлагат диагностични инструменти за XML-RPC:

  • Wordfence: Включва специален раздел в своя скенер.
  • Security Ninja: Предлага специфични тестове за XML-RPC.
  • ​WP Security Audit Log: Наблюдава и регистрира XML-RPC дейности.

Виж още: Използването на плъгини за защита на WordPress сайт и за сканиране на сигурността

3. За да провериш дали xmlrpc.php е активиран на твоя сайт, използвай услугата за валидиране на XML-RPC на WordPress.

Услуга за валидиране на XML-RPC
Услуга за валидиране на XML-RPC

Вижда се, че на моя блог файлът xmlrpc.php в WordPress не е достъпен – връща грешка 403.

Ако ​XML-RPC е все още активна на твоя сайт, ето как да я деактивираш:

Деактивиране не XML-RPC

1. Можеш да деактивираш XML-RPC с помощта на плъгини за сигурност като ​Disable XML-RPC-API или като редактираш ръчно файла .htaccess:

Забележка: Направи си копие на стария файл .htaccess, преди да го промениш.

​​Свържи се със сървъра на твоя сайт. Отвори директорията му. Това обикновено е /public-html

Тя съдържа файла ​.htaccess. Отвори го за редактиране.

Отвори файл .htaccess за редактиране
Отвори файл .htaccess за редактиране

Напиши следното:

# ​Block access to xmlrpc.php
<Files xmlrpc.php>
Order Allow,Deny
Deny from all
</Files>

​2. Ограничение на достъпа.

Ако имаш нужда от XML-RPC, ограничи достъпа само до оторизирани IP адреси:

​<Files xmlrpc.php>
Order Allow,Deny
Allow from 123.123.123.123
Deny from all
</Files>

3. ​ Редактиране на wp-config.php

Забележка: Направи си копие на стария файл wp-config.php, преди да го промениш.

​Свържи се със сървъра. Отвори директорията на твоя уебсайт Това обикновено е /public-html

Тя съдържа файла wp-config.php. Отвори го за редактиране.

Отвори фаил wp-config.php за редактиране
Отвори фаил wp-config.php за редактиране

​ Намери реда:

require_once(ABSPATH . 'wp-settings.php');

​ След него добави:

add_filter('xmlrpc_enabled', '__return_false');

Допълнителни добри практики

Активно наблюдение

Организирай си наблюдение за откриване на подозрителни опити за влизане. Редовно проверявай регистрационните файлове на сървъра, за да идентифицираш необичайна дейност, ако това се случи. Конфигурирай автоматични сигнали за известия в реално време.

Двуфакторно удостоверяване

Внедри двуфакторно удостоверяване (2FA) за всички административни акаунти, добавяйки допълнителен слой на сигурност, дори в случай на компрометирани идентификационни данни.

Редовни актуализации

Поддържай WordPress, всички плъгини и теми актуални, за да се възползваш от най-новите корекции за сигурност.

Ако xmlrpc.php е уязвим и вече не е необходим, защо не е напълно премахнат от WordPress?

Защо тази функция остава?

Ако работата по комуникацията между две системи днес се извършва от по-сигурни и усъвършенствани механизми, защо се поддържа тази система? Все още ли е полезна?

В някои случаи може да помислиш да активираш и използваш xmlrpc.php, например когато не е възможно да използваш WordPress REST API, който ти позволява да комуникираш с външни приложения с по-голяма сигурност.

Дали има все още ​уеб администратори, които не искат или не могат да актуализират всичко периодично и използват версия преди REST API (т.е. преди ​WordPress 4.4), и се нуждаят от достъп до xmlrpc.php?

Заключение

XML-RPC представлява мощен, но потенциално рисков компонент на екосистемата на WordPress. Ключът към безопасното му използване е намирането на правилния баланс между функционалност и защита. Внимателно прецени дали твоята инсталация на WordPress наистина се нуждае от XML-RPC и ако не, не се колебай да го деактивираш. Ако е необходим, приложи всички необходими мерки за сигурност, за да защитиш сайта си.

  1. Pingback е протокол, дефиниран от Stuart Langridge и Ian Hickson, за да позволи на блогъри и уеб автори да получат известие, когато друг уебсайт вмъкне връзка към един от техните документи и след това, като цяло, да ги изброи в края на самия документ. ↩︎
  2. Атаките с груба сила (brute force) се състоят от разбиване на парола чрез изпробване на всички възможни комбинации от букви, специални символи и цифри. ↩︎
  3. DDoS атака означава „Разпределена атака за отказ на услуга (DDoS)“ и представлява киберпрестъпление, при което атакуващият наводнява сървър с интернет трафик, за да попречи на потребителите да имат достъп до свързани онлайн услуги и сайтове.
    Мотивите за извършване на DDoS варират значително, както и видовете лица и организации, които желаят да извършат тази форма на кибератака. Някои атаки се извършват от недоволни лица и хакерски активисти, които искат да свалят сървърите на компания просто за да направят изявление, да се забавляват, използвайки кибер слабостите, или да изразят неодобрение. ↩︎
  4. cURL е софтуер, който предоставя библиотека (libcurl) и интерфейс на командния ред (curl), които могат да се използват за прехвърляне на данни и файлове чрез множество протоколи. Името означава „Клиент за URL“ (Client for URL) ↩︎

Ако ви е харесала публикацията, споделете я:

Оставете коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните ви за коментари.