Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: tragantras en 30 Marzo 2010, 13:14 pm



Título: XSS diferentes
Publicado por: tragantras en 30 Marzo 2010, 13:14 pm
[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
  1. 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
  1. <?php
  2. $host = 'localhost';
  3. $dbuser = 'user';
  4. $dbpass = 'password';
  5. $dbname = 'dbname';
  6. $db = mysql_connect($host, $dbuser, $dbpass);
  7.  
  8. echo "<p><h1>Prueba de uso de mysql para generar XSS</h1></p>";
  9.  
  10. if( isset($_GET['id'])  ){
  11. mysql_select_db($dbname,$db);
  12. $sql = "SELECT * FROM tabla WHERE id=".$_GET['id'];
  13. $query = mysql_query($sql) or die (mysql_error()); //<- ahi la magia :)
  14.  
  15. $result=@mysql_fetch_row($query);
  16.  
  17. echo "<h2><center>SQL XSS injection<br>Ejemplos<br><br>";
  18.  
  19. for($i = 0; $i < count($result); $i++){
  20. echo "<font color='#FF0000'>Campo: </font>".$i."<font color='#FF0000'> Valor: </font>".$result[$i]."<br>";
  21. }
  22.  
  23. echo "</h2></center>";
  24.  
  25. die();
  26. }else{
  27. echo "<center> Funcionamiento:   sql.php?id=consulta ";
  28. }
  29. ?>
  30.  
  31.  

de esta manera si insertamos
Código
  1. 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 :)





Título: Re: XSS diferentes
Publicado por: xassiz_ en 30 Marzo 2010, 14:37 pm
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


Título: Re: XSS diferentes
Publicado por: tragantras en 30 Marzo 2010, 15:49 pm
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


Título: Re: XSS diferentes
Publicado por: jdc en 30 Marzo 2010, 16:00 pm
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 :)


Título: Re: XSS diferentes
Publicado por: ~ Yoya ~ en 30 Marzo 2010, 20:16 pm
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.


Título: Re: XSS diferentes
Publicado por: tragantras en 30 Marzo 2010, 21:06 pm
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!


Título: Re: XSS diferentes
Publicado por: xassiz_ en 30 Marzo 2010, 22:40 pm
"HTML injection" es como se le llama a un XSS estático.

O eso creo


Título: Re: XSS diferentes
Publicado por: tragantras en 30 Marzo 2010, 23:12 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


Título: Re: XSS diferentes
Publicado por: fede_cp en 31 Marzo 2010, 00:15 am
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!


Título: Re: XSS diferentes
Publicado por: Shell Root en 31 Marzo 2010, 00:22 am
Todo el problema viene de este POST!, aunque no le veo el problema yá que especifica lo mismo que todos han dicho.

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.


Más bien, creo que tragantras, no interpreto bien, lo que dijo Yoya.  :silbar:


Título: Re: XSS diferentes
Publicado por: tragantras en 31 Marzo 2010, 11:12 am
jaja supongo que fue así >,< mis disculpas =)


cuando dije "distinto" me refería a que era algo "distinto" a lo que se suele usar para llegar al mismo punto, no que fuese otra "version" diferente :/, quizá me expliqué mal! jaja