Ačkoliv byl XML-RPC součástí WordPress už dříve, teprve od roku 2012 ve verzi 3.5 byl defaultně zapnutý. Měl umožnit komunikaci mezi instalací a různými editory, třeba z počítače anebo mobilu, pomocí zasílání příkazů v XML formátu.

Brute force útoky

Vypadalo to jako velmi dobrý nápad, ale už brzy se ukázalo jak může být XML-RPC nebezpečný. Mezi první zneužití patřil zesílený (amplified) brute force útok. U klasického brute force útoku zkouší útočník hesla jedno po druhém. Dá se tak snadno zastavit třeba po deseti neúspěšných pokusech. Ovšem XML-RPC umožnil pomocí funkce system.multicall vyzkoušet třeba 50 hesel jedním zasláním XML příkazem. Stačil tak poslat pár desítek takovýchto dotazů a rázem útočník vyzkoušel stovky či tisíce hesel, než ochranný mechanizmus zareagoval. Proto také označení zesílený brute force. Samozřejmě pokud jste neměli žádnou ochranu, tak dokonce bylo reálné prolomit slabší hesla.

V současné době už se s nimi dokáže bezpečnostní plugin jako třeba WordFence vypořádat.

DoS útoky

XML-RPC je také často používán pro DOS útok. Při DoS útoku jde hlavně o to zahltit server požadavky anebo vytvořit takové, které spotřebují jeho výkon. U útoku přes XML-RPC je cílem většinou databáze. Důsledkem jsou pak chyby Error connecting to database (chyba při připojení k databázi) popřípadě Out of Memory (vyčerpaná paměť). Na první pohled to přitom může vypadat, že nestíhá webhosting/server.

Opět je třeba připomenout, že v současnosti jsou jednodušší metody jak DoSovat WordPress než přes XML-RPC. Na druhou stranu nikdo neříká, že to nějak nejde 🙂

Jak útok odhalit

Útoky na XML-RPC odhalíme v access log, kde jsou zaznamenány směřující na soubor xmlrpc.php, právě ten komunikaci obstarává. Podívejte se proto právě po něm, co jej volá a odkud.

Téměř každý WordPress je v logu najde. Každý den jsou instalace WordPress pod útoky robotů, kteří se zkouší do něj dostat. Útoky přes XML-RPC nejsou ničím novým.

202.46.51.165 - - [03/Oct/2016:19:23:16 +0200] "GET /xmlrpc.php?rsd HTTP/1.1" 503 299 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36"

V dnešní době spousta hostingových firem už proti tomu má nějakou ochranu, protože smysluplnou komunikaci přes XML-RPC používá snad jen plugin Jetpack. Tam je pak nutné zkusit právě zavolat domena.tld/xmlrpc.php?rsd a zjistit jestli vše funguje. Na podpoře se pak dozvíte o případných omezeních.

Vypnutí XML-RPC

Postupem času však byli přímo do WordPress implementovány mechanizmy, které různé druhy útoků přes XML-RPC omezují. I tak se jedná o potencionální zranitelnost. Ačkoliv nemůžete váš WordPress udělat zcela imunní vůči kyberútokům, spoustě hrozeb jde předcházet. Takže co nepoužíváme to zakážeme, aby to nikdo nemohl zneužít 😉

XML-RPC ve většině případů nepotřebujete. Jestliže nemáte nějaký editor v mobilu anebo nepoužíváte pluginy, které potřebují komunikovat se serverem, tak jej klidně můžete vypnout. Není potřebný. Popřípadě jej můžete omezit tak, aby mohl komunikovat pouze s určitými servery.

Pokud nemáte dostatečné znalosti, nejjednodušší je použít nějaký bezpečnostní plugin, který jej omezí anebo rovnou vypne. V ostatních případech vždy volte zákaz v .htaccess.

<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

Tato metoda zajistí, že bude požadavek odbaven nejrychleji. WordPress nebude muset vůbec nic řešit.

Share on FacebookTweet about this on TwitterShare on Google+Share on LinkedInBuffer this page