XSS diferentes

Iniciado por tragantras, 30 Marzo 2010, 13:14 PM

0 Miembros y 1 Visitante están viendo este tema.

tragantras

[DISCLAIMER]Este texto no pretende redescubrir América, ni ningún otro continente ya conocido, seguramente muchos de vosotros que leáis ya conoceréis esta técnica, así que este texto texto va dirigido a la gente que se inicie en este mundo [/DISCLAIMER]

XSS

La mayoría de nosotros cuando oímos XSS automáticamente pensamos en buscadores y en contenido pasado por peticiones de tipo GET, pensamos en cerrar etiquetas con "> y en inyectar código. Pero muchas veces se nos olvida que tan solo es necesario un
Código (php) [Seleccionar]
echo variable para que empiece la mágica. (o funciones similares que retornen lo introducido, como veremos a continuación )
A veces esto es más sencillo de lo que parece. La mayoría de los motores de bases de datos están configurados para, por defecto, devolver el error producido...es decir nos dan un echo de lo que hayamos introducido, eureka!. Podemos aprovecharnos de este hecho para introducir nuestro XSS favorito.

Supongamos que tenemos este php que se conecta a la BDD y retorna ciertos valores:

Código (php) [Seleccionar]

<?php
$host 
'localhost';
$dbuser 'user';
$dbpass 'password';
$dbname 'dbname';
$db mysql_connect($host$dbuser$dbpass);

echo 
"<p><h1>Prueba de uso de mysql para generar XSS</h1></p>";

if( isset(
$_GET['id'])  ){
mysql_select_db($dbname,$db);
$sql "SELECT * FROM tabla WHERE id=".$_GET['id'];
$query mysql_query($sql) or die (mysql_error()); //<- ahi la magia :)

$result=@mysql_fetch_row($query);

echo "<h2><center>SQL XSS injection<br>Ejemplos<br><br>";

for($i 0$i count($result); $i++){
echo "<font color='#FF0000'>Campo: </font>".$i."<font color='#FF0000'> Valor: </font>".$result[$i]."<br>";
}

echo "</h2></center>";

die();
}else{
echo "<center> Funcionamiento:   sql.php?id=consulta ";
}
?>




de esta manera si insertamos
Código (php-brief) [Seleccionar]
sql.php?id=3'"><h1>Hola!</h1>
la consulta nos devolverá algo así como:



________________________________________________________________________________________________________________
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''">
Hola!
' at line 1

________________________________________________________________________________________________________________

En esta página lo que produce la magia es la funcion mysql_error() que como habeis visto devuelve la cadena que produjo el fallo.
Es decir, hemos conseguido lo que queríamos. En webs en las cuales no podamos tirar de el tipico buscador resulta un buen flanco de ataque este tipo de técnicas.


Sin más, termino, como siempre, abierto a sugerencias/correcciones/criticas y demás-es :)



Colaboraciones:
1 2

xassiz_

Está bien, pero en esos casos es más grave la inyección de sentencias SQL que nó código que se ejecute del lado del cliente  ;D



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

tragantras

es que no tiene porqué repercutir en una inyección SQL, producir fallos en la sentencia no es lo mismo que introducir valores, además puede que de darse la ineyeccion los datos estén codificados.

en caso de por ejemplo los passwords estar codificados, quizá interese un session hijacking
Colaboraciones:
1 2

jdc

Es por eso que mysql_error(); nunca debe usarse en un sistema público, asi mismo, siempre es recomendable usar al principio de un documento php un error_reporting(0);

Básicamente inyectas el error :)

~ Yoya ~

XSS diferente, eso no es, a eso muchos le llamas html inyeccion, porque de la misma manera que ejecutas HTML inyeccion, puedes inyectar javascript, osea es lo mismo.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

tragantras

Yoya, segun tu eso es html injection y no XSS?

eres capaz de razonar el porque y las diferencias entre ellos porfavor? =)

gracias y un saludo!
Colaboraciones:
1 2

xassiz_

"HTML injection" es como se le llama a un XSS estático.

O eso creo



YXVuIGVyZXMgbWF0YWRvIHBhcmEgcG9uZXJ0ZSBhIGRlc2NpZnJhciBlc3RvIHhE

tragantras

Cita de: xassiz en 30 Marzo 2010, 22:40 PM
"HTML injection" es como se le llama a un XSS estático.

O eso creo

de ser así, éste tema de "estático" tiene poco :/

no se por qué dijo que esto no era XSS la verdad... me tiene en ascuas xD
Colaboraciones:
1 2

fede_cp

aclaramos la situacion:


html injection es lo mismo que xss, que significa HTML incrustado, tambien conocido como cross site scripting.


no hay diferencias entra html injection y xss.

ahora lo de xss distinto, osea no es distinto, es un xss igual salvo que uno es directo y otro indirecto  :xD

saludos!
somos lo que hacemos para cambiar lo que somos

http://elhackerblog.blogspot.com el blog de elhacker.net!!

Shell Root

Todo el problema viene de este POST!, aunque no le veo el problema yá que especifica lo mismo que todos han dicho.

Cita de: ~ Yoya ~ en 30 Marzo 2010, 20:16 PMXSS diferente, eso no es, a eso muchos le llamas html inyeccion, porque de la misma manera que ejecutas HTML inyeccion, puedes inyectar javascript, osea es lo mismo.


Más bien, creo que tragantras, no interpreto bien, lo que dijo Yoya:silbar:
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.