timthumb.php ranjivost

U zadnje vrijeme, wordpress instalacije su postale jako ranjive. Bez obzira na zadnju verziju worpressa i poupdatane sve module i dalje dolazi do problema. Zadnjih 10-tak na koje smo naišli, uzrok je ranjivost tomthumb.php skripte koja se nalazi u većini wordpress tema, a korite ga nerijetko i u Joomli i Magentu.

Neke WordPress teme su napuštemi projekti, čak i ako imate zadnju verziju teme, u njoj se vrlo često nalazi stari, ranjivi timthumb.php

Gdje je problem?

Problem leži u funkcionalnosti timthumb.php skripte kojom je moguce resizati slike sa recimo flickr-a ili picase, no zbog nedovoljno razrađene sigurnosti u samoj skripti, dovoljno je pozvati bilo koju domenu, tipa http://flickr.com.blackhat.com/slika.jpg i timthumb nece raditi probleme, uploadati će sliku u Vaš folder nebi li je pokusao  resizeati.  No umjesto rezizenja slike, napadač će pokušati uploadati file u kojem se nalazi php kod. Naravno da generiranje thumbnaila neće uspjeti, no da bi uopće napravio thumbnail, timthumb.php file mora prvo uplodati na disk, u cache folder, u našem slučaju, generiranje neće uspijeti, no .php file će ostati u /cache/ folderu na serveru. Nakon toga, udaljeni napadač može pozvati uplodani php file, naime, to može biti skripta za upload, za editiranje sadrzaja, php shell, te moze uploadati svoje ili prepravljati sve vaše fileove na Vašem web prostoru, doći do pasworda za bazu, prčkati po njoj, sve jedno je, unutra je, a Vaš web je kompromitiran.

To se ustvari dogodi na ovaj način:

Ovako izgleda ranjivi dio koda:

$isAllowedSite = false;
foreach ($allowedSites as $site) {
if (strpos (strtolower ($url_info['host']), $site) !== false) {
$isAllowedSite = true;
}
}

Problem se djelomično može popraviti u starim verzijama, ukoliko ne trebate rezizeati slike iz vanjskih izvora na sljedeći način. Nađite sljedeći dio koda ( počinje u 29. liniji):

$allowedSites = array (
'flickr.com',
'picasa.com',
'blogger.com',
'wordpress.com',
'img.youtube.com',
'upload.wikimedia.org',
);

I zamijenite sa:

$allowedSites = array ();

To bi trebalo biti dovoljno kao brzinska zakrpa. Isto tako, sigurno je zamijeniti timthumb.php sa zadnjom verzijom. Zadnju verziju mozete naci ovdje: http://timthumb.googlecode.com/svn/trunk/timthumb.php dovojno ju je spremiti kao timthumb.php ili sadrzaj starog timthumb.php zamijeniti sa novim.

Većina WordPress admina ne uspijeva detektirati gdje je problem i ne osjećaju se dovoljno sigurnim da problem sami otklone. Naime, dovoljno je zamijeniti timthumb.php zadnjom verzijum, backwards compatabilan je, tj. update na zadnju verziju ne narušava postojeće funkcionalnosti.

Ukoliko koristite wordpress i ne znate kako biste napravili update, postoji i plugin koji provjerava verziju timthumb.php-a i mozete s njim updatati na zadnju verziju, bez znanja programiranja ili bilo kakvih zahvata ftp-om. Možete ga instalirati kao i sve pluginove kroz wordpress. Više o pluginu mozete naci ovdje: http://wordpress.org/extend/plugins/timthumb-vulnerability-scanner/

Proces instalacije mozete vidjeti ovdje:

Ili korak po korak ovako:

1. Ulogirate se u administraciju wordpresa
2. plugins -> install new -> upišete “timthumb” i kliknite “search”
3. Select TimThumb Vulnerability Scanner -> Install
4. Aktivirajte plugin: Plugins -> TimThumb Vulnerability Scanner -> Activate
5. Plugin mozete naci pod Tools -> Timthumb Scanner
6. Kliknite na plugin i kliknite na “Scan”
7. Scanner ce naći ranjive timthumb.php skripte i ponuditi Vam sigurnu metodu za upgrade.

Važno:
Vrlo je bitno odmah provjeriti Vašu verziju timthumb.php-a i upgradati čim je prije moguće.
Ukoliko ne uspjevate instalirati plugin u wordpress, ne znate sami, javite, rado ćemo Vam pomoći.

Povezani članci

Odgovori