第九周作业--CSRF
CSRF漏洞原理,通过csrf进行地址修改实验演示,token详解及常见防范措施
一、CSRF漏洞原理
Cross-site request forgery 简称为"CSRF"
在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接)
然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击也就完成了
所以CSRF攻击也被称为为“one click”攻击
eg:
如果想要修改lucy的个人信息:
第一步 需要有lucy的权限
可以先自己注册一下 修改一下个人信息 用bp抓包 获得自己的URL
第二步 通过自己的URL进行修改 来欺骗lucy点击
—————————————————————
满足CSRF的条件:
1.开发人员没有防范CSRF 导致请求容易被伪造
2.攻击目标必须在点击伪造链接时 也刚好在登录这个网站
3.攻击者比较好骗
3个条件必须同时满足 所以CSRF安全级别较低
如何确认一个web系统存在CSRF漏洞:
1.对重要信息增删改查时 利用bp自己抓包 测试请求是否可以被伪造
2.是否有CSRF的token验证
3.确认凭证的有效期
—————————————————————
二、通过csrf进行地址修改实验演示
我们打开pikachu中的CSRF(get)
我们先进行登录
lucy/123456
我们修改一下地址
修改地址其实就是一个敏感信息的操作 我们打开bp
我们复制到记事本中
GET /pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=shenyang&email=lucy%40pikachu.com&submit=submit
发现并没有看到token 所以后台并没有进行CSRF的防范
我们现在修改这个URL
将GET请求修改为完整的URL
http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=beijing&email=lucy%40pikachu.com&submit=submit
现在只需要把这个URL发给lucy lucy打开之后
发现信息已经被修改了 该页面是恶意页面打开之后的效果 我们现在刷新一下原本的页面
发现也被修改 这样就成功修改了lucy的个人信息
攻击者就可以借此利用 来盗取lucy的一些信息
接下来我们演示一下post请求下
和之前一样 先进行登录 然后修改一下
用bp抓包
看到所有请求是由POST提交的 利用方法就是与XSS差不多的
就是制作一个恶意站点 复制一个类似的表单 让lucy点击访问
三、token详解及常见防范措施
造成CSRF的主要问题是链接容易被伪造
所以我们可以添加一个随机码 这就是token
这是一个生成token的简单代码
正式的系统会比这个复杂一点
操作和之前一样 登录修改一下信息 用bp抓包
我们可以看到有一串token的随机码
token=733905cd26a84a514d611139178
每次请求token都会变化
我们打开控制台看一下
我们刚才又修改了一下信息 发现token变化了
每次都会进行token验证 所以就可以防止CSRF
在后端源码中 我们看到
只有当前端接受到的token和后端的token相同时 才会执行下面的操作 不相等则直接跳出
这里是后端制作token的代码
这是表单的代码
CSRF防范措施: