漏洞场景
在特殊场景下,客户端向服务器发起更改状态的请求,容易产生CSRF漏洞。
常见场景:
.银行转账
.修改密码
漏洞描述
跨站请求伪造(Cross Site Request Forgery,CSRF)是一种攻击,它强制浏览器客户端用户在当前对其身份验证后的Web应用程序上执行非本意操作的攻击,攻击的重点在于更改状态的请求,而不是盗取数据,因为攻击者无法查看伪造请求的响应。
漏洞原理
攻击者可以伪造当前已登录用户的身份访问正常的网站,,执行非本意的操作。正常的网站,没有来源请求进行严格和过滤,导致攻击者可以伪造正常用户的请求,到达攻击目的。
漏洞危害
攻击者借用正常用户的身份,发起更改状态的请求,如:
.银行转账
.修改密码
.修改邮箱
.群发消息
......
漏洞评级
高危
漏洞验证
漏洞利用
.“屠龙宝刀,点击就送”
.DVWA重置当前密码
.......
漏洞防御
无效防御:
使用秘密的Cookie。
仅接收POST请求。
多步交易:多步交易,有可能会被恶意攻击者预测。
URL重写:用户的身份信息会暴露在URL中,不建议通过引入另一个漏洞来解决当前漏洞
HTTPS:所以安全机制的前提。
有效防御:
验证Referer字段:前URL的上一个URL;转账页面到转账操作。
添加Token验证。
二次验证:在关键操作之前,在输入密码或验证码。
HttpOnly:某些情况下禁止JS脚本访问Cookie消息。
SamaSite:Cookie属性,浏览器自带安全机制。