实战篇——CSRF漏洞pikachu靶场实战
CSRF的原理
攻击者利用用户在某个网站上的已登录状态,诱使用户点击恶意链接,恶意页面会向服务器自动发送预先准备好的恶意请求。由于请求中自动包含了用户的认证凭证,服务器会误以为是合法的用户操作,从而执行恶意请求。
CSRF的分类
(1) GET型
点击submit,抓包:
构造恶意链接:
http://192.168.118.147/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=11111111111&add=nba+lakes&email=kobe%40pikachu.com&submit=submit
点击恶意链接,成功修改电话号码:
(2) POST型
点击submit,抓包:
生成CSRF PoC:
在第三方服务器上构造恶意页面:
此处在原有PoC的基础上进行了一定的修改,首先通过JS脚本实现按钮的自动点击,其次将按钮设置为不可见。
点击恶意页面对应的链接,成功修改电话号码:
CSRF的防御
1.使用同站策略SameSite Policy:
Strict禁止Cookie在跨站请求中发送,Lax禁止Cookie在跨站Post请求中发送,None允许Cookie在跨站请求中发送
2.使用CSRF Token,将一个随机字符串隐藏到页面中,第三方站点受到同源策略的限制无法获得。
3.对请求头中的Referer字段或其他自定义字段进行验证。