Kompletny przewodnik po xmlrpc.php w WordPress (co to jest, zagrożenia bezpieczeństwa, jak to wyłączyć)

Opublikowany: 2020-07-06

Specyfikacja XML-RPC WordPress została opracowana w celu standaryzacji komunikacji między różnymi systemami, co oznacza, że ​​aplikacje spoza WordPressa (takie jak inne platformy blogowe i klienty stacjonarne) mogą wchodzić w interakcje z WordPress.

Ta specyfikacja jest częścią WordPressa od samego początku i wykonała bardzo pożyteczną pracę. Bez tego WordPress byłby we własnym silosie, oddzielony od reszty internetu.

Jednak xmlrpc.php ma swoje wady. Może wprowadzać luki w Twojej witrynie WordPress i został zastąpiony przez WordPress REST API, który znacznie lepiej otwiera WordPressa na inne aplikacje.

W tym poście wyjaśnimy, czym jest xmlrpc.php, dlaczego należy go wyłączyć i pomożemy określić, czy jest on uruchomiony w witrynie WordPress.

Gotowy? Zanurzmy się!

Co to jest xmlrpc.php?

XML-RPC to specyfikacja, która umożliwia komunikację między WordPressem a innymi systemami. Dokonał tego poprzez standaryzację tej komunikacji, używając HTTP jako mechanizmu transportu i XML jako mechanizmu kodowania.

XML-RPC poprzedza WordPress: był obecny w oprogramowaniu do blogowania b2, które zostało rozwidlone do tworzenia WordPressa w 2003 roku. Kod systemu jest przechowywany w pliku o nazwie xmlrpc.php , w katalogu głównym witryny. I nadal tam jest, mimo że XML-RPC jest w dużej mierze przestarzały.

We wczesnych wersjach WordPressa XML-RPC był domyślnie wyłączony. Ale od wersji 3.5 jest domyślnie włączony. Głównym tego powodem było umożliwienie aplikacji mobilnej WordPress komunikowanie się z Twoją instalacją WordPress.

Jeśli korzystałeś z aplikacji mobilnej WordPress przed wersją 3.5, być może pamiętasz, że musisz włączyć XML-RPC w swojej witrynie, aby aplikacja mogła publikować treści. Wynikało to z faktu, że aplikacja nie uruchamiała samego WordPressa; zamiast tego była to osobna aplikacja komunikująca się z Twoją witryną WordPress za pomocą xmlrpc.php.

Ale XML-RPC był używany nie tylko do aplikacji mobilnej: był również używany do komunikacji między WordPress i innymi platformami blogowymi, umożliwiał śledzenie i pingbacki oraz zasilał wtyczkę Jetpack, która łączy WordPress z własnym hostingiem witryna do WordPress.com.

Ale ponieważ interfejs API REST został zintegrowany z rdzeniem WordPress, plik xmlrpc.php nie jest już używany do tej komunikacji. Zamiast tego interfejs API REST służy do komunikacji z aplikacją mobilną WordPress, klientami stacjonarnymi, innymi platformami blogowymi, WordPress.com (dla wtyczki Jetpack) oraz innymi systemami i usługami. Zakres systemów, z którymi REST API może wchodzić w interakcje, jest znacznie większy niż ten, na który pozwala xmlrpc.php. Ponadto istnieje znacznie większa elastyczność.

Ponieważ REST API zastąpił XML-RPC, powinieneś teraz wyłączyć xmlrpc.php w swojej witrynie. Zobaczmy dlaczego.

Dlaczego powinieneś wyłączyć xmlrpc.php

Głównym powodem, dla którego powinieneś wyłączyć xmlrpc.php w swojej witrynie WordPress, jest to, że wprowadza on luki w zabezpieczeniach i może być celem ataków.

Teraz, gdy XML-RPC nie jest już potrzebny do komunikacji poza WordPressem, nie ma powodu, aby utrzymywać go aktywnym. Dlatego mądrze jest zwiększyć bezpieczeństwo witryny, wyłączając ją.

Jeśli xmlrpc.php stanowi zagrożenie bezpieczeństwa i już nie działa, dlaczego nie został całkowicie usunięty z WordPressa?

Powodem tego jest to, że jedną z kluczowych funkcji WordPressa zawsze będzie kompatybilność wsteczna. Jeśli dobrze zarządzasz swoją witryną, będziesz wiedział, że niezbędne jest aktualizowanie WordPressa, a także wszelkich wtyczek i motywów.

Ale zawsze znajdą się właściciele witryn, którzy nie będą chcieli lub nie będą mogli zaktualizować swojej wersji WordPressa. Jeśli korzystają z wersji poprzedzającej interfejs API REST, nadal będą potrzebować dostępu do xmlrpc.php.

Przyjrzyjmy się bardziej szczegółowo konkretnym podatnościom.

Ataki DDoS za pośrednictwem pingbacków XML-RPC

Jedną z funkcji włączonych przez xmlrpc.php były pingbacki i trackbacki. Są to powiadomienia, które pojawiają się w komentarzach w Twojej witrynie, gdy inny blog lub witryna zawiera linki do Twoich treści.

To specyfikacja XML-RPC umożliwiła tę komunikację, ale została zastąpiona przez REST API (jak już widzieliśmy).

Jeśli XML-RPC jest włączony w Twojej witrynie, haker może potencjalnie przeprowadzić atak DDoS na Twoją witrynę, wykorzystując xmlrpc.php do wysyłania ogromnej liczby pingbacków do Twojej witryny w krótkim czasie. Może to przeciążyć Twój serwer i uniemożliwić działanie Twojej witryny.

Ataki Brute Force za pośrednictwem XML-RPC

Za każdym razem, gdy xmlrpc.php wysyła żądanie, wysyła nazwę użytkownika i hasło w celu uwierzytelnienia. Stanowi to znaczną odpowiedzialność za bezpieczeństwo i jest czymś, czego REST API nie robi. W rzeczywistości interfejs API REST wykorzystuje OAuth, który wysyła tokeny do uwierzytelniania zamiast nazw użytkowników lub haseł.

Ponieważ xmlrpc.php wysyła informacje uwierzytelniające z każdym żądaniem, hakerzy mogą go użyć, aby spróbować uzyskać dostęp do Twojej witryny. Taki atak typu brute force może umożliwić im wstawienie treści, usunięcie kodu lub uszkodzenie bazy danych.

Jeśli atakujący wyśle ​​wystarczającą liczbę żądań do Twojej witryny, każde z inną parą nazwy użytkownika i hasła, istnieje szansa, że ​​w końcu trafi na właściwą, dając mu dostęp do Twojej witryny.

Dlatego jeśli korzystasz z aktualnej wersji WordPressa, która wykorzystuje REST API do komunikacji z systemami zewnętrznymi, powinieneś wyłączyć xmlrpc.php . Nie jest to potrzebne i może sprawić, że Twoja witryna będzie podatna na ataki.


Czy xmlrpc.php działa w Twojej witrynie WordPress?

Pierwszą rzeczą, którą musisz zrobić, to określić, czy xmlrpc.php jest uruchomiony w Twojej witrynie WordPress.

Nie jest to prosty przypadek sprawdzenia, czy plik się tam znajduje: jest on częścią każdej instalacji WordPressa i będzie obecny nawet po wyłączeniu XML-RPC.

Aby sprawdzić, czy xmlrpc.php jest włączony w Twojej witrynie, użyj usługi weryfikacji XML-RPC WordPress. To sprawdzi twoją stronę i powie, czy xmlrpc.php jest włączony.

Usługa weryfikacji XML-RPC WordPress
Usługa weryfikacji XML-RPC WordPress

Oto wynik, który uzyskałem, gdy sprawdziłem tę stronę w serwisie.

Kontrola Kinsta XML-RPC
Kontrola Kinsta XML-RPC

To pokazuje, że xmlrpc.php został wyłączony na kinsta.com. Więc jeśli uruchomisz sprawdzanie i odkryjesz, że xmlrpc.php jest nadal włączony w Twojej witrynie, jak go wyłączyć?

Jak wyłączyć xmlrpc.php

Istnieją trzy sposoby wyłączenia xmlrpc.php:

Przyjrzyjmy się każdemu z osobna.

Jak wyłączyć xmlrpc.php za pomocą wtyczki?

Zainstalowanie wtyczki wyłączającej xmlrpc.php to najprostszy sposób na zrobienie tego. Wtyczka Disable XML-RPC wyłączy ją całkowicie. Oto jak go używasz.

Moim punktem wyjścia jest moja własna strona internetowa, na której włączony jest xmlrpc.php. Możesz to zobaczyć za pomocą czeku, który wykonałem:

Witryna Rachel McCollin — kontrola XML-RPC
Witryna Rachel McCollin — kontrola XML-RPC

Zainstaluj wtyczkę za pomocą ekranu Wtyczki w panelu administracyjnym WordPress i aktywuj ją.

Nie musisz robić nic więcej: aktywacja wtyczki spowoduje wyłączenie XML-RPC. Teraz, jeśli sprawdzę swoją witrynę, otrzymam inny wynik:

Witryna Rachel McCollin — druga kontrola XML-RPC
Witryna Rachel McCollin – druga kontrola XML-RPC

To takie proste!

Wyłącz pingbacki XML-RPC za pomocą wtyczki

Ale co, jeśli chcesz wyłączyć niektóre aspekty xmlrpc.php, a inne nie? Wtyczka Disable XML-RPC Pingback pozwala wyłączyć tylko funkcję pingback, co oznacza, że ​​nadal masz dostęp do innych funkcji XML-RPC, jeśli ich potrzebujesz.

Wtyczka działa w taki sam sposób, jak wtyczka Disable XML-RPC: po prostu zainstaluj, aktywuj i będzie działać.

Skonfiguruj aktywację XML-RPC i REST API za pomocą wtyczki

Jeśli chcesz mieć bardziej szczegółową kontrolę nad konfiguracją zarówno xmlrpc.php, jak i interfejsu API REST w Twojej witrynie, możesz zainstalować wtyczkę REST XML-RPC Data Checker.

Po zainstalowaniu i aktywacji tej wtyczki, przejdź do Ustawienia > REST XML-RPC Data Checker i kliknij kartę XML-RPC .

Kontroler danych REST XML-RPC
Kontroler danych REST XML-RPC

Pozwala to dokładnie skonfigurować, które aspekty xmlrpc.php są aktywne w Twojej witrynie.

Potrzebujesz niezwykle szybkiego, bezpiecznego i przyjaznego dla programistów hostingu? Kinsta została stworzona z myślą o programistach WordPress i zapewnia mnóstwo narzędzi oraz potężny pulpit nawigacyjny. Sprawdź nasze plany

Alternatywnie możesz po prostu całkowicie go wyłączyć. A jeśli chcesz również kontrolować REST API, wtyczka daje do tego kolejną zakładkę.

Jak wyłączyć xmlrpc.php bez wtyczki?

Jeśli wolisz nie instalować innej wtyczki na swojej stronie, możesz wyłączyć xmlrpc.php, dodając kod w filtrze lub do pliku .htaccess. Przyjrzyjmy się obu metodom.

Wyłącz xmlrpc.php za pomocą filtra

Opcją tutaj jest użycie filtru xmlrpc_enabled , aby wyłączyć xmlrpc.php. Dodaj tę funkcję do wtyczki i aktywuj ją w swojej witrynie:

 add_filter( 'xmlrpc_enabled', '__return_false' );

Możesz dodać to do pliku funkcji motywu, ale lepiej jest napisać wtyczkę.

Druga opcja dotyczy edycji pliku .htaccess, który jest dostępny u dostawców hostingu korzystających z Apache, łącząc się z serwerem witryny za pośrednictwem FTP lub cPanel.

Wyłącz xmlrpc.php za pomocą pliku .htacess

W pliku .htaccess dodaj ten kod:

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

Upewnij się, że wykonałeś kopię starego pliku, zanim to zrobisz, na wypadek jakichkolwiek problemów.

Poproś dostawcę usług hostingowych o wyłączenie xmlrpc.php

Alternatywnie, niektórzy dostawcy hostingu wyłączą xmlrpc.php w przypadku wykrycia ataku.

W Kinsta, po wykryciu ataku za pośrednictwem XML-RPC, fragment kodu jest automatycznie dodawany do pliku Nginx.config:

 location ~* ^/xmlrpc.php$ { return 403; }

Spowoduje to błąd 403 i zatrzyma atak.

Jeśli robisz to sam, najlepiej użyć jednej z powyższych metod. Ale zanim to zrobisz, zawsze najpierw skonsultuj się z dostawcą usług hostingowych.

Kiedy trzeba włączyć xmlrpc.php?

Może się zdarzyć, że będziesz musiał włączyć xmlrpc.php w swojej witrynie WordPress lub nie powinieneś całkowicie go wyłączać.

To są:

  • Nie używasz interfejsu API REST (niezalecane, ale konieczne w niektórych sytuacjach), ale musisz komunikować się między witryną WordPress a innymi systemami.
  • Nie możesz zaktualizować WordPressa do wersji 4.4 lub nowszej, więc nie masz dostępu do interfejsu API REST. Może to wynikać z ograniczeń w konfiguracji hostingu (w takim przypadku zmieniłbym dostawcę hostingu) lub niezgodności motywu lub wtyczek (w takim przypadku zmieniłbym je lub zaktualizował).
  • Pracujesz z zewnętrzną aplikacją, która nie ma dostępu do interfejsu API WP REST, ale może uzyskać dostęp do XML-RPC (na dłuższą metę radzę zaktualizować tę aplikację lub przełączyć się na aplikację zgodną z REST).

Otóż ​​to! Żadna z tych przyczyn nie jest szczególnie dobrym powodem, aby pozostawić włączoną specyfikację XML-RPC.

Jedynym powodem, dla którego nadal jest w WordPressie, jest kompatybilność wsteczna i używałbyś go tylko wtedy, gdy pracujesz z przestarzałymi systemami. Dla każdego, kto chce aktualizować swoje witryny i pracować z najnowszą technologią, wyłączenie xmlrpc.php jest najlepszym rozwiązaniem.

XML-RPC był kiedyś istotną częścią WordPressa. Teraz stanowi zagrożenie bezpieczeństwa — ten przewodnik pokaże Ci dokładnie, jak wyłączyć tę funkcję w Twojej witrynie. Kliknij, aby tweetować

Streszczenie

Specyfikacja XML-RPC została opracowana, zanim jeszcze powstał WordPress, jako środek komunikacji WordPressa z zewnętrznymi systemami i aplikacjami. Ma nieodłączne wady bezpieczeństwa i może narazić Twoją witrynę na atak.

Teraz, gdy REST API pozwala Twojej witrynie komunikować się z innymi aplikacjami, możesz bezpiecznie wyłączyć xmlrpc.php. Jeśli wykonasz powyższe kroki, wyłączenie tej funkcji poprawi bezpieczeństwo Twojej witryny.