← Wszystkie porady

XML-RPC jest włączony

Co to oznacza

XML-RPC (xmlrpc.php) to starszy protokół komunikacji z WordPressem, który pozwala zewnętrznym aplikacjom na zdalne publikowanie treści, zarządzanie komentarzami i wywoływanie funkcji WordPress bez dostępu do panelu administracyjnego. Był projektowany w czasach, gdy mobilne aplikacje WordPress potrzebowały sposobu na komunikację z serwerem.

Jeśli endpoint XML-RPC na Twojej stronie jest aktywny i odpowiada na żądania, masz otwarty wektor ataku. Sprawdź to wpisując w przeglądarce twojastrona.pl/xmlrpc.php — jeśli zobaczysz komunikat „XML-RPC server accepts POST requests only", XML-RPC jest włączony. Od czasu wprowadzenia REST API w WordPress 4.7, XML-RPC nie jest potrzebny w większości instalacji.

Jakie jest ryzyko

Aktywny XML-RPC to jeden z najczęściej wykorzystywanych wektorów ataku na WordPress:

  • Brute-force logowania — XML-RPC pozwala testować setki kombinacji login/hasło w jednym żądaniu HTTP (metoda system.multicall). Standardowa ochrona przed brute-force na stronie logowania nie działa na XML-RPC.
  • DDoS amplification — metoda pingback.ping może być wykorzystana do przekierowania ruchu z Twojego serwera na cel ataku. Twoja strona staje się nieświadomym uczestnikiem ataku DDoS.
  • Enumeracja użytkowników — atakujący może ustalić prawidłowe loginy za pomocą prób autoryzacji.
  • Obciążenie serwera — nawet nieudane próby ataków generują obciążenie procesora i pamięci.

Jak to naprawić

  1. Zablokuj na poziomie serwera — najskuteczniejsza metoda. W pliku .htaccess (Apache):
    <Files xmlrpc.php>
        Order Deny,Allow
        Deny from all
    </Files>
    
    Lub w konfiguracji Nginx:
    location = /xmlrpc.php {
        deny all;
        return 403;
    }
    
  2. Wyłącz filtrem WordPress — dodaj do functions.php lub wtyczki:
    add_filter('xmlrpc_enabled', '__return_false');
    
  3. Użyj wtyczki bezpieczeństwa — większość wtyczek typu Wordfence czy Sucuri oferuje opcję wyłączenia XML-RPC.
  4. Nie usuwaj pliku — WordPress może go odtworzyć przy aktualizacji. Lepiej zablokować dostęp na poziomie serwera.