相关靶场工具:pikachu

CSRF-GET

http://192.168.182.145/vul/csrf/csrfget/csrf_get_login.php
image.png

get此处需要我们登录用户名和密码,输错则提示密码有问题。猜测对方的测试意图是,我们用正确的账号和密码登录后,接受外部的csrf攻击,从而修改相应的密码。所以,我们直接去后台找找登录csrf-get页面的账号和密码。

image.png
image.png
简单的密码破解很简单:
image.png
试图登录:
image.png
image.png

页面信息展示了个人内容,修改个人信息处应该可以修改个人内容。
image.png

错误的猜想

原以为靶场里面,作者会给让我们做一个get参数的提交。但我们提交修改个人资料以后,发现其实并没有发现get参数的url形式出现。 根据之前我们学到的内容,可能是走了POST参数。如果POST参数如示例2的选项的话,那么我们还是可以构造靶场演示-CSRF-GET - 图8这样的csrf形式。

正常的做法

采用抓包的形式,更直观的看看,到底背后发生了什么。光靠肉眼是快不过计算机的。直接F12提交并抓包:
image.png
修改资料以后,马上就能看到有一个GET的URL参数被处理了。然后这个URL:

http://192.168.182.146/vul/csrf/csrfget/csrf_get_edit.php?sex=%E7%94%B7&phonenum=13544444444&add=%E6%88%90%E9%83%BD%E5%B8%82%E7%AC%AC%E4%B8%89%E4%BA%BA%E6%B0%91%E5%8C%BB%E9%99%A2&email=sss%40www.com&submit=submit

迅速的转到了下一页面:个人信息显示页面。从URL地址来看,这个就是一个活生生+赤裸裸的csrf地址。url地址里没有任何验证码来证明是用户批准发出的信息。

CSRF-GET实践

构造csrf连接,准备修改资料:

http://192.168.182.146/vul/csrf/csrfget/csrf_get_edit.php?sex=%E7%94%B7&phonenum=1358888888&add=%E6%88%90%E9%83%BD%E5%B8%82%E7%AC%AC%E4%B8%89%E4%BA%BA%E6%B0%91%E5%8C%BB%E9%99%A2&email=love@love.com&submit=submit

马上构造一个带src标签的页面,请我们的朋友来点。
http://192.168.56.1/kyd.html
image.png
让我们打开这个页面看看,记得打开之前 把抓包软件打开,注意对比前后个人信息的对比。
打开前:
image.png

执行后:
image.png

打开后
我们可以看到更新数据请求有提交到服务器,但我们查看原始数据页面的时候,发现并没有被修改到。
image.png
假设大家是看不到后台服务器端源码的。查看具体的抓包信息,我们看到唯一的区别:
image.png
而原始提交页面,提交数据的时候,是带了cookies的。cookies里存放的是php是会话信息sessionID.
原始提交的修改页面:
image.png
两者的会话ID明显不一样。 请大家复习一下会话session。
如何获得会话session:

  • 登录获得,但你获得的会话ID,肯定不是你自己的。
  • 用其他的办法窃取到vince的会话ID。

同样,我们可以把这个请求,直接复制下来,单独开一个火狐浏览器来抓包看看。我们可以看到,由于没有合理的sessionID,被阻拦到了登录页面了。
image.png
tips:

  • 换一个浏览器直接访问url地址,肯定是不带cookies会话标识的,服务器还会送你一个新的cookies会话标识。
  • 在tabs式的浏览器页面里,第三方的页面src 正常页面的地址,浏览器也不会傻傻的把正常页面的内容发给你。

CSRF-GET的思考

  1. 如果把这个修改个人信息的url地址,直接在chrome的URL地址栏提交会如何?
  2. 如果在http://192.168.56.1/kyd.html的页面里,直接做个超链接,让用户点击会如何?[位于chrome浏览器里]

思考结果:
关于1:image.png
直接显示修改成功!说明,该主动操作是成功了的。
关于2:
把数据还原,我们直接在超链接里点,增加超链接:
http://192.168.56.1/kyd_link.html
image.png
image.png
image.png
超链接主动点击行为,发生在本浏览器tab页面的,浏览器,也会主动把cookies附送上去。

CSRF-GET的进阶

关于kyd_link.html的页面内容,大家可以看到,其实我们是可以自己在外部创造的测试页面。如果用户不主动去点击,我们是否可以让它自动点击呢? (这或许会激发同学们对dom,javascript,前端框架jquery的学习兴趣)。通过脚本,我们自动化的操控浏览器。答案是肯定的。只要符合浏览器js的运行规则即可。
修改html到新页面:http://192.168.56.1/kyd_link_onload.html
image.png
到chrome浏览器里,一浏览器的效果:
image.png
我们把pleaseclickme的代码修改为自动点击超链接的代码:
image.png
image.png
运行看效果,马上就得到了修改。
image.png