第九周作业--CSRF

CSRF漏洞原理,通过csrf进行地址修改实验演示,token详解及常见防范措施

一、CSRF漏洞原理
Cross-site request forgery 简称为"CSRF"

在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接)

然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击也就完成了

所以CSRF攻击也被称为为“one click”攻击

eg:
第九周作业--CSRF
如果想要修改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)
第九周作业--CSRF

我们先进行登录
lucy/123456

第九周作业--CSRF
我们修改一下地址
第九周作业--CSRF
修改地址其实就是一个敏感信息的操作 我们打开bp
第九周作业--CSRF
我们复制到记事本中

GET /pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=shenyang&email=lucy%40pikachu.com&submit=submit

第九周作业--CSRF
发现并没有看到token 所以后台并没有进行CSRF的防范

我们现在修改这个URL
第九周作业--CSRF
第九周作业--CSRF
将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打开之后
第九周作业--CSRF
发现信息已经被修改了 该页面是恶意页面打开之后的效果 我们现在刷新一下原本的页面
第九周作业--CSRF

发现也被修改 这样就成功修改了lucy的个人信息
攻击者就可以借此利用 来盗取lucy的一些信息

接下来我们演示一下post请求下
和之前一样 先进行登录 然后修改一下
用bp抓包
第九周作业--CSRF
看到所有请求是由POST提交的 利用方法就是与XSS差不多的

就是制作一个恶意站点 复制一个类似的表单 让lucy点击访问

三、token详解及常见防范措施
造成CSRF的主要问题是链接容易被伪造
所以我们可以添加一个随机码 这就是token第九周作业--CSRF

这是一个生成token的简单代码
正式的系统会比这个复杂一点

操作和之前一样 登录修改一下信息 用bp抓包
第九周作业--CSRF
我们可以看到有一串token的随机码
第九周作业--CSRF

token=733905cd26a84a514d611139178

每次请求token都会变化
我们打开控制台看一下

第九周作业--CSRF

我们刚才又修改了一下信息 发现token变化了
每次都会进行token验证 所以就可以防止CSRF

在后端源码中 我们看到
第九周作业--CSRF
只有当前端接受到的token和后端的token相同时 才会执行下面的操作 不相等则直接跳出

这里是后端制作token的代码
第九周作业--CSRF

这是表单的代码
第九周作业--CSRF

CSRF防范措施:
第九周作业--CSRF