Problém s XML-RPC

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.

Autor Ginoza

Pracuji na zákaznické podpoře jednoho známého webhostingu.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *