29.4 Lab: DOM XSS via an alternative prototype pollution vector

This lab is vulnerable to DOM XSS via client-side prototype pollution. To solve the lab: Find a source that you can use to add arbitrary properties to the global Object.prototype. Identify a gadget property that allows you to execute arbitrary JavaScript. Combine these to call alert() | Karthikeyan Nagaraj

Karthikeyan Nagaraj
2 min readJun 14, 2024

Description

This lab is vulnerable to DOM XSS via client-side prototype pollution. To solve the lab:

  1. Find a source that you can use to add arbitrary properties to the global Object.prototype.
  2. Identify a gadget property that allows you to execute arbitrary JavaScript.
  3. Combine these to call alert().

You can solve this lab manually in your browser, or use DOM Invader to help you.

Solution

  1. Load the lab in Burp’s built-in browser.
  2. Enable DOM Invader and enable the prototype pollution option.
  3. Open the browser DevTools panel and go to the DOM Invader tab and reload the page.
  4. Observe that DOM Invader has identified a prototype pollution vector in the search property i.e. the query string.
  5. Click Scan for gadgets. A new tab opens in which DOM Invader begins scanning for gadgets using the selected source.
  6. When the scan is complete, open the DevTools panel in the same tab as the scan, then go to the DOM Invader tab.
  7. Observe that DOM Invader has successfully accessed the eval() sink via the sequence gadget.
  8. Click Exploit. Observe that DOM Invader’s auto-generated proof-of-concept doesn’t trigger an alert().
  9. Go back to the previous browser tab and look at the eval() sink again in DOM Invader. Notice that following the closing canary string, a numeric 1 character has been appended to the payload.
  10. Click Exploit again. In the new tab that loads, append a minus character (-) to the URL and reload the page.
  11. Observe that the alert(1) is called and the lab is solved.

--

--

Karthikeyan Nagaraj

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