pikachu漏洞平台之CSRF
CSRF简介
CSRF 是 Cross Site Request Forgery 的 简称,中文名为跨域请求伪造
在CSRF的攻击场景中,攻击者会伪造一个请求(一般是一个链接)
然后欺骗目标用户进行点击,用户一旦点击了这个请求,这个攻击也就完成了
所以CSRF攻击也被称为“one click”攻击
CSRF和XSS区别
XSS目标在于获取用户cookie,利用cookie伪装为受害者身份进行登录进而造成破坏,
CSRF并没有获取到用户的权限,而是利用用户的权限执行我们的payload进行攻击
1.CSRF(get实验)
首先我们先登录
我们先将地址随意修改一个值,然后通过brup suite抓包查看一下,从get提交里面发现请求连同信息都包含在了url里面,包括敏感信息,这时假如我是攻击者,我在这个平台上申请一个账号,然后修改密码,通过这样抓包我就获取到了这个get请求,稍作修改我就可以将其变成一个链接,发给lucy后就可以把他的信息修改了。
例如我现在伪造一个链接192.168.42.122/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=12345678922&add=zhangjiakou&email=lucy%40pikachu.com&submit=submit
现在我们将地址修改为zhangjiakou 把这穿链接让lucy点击就可以了
输入这个链接后,地址已经被修改了。
2.CSRF(post实验)
还是像之前一样登录进去先修改一次信息,抓包查看
这次我们发现post提交并没有将敏感信息放在url中提交,而是放在了最下面的表单中提交。我们这次的思路是和xss post一样伪造一个表单页面,让用户点击然后修改用户信息
这是我们伪造的页面代码,我们把这个html放在www目录下,只要用户点击这个页面的链接,我们就可以将其地址信息修改为hacker
3.CSRF(token)
打开CSRF(token)登录后,我们修改信息抓包后发现,url中多了token一串字符,token是随机生成的,如果后台是对比token的值来操作的话,我们就无法伪造url了。
防护:
- 增加Token验证(常用做法)
- 对关键操作增加Token参数,token必须随机,每次都不一样
- 关于安全的会话管理(避免会话被利用)
- 不要在客户端保存敏感信息(比如身份验证信息)
- 退出、关闭浏览器时的会话过期机制
- 设置会话过机制,比如15分钟无操作,则自动登录超时
- 访问控制安全管理
- 敏感信息的修改时需要身份进行二次认证,比如修改账号密码,需要判断旧密码
- 敏感信息的修改使用POST,而不是GET
- 通过HTTP头部中的REFERER来限制原页面
- 增加验证码
- 一般在登录(防暴力破解),也可以用在其他重要信息操作的表单中(需要考虑可用性)