InfoSec Write-ups

A collection of write-ups from the best hackers in the world on topics ranging from bug bounties and CTFs to vulnhub machines, hardware challenges and real life encounters. Subscribe to our weekly newsletter for the coolest infosec updates: https://weekly.infosecwriteups.com/

Follow publication

Member-only story

$350 XSS in 15 minutes

Anton (therceman)
InfoSec Write-ups
Published in
3 min readDec 23, 2022

Bug Bounty Writeup: $350 XSS in 15 minutes
Photo by Pepi Stojanovski on Unsplash

Hello 👋

This is my first and last Bug Bounty Writeup this year. 😀

I am sharing with you my latest XSS finding, which I’ve found 2 weeks ago.

This was the fastest and a bit unusual flow that I normally do when I search for XSS.

So let’s dive in…

  • Company asked me to retest an old XSS report.
  • I’ve checked that XSS and confirmed that it was fixed properly.
  • The specific endpoint had name a param that was vulnerable to Reflected XSS injection.
example.com/profile?name=<img+src=1+onerror=alert(1337)>
  • I’ve started to search for a bypass and used the Search function in Chrome Developer tools to search this endpoint /profile in all JS files to check for another vulnerable param, but found another endpoint:
example.com/services
  • The first idea that came to my mind was to put this URL in the google search engine and see if this endpoint was cached somewhere on the google web space with params.
  • After the first try, I found a cached endpoint with params on the first page of the results, the endpoint had ID param and some other params.
example.com/services?id=123&page=Demo
  • I’ve added my payload qwe'"<X</ to the ID param and started to check if anything is reflected somewhere on the webpage’s source code.
example.com/services?id=123qwe'"<X</
  • Besides that, I’ve opened the Network tab in Chrome Developer tools to check all requests that this endpoint might send somewhere.
  • After the second refresh of the page, I found an interesting AJAX request that used the JSONP callback param together with the ID param from the endpoint itself. The AJAX request URL was similar to this:
lib.com/find?id=123qwe&jsonp=cb12
  • The first thing that I tested was the JSONP param itself, to see if I can change it to an alert function with a custom parameter
  • To my surprise, there was no check for JSONP value, so I…

Published in InfoSec Write-ups

A collection of write-ups from the best hackers in the world on topics ranging from bug bounties and CTFs to vulnhub machines, hardware challenges and real life encounters. Subscribe to our weekly newsletter for the coolest infosec updates: https://weekly.infosecwriteups.com/

Write a response