一:CSRF是什么
CSRF全称为跨站请求伪造,是一种网络攻击方式,在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。
二:CSRF的原理
CSRF攻击利用网站对于用户网页浏览器的信任,通过cookie来识别用户的,当用户成功进行身份验证之后浏览器就会得到一个标识其身份的cookie,只要不关闭浏览器或者退出登录,以后访问这个网站会带上这个cookie。
浏览器的同源策略:
用于限制一个origin的文档或它加载的脚本如何能与另一个源的资源进行交互,能够减少恶意文档,减少可能被攻击媒介。
如果两个URL的
1.协议 http/https
2.域名 www.baidu.com www.qq.com
3.端口号 80 443 都相同,就称这两个URL同源。
如何确认一个web系统存在CSRF漏洞
1.对目标网站增删改的地方进行标记,并观察其逻辑,判断请求是否可以被伪造
例如修改管理员账号时,不需要验证旧密码,导致请求容易被伪造;对于敏感信息的修改并没有使用安全的token验证,导致请求容易被伪造
2.确认凭证的有效期
虽然退出或关闭了浏览器,但cookie仍然有效,或者session并没有过期,导致CSRF攻击变得简单
三:pikachu靶场
第一关 CSRF(get)
进入靶场发现是一个登陆界面,所以我们直接点击提示得到账号密码进行登录,登录后是一个个人信息页面
抓包看到如下内容
修改url里面的内容
/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=9999999999&add=usa&email=lili%40pikachu.com&submit=submit
将url输入到网页中发现信息已经被修改
第二关 CSRF(post)
右键点击要伪造的页面,找到engagement tools->generate CSRF POC,复制于文本文件上,并放在pikachu目录下
运行此文件于浏览器上 ,出现404页面,应该是以下原因csrf_post.php文件中如果检测到用户没有登录,会跳转到同文件夹(csrfpost)下的csrf_get_login.php,但事实上csrfpost文件夹下并没有这个文件,因此会返回404 ,只需将csrf_get_login.php改成csrf_post_login.php就可以了
第三关 CSRF(Token)
提交使用bp抓包,我们发现有token验证,返回包里也有token
可以发现,用一次token之后就会失效,返回包里含有下一次的token值,我们可以利用这一点来绕过,将数据包发送到重发器,将返回包里的token值复制过来,然后将地址改为tianjin,发送数据包后在返回包里进行渲染,我们可以看到,已成功修改
在浏览器中刷新界面,也可以看到地址已修改成功