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 timthumb.php skripte koja se nalazi u većini wordpress tema, a korite ga nerijetko i u Joomli i Magentu.
Neke WordPress teme su napušteni projekti, čak i ako imate zadnju verziju teme, u njoj se vrlo često nalazi stari, ranjivi timthumb.php
Gdje je problem u timthumb.php skripti?
Problem leži u funkcionalnosti skripte kojom je moguće resizati slike sa recimo flickr-a ili picase. Zbog nedovoljno razrađene sigurnosti u samoj skripti, dovoljno je pozvati bilo koju domenu, tipa http://flickr.com.blackhat.com/slika.jpg i timthumb neće raditi probleme. Uploadat će sliku u vaš folder ne bi li je pokušao resizeati. No umjesto resizenja 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 uploadati na disk, u cache folder U našem slučaju, generiranje neće uspjeti, no .php file će ostati u /cache/ folderu na serveru. Nakon toga, udaljeni napadač može pozvati uploadani file. Naime, to može biti skripta za upload, za editiranje sadržaja, php shell, te može uploadati svoje ili prepravljati sve vaše fileove na vašem web prostoru. Doći do passworda za bazu, prčkati po njoj, sve jedno je, unutra je, a vaš web je kompromitiran.
Kako se to događa?
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, ako ne trebate resizeati 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 ();
Zamjena timthumb.php sa zadnjom verzijom
To bi trebalo biti dovoljno kao brzinska zakrpa. Isto tako, sigurno je zamijeniti timthumb.php sa zadnjom verzijom. Zadnju verziju možete naći ovdje: http://timthumb.googlecode.com/svn/trunk/timthumb.php dovoljno ju je spremiti kao timthumb.php ili sadržaj starog timthumb.php zamijeniti s 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 php zadnjom verzijom, backwards compatabilan je, tj. update na zadnju verziju ne narušava postojeće funkcionalnosti.
Ako koristite WordPress i ne znate kako biste napravili update, postoji i plugin koji provjerava verziju timthumb.php-a. Možete 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 možete naći ovdje.
Proces instalacije
Proces instalacije možete 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 će 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.
Ako ne uspijevate instalirati plugin u WordPress, ne znate sami, javite, rado ćemo vam pomoći.