目录
CSRF概述
CSRF(Cross-site request forgery,跨站情切伪造)由于在csrf的攻击场景中一般是伪造一个链接当用户点击链接的时候,攻击就已经完成了所以又被称为 one click attack/session riding 。是一种挟制用户在当前以登录的web应用程序上执行非本意的操作的攻击方法
一般CSRF对场景的要求比较高往往需要多个条件才能实现,所以算不上是高危漏洞但是也不容小觑。一般都是攻击者盗用用户的身份,以用户的名义发送恶意请求,可以造成个人泄露、财产安全等
如何判断网站是否具有CSRF漏洞
判断一个网站有没有CSRF漏洞,其实就是判断对关键信息(密码等)的操作(增删改)是否容易被伪造,
- 修改用户的账号密码时,是否需要验证旧密码
- 修改敏感信息时是否又token验证
- 是否在关闭或退出浏览器后及时销毁cookie或session
实现csrf攻击需要的条件
- 登录受信任的网站,并且在本地生成cookie
- 在不登出该网站的情况下,访问危险网站
CSRF和XSS的区别
CSRF是借用户的权限完成攻击,也就是说它并没有拿到用户的权限,而XSS则是直接拿到了用户的权限。且CSRF需要用户先登录网站,XSS不需要登录,CSRF是利用网站本身的漏洞去请求网站的API。XSS是向网站 A 注入 JS代码,然后执行 JS 里的代码,篡改网站A的内容。
如何方式CSRF攻击
- 对敏感信息的操作增加安全的token
- 对敏感信息的操作增加安全的验证码
- 对敏感信息的操作实施安全的逻辑流程,比如修改密码时,需要先校验旧密码等
PIKACHU--CSRF(get)
登录用户点击修改个人信息,抓取数据包
从数据包来看后台并没有做token,所以我们可以直接修改任意我们想修改的信息,同时又因为是get方式来提交信息。我们可以直接把要修改好的信息构造近url中,然后想办法让用户点击,用户点击完等页面跳转过去修改已经完成了
localhost/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=11111111&add=haker&email=l3333%40pikachu.com&submit=submit HTTP/1.1
get方式请求就是比较容易利用,所有的参rong数都在url中,只需要构造出链接(把对应的参数改成我们需要的值)然后发送给用户就可以了
PIKACHU---CSRF(post)
这里的测试流程跟get方式是一样的只不过由于是POST型的请求方式所以不能通过构造Url进行攻击,但是我们可以通过搭建一个站点,然后在站点上做一个表单,然后发送给用户站点的链接,当用户点击时就会自动向存在CSRF的服务器提交POST请求来修改个人信息。
PIKACHU--CSRT TOKEN
CSRF的主要问题是敏感操作容易被伪造,我们可以加入Token让请求不那么容易被伪造
每次请求都增加一个随机码(需要够随机不容易被伪造),后台每次对这个随机码进行验证,并且用完即毁
防护措施
- 增加token验证
- 对关键操作增加token参数,够随机。不能被轻易破解
- 关于安全的会话管理(由于登录态的原因避免会话被利用)
- 不要在客户端保存敏感信息(比如身份或验证信息)
- 退出,关闭浏览器的会话过期机制
- 设置会话过期机制,比如15分钟无操作,则登录自动超时
- 访问控制安全管理
- 敏感信息的修改需要身份进行二次验证,比如修改账号密码,需要判断旧密码
- 敏感信息的修改使用POST,而不是GET
- 通过HTTP头部中的referer来限制原页面
- 增加验证码
- 一般在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)