XSS por POST

Iniciado por ANTRAX, Mayo 18, 2015, 12:05:32 AM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

Hola a todos!

Por el foro he visto muchos papers o tutoriales sobre XSS, pero ninguno habla del metodo POST.
Hace unos días reportaron un XSS por POST en el formulario de contacto de Underc0de. Por suerte no era nada riesgoso, pero era una vulnerabilidad que debíamos arreglar.
En esta ocasión usaremos el código de ese formulario de contacto para reproducir la falla y para ver como probar si nuestras aplicaciones son vulnerables a los XSS por POST.

El código del formulario de contacto está acá: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta por si alguno desea realizar la prueba.

Además, necesitaremos alguna herramienta que modifique los parámetros que enviemos por POST. Yo usare Tamper Data que es un complemento de Firefox:

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Una vez montado el formulario de contacto se vera algo así:


El primer paso será completar todos sus campos y abrie Tamper Data. Una vez hecho esto, damos en "Comenzar Modificación" (En el tamper data) y enviamos el formulario de contacto.
Seguido a esto, nos aparecerá una alerta en Tamper Data para modificar los datos que estamos enviados.


Damos en modificar, y revisamos los valores que está enviando del lado derecho, que son los que hemos cargado desde el formulario.


Ahora es momento de jugar con estos campos. Este formulario de contacto no filtra sus variables, asique colocaremos algún vector de XSS en sus parámetros.
En este caso, coloqué un simple alert en el campo correo.

<script>alert('XSS')</script>

Al dar en Aceptar, el sitio seguirá cargando con la nueva información suministrada...


Y como podrán apreciar, apareció el Alert con nuestro mensaje.

Espero que les sirva!

Saludos!
ANTRAX


Muy bueno @No tienes permitido ver los links. Registrarse o Entrar a mi cuenta !, esto viene muy bien porque mucha gente cree o se limita a pensar que este bug solo se explota por GET al igual que las Inyecciones SQL y esto no es así, y no esta de más decir que también pueden utilizar Live HTTP Headers o BurpSuite para editar cabeceras ya que las considero de fácil uso.  Saludos!

excelente post!!! muchas gracias por el aporte!! HailUnderc0de

muy bueno,
pero entonces lo que quieres decir es que por el formulario normal no se puede poner el xss?
solo es capturando el valor con el tamperdata?

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
muy bueno,
pero entonces lo que quieres decir es que por el formulario normal no se puede poner el xss?
solo es capturando el valor con el tamperdata?

Un XSS es independiente si va via get, post, put, delete, etc, tampoco depende de un software en particular, de hecho un atacante no necesita que todas sus victimas tengan instalado el tamper data o el burpsuite, lo que importa es lo que el servidor recibe y lo que retorna, en otras palabras lo único que hay que hacer es que alguien pueda enviar involuntariamente una solicitud http (sin importar el método) y que en algún input pueda contener algún código malicioso que pueda ser retornado por el servidor con cabecera content type de tipo html, entonces, por ejemplo, podrás enviar una etiqueta <script> para que te lo retorne el mismo servidor y esta se ejecute, esto permite que si un usuario accede a algún html tuyo y este tiene instrucciones de redireccionar al usuario hacia una url (sin importar si es get o post) su navegador pueda ejecutar la instrucción que tu desees, como por ejemplo, obtener la cookie de sesion y enviarla hacia otro servidor si es que la cookie lo permite (debido al flag httponly).

Dale un vistazo a estos links:

- No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
- No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
- No tienes permitido ver los links. Registrarse o Entrar a mi cuenta - No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Me encantó el postre. Gracias