Kritická zranitelnost v šabloně OneTone

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…

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í:

  1. 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
  2. Zkontroluje existenci cookie Tho3faeK.
  3. Sestaví pomocí parametrů url, kterou přidá k user-new.php.
  4. 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

https://blog.nintechnet.com/unauthenticated-stored-xss-vulnerability-in-wordpress-onetone-theme-unpatched/

Pokud rádi riskujete – https://mageewp.com/onetone-theme.html

Jeden komentář: „Kritická zranitelnost v šabloně OneTone“

  1. […] Kritická zranitelnost v šabloně OneTone pochází z […]