目录
记录学习记录成长
CSRF(Cross-Site Request Forgery)跨站请求伪造
有些人容易混淆和XSS的概念,或者分不清
事实是,CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。
一个简单的场景就是
小黑想要修改大白在购物网站tianxiewww.xx.com上填写的会员地址。
于是他自己跑到www.xx.com上注册了一个自己的账号,然后修改了一下自己的个人信息(比如:E-mail地址),他发现修改的请求是:【http://www.xxx.com/edit.php?email=xiaohei@88.com&Change=Change】
于是,他实施了这样一个操作:把这个链接伪装一下,在小白登录xxx网站后,欺骗他进行点击,小白点击这个链接后,个人信息就被修改了,小黑就完成了攻击目的。
下面我就用pikachu靶场的练习作为实战帮助大家理解
实现步骤:
对于get:
登录自己的账户
点击修改信息获取抓包信息
复制请求链接 /pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=man&phonenum=88888888&add=ice&email=vince%40pikachu.com&submit=submit
在前面加上localhost,如果是实战就加对应的网址啦
localhost/pikachu-master/vul/csrf/csrfget/csrf_get_edit.php?sex=man&phonenum=88888888&add=ice&email=vince%40pikachu.com&submit=submit
在目标用户登录的情况下,诱导其点击这个链接
目标用户:
当他点击了这个链接后,他的信息就瞬间改变了
这就是对于get形式的基本实现了
对于post
也是点击链接,就是链接的形成无法直接从url获取
用到bp的工具我们可以方便很多
生成html复制到一个html文件里
然后把文件放在自己的主机www目录下或者自己的服务器下都行
等这个时候再让目标用户访问这个链接也能实现修改信息的请求
CSRF产生的原因
攻击者盗用了你的身份信息,以你的名义发送恶意请求,服务器会以为这个请求是你发起的,其实却完成了攻击者所期望的一个操作。
挖掘
抓取正常请求的数据包,如果不存在token验证,去掉请求头中Referer字段再重新提交,如果服务器返回正常页面,基本可以确定存在CSRF漏洞
必要时还要修改referer字段
防护
- 验证码(最有效但影响用户体验)
- token
- 验证Referer
学到这只是了解,搞懂还是需要大量的练习
之后也会分享很多小记录
喜欢请关注1