1、CSRF跨站请求伪造
1.1 CSRF漏洞概述
1)在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般为一个链接)然后欺骗用户进行点击,用户一旦点击了这个请求,整个攻击也就完成了。所以CSRF攻击也被称为“one cilck”攻击
2)CSRF与XSS的区别:CSRF是借用户权限完成攻击,攻击者并没有拿到用户权限,而xss则是直接盗取了用户的权限,然后实施破坏。
3)如何确定一个web系统存在CSRF漏洞
*对目标网站增删改的地方进行标记,并观察其逻辑,判断请求是否可以被伪造
--比如修改管理员账号,并不需要验证旧密码,导致请求容易被伪造
--比如对于敏感信息的修改并没有使用安全的token验证,导致请求容易被伪造
*确认凭证的有效期(这个问题会提高CSRF被利用的概率)
--虽然推出或者关闭了浏览器,但是cookie仍然有效,或者session并没有及时过期,导致CSRF攻击变得简单
1.2 CSRF(get/post)实验演示和解析
1)get型csrf演示
*get型的csrf漏洞所包含的信息都在url里,所以,我们只要可以获取到目标用户的url,就能对其信息进行修改,但同时还要保障的是,用户此时必须处于登陆状态,浏览器没有关闭
*这是我们得到的url,并对他进行加工,修改地址为baoding:http://192.168.66.246/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=baoding&email=lucy%40pikachu.com&submit=submit
*这样就是我们构造完成的url,让用户点击
2)post型csrf演示
*post型的csrf漏洞所需要修改的信息并不在url里,而是在请求体里面进行提交的。所以我们需要和xss的post请求一样,布一个站点,做一个表单,让目标用户点我们站点的表单的url。向存在post型csrf漏洞的页面去提交post请求。
*我们得先做一个post表单,并把它放到我们的www文件夹下
*发送给用户连接,用户访问,则完成修改:192.168.66.246/post.html
1.3 常见CSRF防范措施
1)增加token验证(常用)
对关键操作增加token参数,token值必须随机,每次都不一样
2)关于安全的会话管理(避免会话被利用)
*不要在客户端保存敏感信息(比如身份认证信息)
*测试直接关闭,退出时的会话过期机制
*设置会话过期机制,比如15分钟内误操作,则自动登陆超时
3)访问控制安全管理
*敏感信息的修改时需要对身份进行二次认证,比如修改账号,需要判断旧密码
*敏感信息的修改使用post,而不是get
*通过http头部中的referer来限制原页面
4)增加验证码
一般用在登陆,(防暴力破解),也可以用在其他重要信息操作的表单中