XML-RPC is een oude manier waarop apps en diensten op afstand met WordPress praten, via het bestand xmlrpc.php. Een gewone bedrijfssite heeft het zelden nodig. Het staat wel standaard aan, en aanvallers proberen er geautomatiseerd in te loggen.
Wat is XML-RPC?
XML-RPC is gebouwd voordat moderne interfaces bestonden. Tegenwoordig is het op een gewone bedrijfssite zelden nodig, maar het staat standaard aan en is een bekend doelwit van geautomatiseerde inlogaanvallen.
XML-RPC is een protocol waarbij een programma een verzoek in XML naar een webadres stuurt en een antwoord in XML terugkrijgt. In WordPressWordPress is een programma waarmee je een website maakt en beheert zonder te hoeven programmeren. is dat adres xmlrpc.php in de hoofdmap. Een programma kan inloggen met gebruikersnaam en wachtwoord en daarna berichten maken, media uploaden of gegevens uitlezen.
Het was belangrijk toen blogapps en publicatietools een manier nodig hadden om met een site te praten. WordPress kreeg later de REST API, de interface die huidige functies gebruiken. XML-RPC bleef voor de compatibiliteit en veel sites tonen het nog steeds zonder dat iemand het gebruikt.
Wat XML-RPC betekent voor je PHP-site
Elk openbaar eindpunt dat logins accepteert hoort bij je aanvalsoppervlakHet aanvalsoppervlak is het geheel van plekken waar een aanvaller kan proberen je website binnen te komen, zoals logins, formulieren en plugins.. Omdat xmlrpc.php bij elke WordPress-site op hetzelfde adres staat, hoeven bots er niet naar te zoeken. Ze proberen het bij enorme aantallen sites. Verzoeken kunnen ook worden gebundeld, zodat een bot per verzoek meerdere wachtwoorden probeert, en dat kan je server belasten.
Dat het aanstaat is op zichzelf geen kwetsbaarheidEen kwetsbaarheid is een zwakke plek in software waar een aanvaller misbruik van kan maken, zoals een deur die niet goed op slot gaat.. Het risico zit in zwakke of hergebruikte wachtwoorden, accounts die je niet nodig hebt en een server die voor elk verzoek van de bot PHPPHP is de programmeertaal waarmee veel websites, zoals WordPress-sites, hun pagina's maken op het moment dat een bezoeker erom vraagt. moet draaien. Elk verzoek naar xmlrpc.php start WordPress op, wat serverkracht kost, ook als de login mislukt.
Zo controleer je het en beslis je
Zoek in je toegangslogboeken naar verzoeken aan xmlrpc.php. Veel POST-verzoeken van dezelfde adressen wijzen op geautomatiseerde pogingen. Vraag je dan af wat ervan afhangt: een mobiele app, een publicatietool, een back-upEen back-up is een kopie van je hele website, apart bewaard, zodat je hem kunt terugzetten als er iets misgaat.- of beheerdienst of een oude plugin. Is dat niets, dan kun je veilig blokkeren. Is er wel iets, beperk het dan tot de adressen die het nodig hebben, of vervang de tool door een die de REST API gebruikt.
Blokkeren kan in de configuratie van de webserverEen webserver is het programma op een server dat verzoeken van bezoekers aanneemt en pagina's en bestanden terugstuurt., in een beveiligingsplugin of met een firewallregel vóór de site. Test na elke wijziging wat je nodig hebt en controleer dat een verzoek aan xmlrpc.php geen werkend antwoord meer geeft. Gebruik sterke, unieke wachtwoorden en een tweede inlogstap voor elk beheerdersaccount, wat je ook besluit over XML-RPC.
Responsheaders kunnen een extra laag geven. Zie security headersSecurityheaders zijn instructies die je website meestuurt en waarmee de browser van je bezoeker extra beveiligingsregels toepast. voor wat die dekken, en let op dat ze het blokkeren van een overbodige interface niet vervangen.
Wanneer XML-RPC reden is om te herbouwen
Bestaan xmlrpc.php, de inlogpagina en meerdere pluginsEen WordPress-plugin is een uitbreiding die je aan je WordPress-site toevoegt voor een extra functie, zoals een formulier of een webshop. alleen om een site te laten draaien waarvan de inhoud zelden verandert, dan is het schoner om de applicatie van de publieke server te halen. Een statische siteEen statische website bestaat uit kant-en-klare pagina's die de server alleen hoeft af te geven, zonder dat er bij elk bezoek iets wordt berekend. heeft geen WordPress-login, geen xmlrpc.php en geen database om te bevragen bij een paginaweergave. Dat geeft een kleiner aanvalsoppervlak, al blijven formulieren, hostingaccounts en bouwtools bescherming vragen. Dat levert onze aanpak voor een website zonder PHP.
Wanneer onderneem je actie
Doe iets als je logboeken steeds verkeer naar xmlrpc.php tonen, als je server traag wordt door inlogpogingen, of als je merkt dat niemand de interface gebruikt. Zijn er al tekenen van een inbraak, zoals onbekende beheerders of vreemde bestanden, vraag dan onze hulp bij WordPress problemen oplossen.
Veelgestelde vragen
Wat is xmlrpc.php?
Het is een bestand in de hoofdmap van een WordPress-site dat verzoeken op afstand in XML-RPC-formaat accepteert. Apps en diensten kunnen daarmee inloggen en content publiceren zonder het beheerscherm te openen.
Heb ik XML-RPC nodig?
Vaak niet. Nieuwere WordPress-functies gebruiken de REST API, een aparte interface. Sommige oudere mobiele apps, publicatietools en plugins gebruiken XML-RPC nog wel, dus controleer waar je op leunt voordat je het blokkeert.
Waarom richten aanvallers zich op xmlrpc.php?
Het staat op een voorspelbaar adres bij elke WordPress-site en accepteert inlogpogingen. Eén verzoek kan meerdere pogingen bundelen, wat wachtwoorden raden efficiënter maakt voor een bot. Het is een bekend patroon, dus logboeken tonen er vaak verkeer naartoe.
Hoe blokkeer ik XML-RPC?
Je kunt verzoeken naar xmlrpc.php blokkeren op de webserver of in een beveiligingsplugin, of beperken tot bepaalde IP-adressen. Test daarna of de diensten die je nodig hebt nog werken, en gebruik sowieso sterke wachtwoorden en tweestapsverificatie.