目录
CSRF攻击
客户端跨站请求伪造
原理
案例
1、用户登录了某银行网站,网站返回cookie给用户
2、用户点开另一个黑客精心构造好的网站
3、黑客这个网站中有些请求是某银行的一些交易请求,用户点进该网站的时候就已经被动的发起了对于这个银行转账交易请求。
4、浏览器只会帮你发送请求,但是某银行的cookie登录状态存在浏览器中,正好黑客搭建好的网站帮你发送了该交易请求,那么攻击就在悄无声息中攻击成功了。
总的来说,CSRF攻击是建立在你与某个网站之间的会话基础之上攻击的。
CSRF攻击分类
- 站外攻击:
站外攻击就是刚刚说的那个案例,首先网站没有加referer校验,其次对于敏感操作的时候没有设置token校验导致或者让用户输入用户名密码导致的。 - 站内攻击:
站内攻击是发生在某个站点内存在csrf漏洞,那么攻击者就能够将请求代码发在一些帖子或者图片链接里,用户查看的时候就被强迫发起请求了。
CSRF漏洞检测
CSRFTester
使用工具,该工具是java开发的。默认监听端口是8008。
- 浏览器开代理监听8008端口。然后开启CSRFTester,提交修改密码操作即可。
注意:该工具只是做了一个流量监听,没有拦截,所以你的这次请求是正常发过去服务端那边修改密码成功了的。
- 点击右下角的生成html页面即可。
这里是帮你生成一个伪造表单,然后你就可以通过点击该html测试一下该网站是否有csrf漏洞了。
- 点击该页面里面就是你生成好的csrf攻击请求。
自解压
有的压缩程序有压缩成为自解压格式的,这里就使用winrar程序来进行实验。
-
添加到压缩文件
-
点击自解压后就会发现变成了exe程序了
-
高级->自解压选项
-
设置->提取后运行
这里设置的是你伪造好的请求,当用户下载你这个软件双击的时候就会自动发起请求。(这其实也算是一种捆绑,因此网上下载下来的软件不安全就是这个原因)
-
点击确定后就会生成一个exe程序,该程序你还可以改图标伪装得更像。
-
双击后会让你安装
-
如果一些防范意识差的用户直接就点击浏览器并且正好他也开启了和那个网站的一个会话,那么这时候发送请求就寄寄了。↓成功修改密码。
当然这是两个小案例,CSRF还能实现拖库操作,比如discuss论坛有管理员页面,那么你就可以尝试伪造拖库请求,通过一些xss漏洞发布一些博客帖子,当管理员审核的时候就被攻击成功了。
手工检测
通过抓包去除referer去操作看看能不能成功,如果可以就基本代表有csrf漏洞的。没有token的一般也能抓包验证下是否存在csrf漏洞。
防护手段
- 添加http头referer校验
- 加token验证:csrftoken/jwt
- 让用户在发起某些敏感操作的时候进行登录验证