CSRF漏洞概述
在CSRF攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行请求,用户一旦点击了这个请求,整个攻击也就完成了,CSRF也被称为一次性点击攻击
CSRF(get/post)实验演示和解析
get请求
首先登录一个用户
在修改个人信息的时候
复制这个请求
http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=1111&phonenum=1111&add=1111&email=1111&submit=submit
那么我修改这个链接里面的内容,并且让已登录的人进行点击,也可以达到修改信息的目的,例如我把信息都修改为2222那么链接为
http://127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=2222&phonenum=2222&add=2222&email=2222&submit=submit
结果就被更改了
post请求
就需要伪制站点,通过伪装的站点进行请求,通过点击伪装站点的时候进行提交
这里首先需要使用之前的 BurpSuite
可以查看到post传输的是这个参数,把这个请求发送到repeater
修改,提交
页面就被修改了
Anti CSRF token
怎么确认存在CSRF漏洞
对目标伪装需要进行增删改的地方进行观察
- 修改密码不需要验证旧密码
- 对于敏感信息的修改没有使用安全的tokey验证
确认cookie的有效期
- 关闭,退出浏览器,cookie仍然有效果,session没有及时过期
防范措施
- 在提交的时候带上tokey进行验证
在提交关键参数的时候,token必须随机,每次都不一样
- 关于安全的会话管理(避免会话被利用)
- 不要在客户端保持敏感信息
- 应该开启浏览器关闭seesion过期的机制
- 设置session过期机制
- 访问控制安全管理
- 敏感信息的修改应该使用post而不是get
- 修改信息的时候应该进行二次验证
- 在不牺牲可用性的情况下可以加上验证码
跨域
http:// www. ezisys.com : 8080 / ezisys/test.js
协议 子域名 主域名 端口 资源地址
当协议、主机(子域名,主域名)、端口中的任何一个不相同时,称为不同域
我们把不同的域之间请求数据的操作,成为跨域操作