HTTP Smuggling to deliver XSS through User Agent - Portswigger
En este laboratorio de PortSwigger nuestro objetivo será que una víctima ejecute un alert(1)
a través de un HTTP Smuggling. Para ello, deberemos de encontrar un XSS e intentar infectar a la víctima a través del HTTP Smuggling.
Laboratorio: HTTP Smuggling to deliver XSS through User Agent
Índice
Reconocimiento del HTTP Smuggling
Como ya sabemos hay distintos tipos de HTTP Smuggling. Para saber en que vista de la web se produce y de que tipo es utilizaré una extensión de BApp llamada HTTP Request Smuggler de la siguiente manera:
En mi caso usaré Launch All Scans. Estos son los resultados:
Como se puede ver en la primera entrada, parece ser vulnerable al HTTP Smuggling de tipo CL.TE en el path /
. Pasamos a verificarlo manualmente con la siguiente request:
Como se puede observar, lo que busca esta request es que la segunda vez que le demos a Send nos devuelva lo correspondiente al path /error
y es exactamente lo que ocurre. Por lo tanto podemos decir que estamos antes un CL.TE.
XXS
Una vez que hemos encontrado el HTTP Smuggling, debemos de buscar el XSS. Este se encontrará en la vista de un post cualquiera en un input oculto el cual toma nuestro User-Agent:
Si comprobamos a cambiar nuestro User-Agent por "/><script>alert(1)</script>
veremos que es vulnerable a XSS.
Explotación
Ahora tenemos que modificar el HTTP Smuggling que hemos encontrado anteriormente para que haga una petición maliciosa a un post cualquiera con un User-Agent con el payload del XSS y con esto habremos completado el laboratorio: