第1关 CSRF(get)
1·直接点击提示得到账号密码进行登录。
2·点击修改个人信息进入修改界面点击submit进行修改
3·发现url没有变化,点击提交之后就跳转到上图这个显示个人信息的页面了,信息也修改成功了
4·这时候我们可以使用burpsuit进行抓包修改,在提交修改个人信息的时候,可以抓包,看到下面的内容
5·从上面的url可见,修改用户信息的时候,是不带任何不可预测的认证信息的。那么,这里应该是可以被利用的。
在vince登录状态下(其实这个链接里面是不包含用户名的,谁登录都无所谓,只要有人登录着就行,登录着的用户的信息就会被改成url提供的那些),试试改一改上面的链接,比如把电话号码改一改。浏览器地址栏输入payload:
127.0.0.1/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=boy&phonenum=123456789&add=nbaluckhouse&email=allen%40qq.com&submit=submit
6·如果被攻击者此时登录状态或cookie/session没有过期,则她的信息被修改。跳转到显示用户信息的地方,手机号已经被成功修改,攻击成功。
第2关 CSRF(post)
1`依旧登陆vince账号进行修改
2·进入修改信息界面,点击submit进行抓包
3·从请求报文来看,和前一关一样,没有不可预测的认证信息,可以被利用。
但是这一关是post类型,URL不再显示修改参数,所以无法再使用上述办法(即通过URL来伪造请求)进行修改,但是抓包可以知道本页面中有的标签以及name,方便后面构造表单时使用。
此时,黑客可以通过构造恶意站点,将POST请求隐藏在站点中的表单中,然后诱骗用户进行点击,当用户点击后触发表单,数据自然就POST到存在CSRF漏洞的网站,用户的信息则被恶意修改。
将写好的表单部署到黑客站点,这里因为是本机做演示,所以放到Pikachu/vul/csrf/目录下
4·最后,当用户在登录状态下,访问黑客站点并点击提交按钮,那么其个人信息将会被恶意修改。
第三关 CSRF Token
1·修改用户信息并提交,在burpsuite的proxy模块可以看到报文中包含token
每次请求,都增加一个随机码(需要够随机,不容易被伪造),后台每次对这个随机码进行验证, 我们进入Pikachu平台的CSRF(token)页面并登录,我们可以看一下这个GET请求跟前面比较,这里多了一个Token,如果后台对提交的Token进行了验证,由于Token是随机的,我们就无法伪造URL了。