什么是CSRF
CSRF跨站请求伪造,也被称为“One Click Attack”,通常缩写为CSRF,是一种对网站的恶意利用。它与XSS不同,XSS利用站点内的新人用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。
它的成因是因为网站的Cookie在浏览器中不会过期,只要不关闭浏览器或者退出登录,那以后只要是访问这个网站,就会默认你已经登录的状态。而在这个期间,攻击者发送了构造好的CSRF脚本或者包含CSRF脚本的链接,可能会执行一些用户不想做的功能。
攻击特点:攻击者盗用用户的身份,以用户的名义进行某些非法操作。
tips:业内对需要交互的漏洞不重视。
CSRF的核心在于缺乏验证:
- 像验证码是CSRF最好的防御方法,修改密码,我们要输入一个验证码,做任何操作都加个验证码其实完全杜绝CSRF。
- 开发为了安全,设置了一个东西叫做Token。它是一种验证机制,每个请求的表单里面都存在了一个Token字段。(Token是现在解决CSRF最好的方法)
测试是否有CSRF的方法最简单的是注册两个账号:用一个来抓包准备攻击包,另外一个账号来尝试看攻击包是否有作用。
攻击前提:
1、受害者已经登陆合法网站,建立了一个会话。
2、合法网站要有csrf漏洞。
3、受害者访问了黑客发来的链接,进行了非法操作的实现。(第三步最为困难)
Tip:burp里有CSRF的自动生成脚本。
CSRF攻击是很难实现的。
CSRF攻击的改进:
1、利用短链接工具将url缩短,增强迷惑性。
2、将csrf代码嵌入其他网页(iframe)
3、将csrf代码写入xss注入点中(最好是存储型)
用户触发xss 便可以实现csrf攻击。
优点:更加具有隐蔽性,不会出现密码修改界面。
CSRF和XSS的区别
xss:跨站脚本攻击、诱骗用户点击恶意链接盗取用户cookie进行攻击、不需要用户进行登录、xss除了利用cookie还可以篡改网页等。
csrf:跨站请求伪造、无法获取用户的cookie而是直接冒充用户、需要用户登录后进行操作