Underc0de

[In]Seguridad Informática => Seguridad web y en servidores => Mensaje iniciado por: ANTRAX en Mayo 18, 2015, 12:05:32 AM

Título: XSS por POST
Publicado por: ANTRAX en Mayo 18, 2015, 12:05:32 AM
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á: www.hospedando.com.mx/descargas/formulario.zip 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:

https://addons.mozilla.org/es/firefox/addon/tamper-data/

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

(https://lh5.googleusercontent.com/-ZWufEYHUdmQ/VVlVPvI83cI/AAAAAAAADkM/AHz4L0VKlH0/w620-h582-no/1.png)

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.

(https://lh4.googleusercontent.com/-j_kAR_ncjSM/VVlVQ8oixYI/AAAAAAAADkc/kyJP34cN284/w1033-h582-no/2.png)

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

(https://lh6.googleusercontent.com/-lBsFfUVKZIA/VVlVQ_OOqbI/AAAAAAAADkY/bvl4P16IJU4/w640-h655-no/3.png)

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...

(https://lh6.googleusercontent.com/-U_ew3Toe_4o/VVlVTf4LZHI/AAAAAAAADkk/LdbBOytPgbk/w1129-h607-no/4.png)

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

Espero que les sirva!

Saludos!
ANTRAX
Título: Re:XSS por POST
Publicado por: EPSILON en Mayo 18, 2015, 11:36:37 PM
Muy bueno @ANTRAX (https://underc0de.org/foro/index.php?action=profile;u=1) !, 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!
Título: Re: XSS por POST
Publicado por: GENIOL en Agosto 16, 2021, 09:57:39 AM
excelente post!!! muchas gracias por el aporte!! HailUnderc0de
Título: Re: XSS por POST
Publicado por: elshotta en Agosto 19, 2021, 01:34:44 PM
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?
Título: Re: XSS por POST
Publicado por: WHK en Septiembre 12, 2022, 01:12:54 PM
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:

- https://cwe.mitre.org/data/definitions/20.html
- https://cwe.mitre.org/data/definitions/79.html
Título: Re:XSS por POST
Publicado por: developerheh en Junio 20, 2023, 11:44:52 AM
Me encantó el postre. Gracias