Underc0de

[In]Seguridad Informática => Bugs y Exploits => Mensaje iniciado por: Okol en Enero 03, 2013, 06:05:45 PM

Título: XSS y reparacion
Publicado por: Okol en Enero 03, 2013, 06:05:45 PM
¿Qué es XSS?
Xss es una vulnerabilidad que permite inyectar un código html o javascript en algún formulario ya sea por GET o por POST (por GET es más peligroso).

¿Consecuencias?
Podrian hacer desde una simple alerta hasta robar la cookie de el administrador.

NOTA: para poder entender muy bien esta vulnerabilidad deberíamos saber sobre html ó javascript.

Enviar datos por GET:
Para enviar datos por el método GET es muy fácil, solo debemos poner en la variable nuestro "vector" (un vector es como decir el "Código" con el que saltará nuestra alerta o cualquier otra cosa que hagamos.
Ejemplo:
pagina.com/archivo.php?variable="><script>alert("Okol")</script>
Ya que con el método GET se muestra lo que envias en la url es más "fácil" inyectar nuestro vector.

Enviar datos por POST:
Para enviar datos con el método POST es necesario capturar lo que estamos enviando, para eso yo uso un complemento de firefox llamado Live Http Headers. Básicamente eso registra TODO lo que envías.
Lo instalamos en Complementos -> Buscamos Live http Headers.
Bien. Una vez que lo tenemos, lo abrimos y abrimos una página cualquiera y miren.
(http://3.bp.blogspot.com/-4tZ46k-BpkE/UOWc_l5EhXI/AAAAAAAAAFs/ddjG9cI7KSI/s320/head1.png)
Ahora, si nosotros llenamos algun formulario por POST se mostrará así como vemos a continuación:
(http://1.bp.blogspot.com/-qHtw1S-SsH0/UOWd8m2ZU_I/AAAAAAAAAF4/oT6A4IdGqR4/s320/war.png)
Salen muchas variables pero la que nos interesa es la POST, bien ahora daremos click a donde dice POST y daremos en repetir, veras que tenemos color=red ó cualquier otro color y quedaría así:
(http://4.bp.blogspot.com/-865qOFmdZWg/UOWfPHRiCOI/AAAAAAAAAGM/ltSfDaQLjqk/s320/lol.png)
Damos a repetir y miramos la alerta:
(http://3.bp.blogspot.com/-RUSnlhxHQuI/UOWgE1W2fSI/AAAAAAAAAGU/D1mGn7rBSR8/s320/alert.png)

Existen funciones en PHP que filtran diferentes caracteres, en está entrada entenderemos 2 de ellos y cual es su función.

htmlentities()

Esa función convierte todos los caracteres html.

htmlspecialchars()

Convierte los siguentes caracteres:

'&' (et) se convierte en '&amp;'
'"' (comillas dobles) se convierte en '&quot;' cuando ENT_NOQUOTES no está establecido.
"'" (comilla simple) se convierte en ''' (o &apos;) sólo cuando ENT_QUOTES está establecido.
'<' (menor que) se convierte en '&lt;'
'>' (mayor que) se convierte en '&gt;'


Bueno mi favorito es htmlentities(), pero puedes usar el que más te guste.

¿Como aplicarlo?

tenemos nuestro formulario y nuestro PHP:

Código (php) [Seleccionar]
<form method="POST" action="archivo.php">
<input type="text" name="lol">
<input type="submit" value="Probar">
<?php 
 $variable 
htmlentities($_POST['lol']); 
 echo 
$variable
?>




También podemos sustituir el htmlentities por htmlspecialchars.

Saludos.
Okol.
Título: Re:XSS y reparacion
Publicado por: ANTRAX en Enero 03, 2013, 06:36:37 PM
Que buen aporte!
Muchas gracias okol! esta excelente!
Título: Re:XSS y reparacion
Publicado por: Hackmundy en Enero 04, 2013, 01:17:36 AM
Muchas Gracias me sirve mucho...

Saludos..
Título: Re:XSS y reparacion
Publicado por: TXSec en Febrero 16, 2013, 06:09:45 AM
Por que me tira Bad Request, Algo estoy haciendo mal? lo eh intentado en varios casos y siempre sale esto.
Título: Re:XSS y reparacion
Publicado por: Statick en Julio 16, 2013, 02:58:50 PM
Interesante.

Saludos
Título: Re:XSS y reparacion
Publicado por: blackdrake en Julio 16, 2013, 03:45:35 PM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Por que me tira Bad Request, Algo estoy haciendo mal? lo eh intentado en varios casos y siempre sale esto.

Pon tu código y te lo soluciono, tendrás un error de sintaxis, si no quieres hacerlo público envíamelo por MP :)

Un saludo.