WordPress šablona OneTone obsahuje kritickou zranitelnost, jenž umožňuje nasadit útočníkům do vašeho webu škodlivý kód.
Před několika dny se na nás obrátil zákazník, s tím, že má napadený web a i když jej vyčistí, infekce je za chvíli zpět.
Nejprve jsme se domnívali, že jde o infekci, jenž se nedávno prohnala internetem a jenž využívala především zranitelný adminer, viz. https://blog.sucuri.net/2019/11/vulnerable-versions-of-adminer-as-a-universal-infection-vector.html.
Na dotyčném webu, ale žádný adminer nebyl, ani žádný známý zranitelný plugin.
Nebudu to prodlužovat, průser problém je v šabloně OneTone od MageeWP.
Ta umožňuje útočníkům změnit option pro nastavení šablony. Konfigurace šablony se z databáze natahuje při načtení každé stránky a útočníkům pak umožní provádět ošklivé, nepěkné věci.
Kód, který za to může je tato funkce:
function onetone_options_import(){ $option_name = onetone_option_name(); if(isset($_POST['options'])){ $options = stripslashes($_POST['options']); $new_options = json_decode($options, true); if(is_array($new_options) && $new_options != NULL ){ update_option($option_name,$new_options); _e( 'Import successful.', 'onetone'); exit(0); } } _e( 'Import failed.', 'onetone'); exit(0); } add_action('wp_ajax_onetone_options_import', 'onetone_options_import'); add_action('wp_ajax_nopriv_onetone_options_import', 'onetone_options_import');
Jde o ajax callback pro uložení nastavení šablony.
$options = stripslashes($_POST['options']);
Stripslashes opravdu ničemu nezabrání a útočník si do db uloží co chce, konkrétně něco takového:
Screen jsem si půjčil ze Sucuri.net, odkaz na konci článku.
Chování scriptu je následující:
- Do top baru, což je černá lišta zobrazená administrátorovi, přidá kód, jenž hlídá, zda je načítán soubor wp-admin/user-new.php
- Zkontroluje existenci cookie Tho3faeK.
- Sestaví pomocí parametrů url, kterou přidá k user-new.php.
- Vyvolá POST request a vytvoří nového uživatele s admin oprávněním.
Výsledek je známý každému, kdo se setkal s napadeným webem – dochází k přesměrování na jiné stránky a web je tak nedostupný.
V současné době je šablona odstraněna z WordPress.org, a není známý žádný update s opravou
V době psaní tohoto článku jsem si stáhl zip soubor se šablonou a kód je stále zranitelný.
Pokud máte šablonu nainstalovanou, okamžitě ji odstraňte.
Odkazy:
https://blog.sucuri.net/2020/04/onetone-vulnerability-leads-to-javascript-cookie-hijacking.html
Pokud rádi riskujete – https://mageewp.com/onetone-theme.html