CSRF
前言
csrf主要是利用未失效的cookie来进行的攻击(做爬虫的时候就感觉cookie超有用,有了它就可以免登陆了)
但实际用起来感觉是比其它漏洞更为复杂不配合xss漏洞的话就要很有可能需要自己搭网站或者引诱别人点击链接,同样跨域问题也是很难解决。
下面主要结合dvwa靶场来对csrf来进行一个初浅的了解认识
练习
Low
可以看到csrf这里是一个修改密码的操作,从上面的url可以看到新密码是GET方式传过去的
这时候我们需要做的就是构造一个url让用户去点击,因为用户登录过,所以这时候点击链接通过相同的浏览器去访问就会带上cookie,通过low级别的认证,实现用户的密码被更改为我们设定的密码
http://192.168.2.123:8325/vulnerabilities/csrf/?password_new=new&password_conf=new&Change=Change#
可以看到访问url后返回了密码更改的提示
这时候admin的密码就已经被更改了为new
这时候登出,再用admin,new进行登录,就已经可以成功登录了
这就是利用了对方的cookie没有过期,而整个过程我们也不需要获取到对方的cookie只是借用(这里要注意的是必须是同一个浏览器,这也很好理解cookie是浏览器来保存的,不同的浏览器肯定不能互用cookie)
是不是觉得上面的网址很突兀!password=xxx这个稍微有点计算机知识的人就不会点吧…
所以我们可以修改网址,有一种短网址服务,
百度解释:
短网址服务,可能很多朋友都已经不再陌生,特别是在微博应用中十分普遍,比如,当我们在腾讯、新浪微博发微博时有时发很长的网址连接,但由于微博只限制140个字,所以微博就自动把您发的长网址给转换成短网址了。
这个网站在跳转的时候会给提示…
ok,百度这样良心的网站没有这样的提示,真好
最后是构造页面,html也不太会,参考别人构建的试一下吧…
<img src=“http://192.168.2.123:8325/vulnerabilities/csrf/?password_new=new&password_conf=new&Change=Change#” border=“0” style=“display:none;”/>
可以看到这个页面构造的很巧妙,这是别人访问你的链接后返回这个404页面,这个页面会已资源的方式去放我构造的链接,而图片通过样式设置也不会显示(作为菜鸟的我我觉得设计的还是很巧妙的)
Medium
这里服务器会对referer进行检测,检测里面是不是有host对应的值(写过爬虫的应该对referer很清楚,有些反爬机制也是检测referer)
这里host就是访问服务器ip的值
这里referer就表示从哪个页面来访问资源。这里它只判断referer里面是否包含了host的值,所以,我们这里将我们的html页面命名包含host的值就能绕过这样检测了
OK,我们还是在本地尝试,发现上面的1.html是没有产生效果的,但当我们将文件名改为192.168.2.123:8325.html后,再退出登录,发现就能成功登录了。
meidium级别主要对referer进行了校验。我们通过文件名的修改进行了绕过。
High
High级别要检查token,这就很麻烦了(虽然没有要你提供旧密码麻烦)
首先因为跨域的原因我们不能让别人问我们的攻击页面就获得别人在其它网站的cookie等信息
利用xss可以来获取别人的token,下面是在别人博客中看到的,利用xss,在name中输入下面的语句
我们就能看到带token的弹窗
但是讲道理这弹窗也是弹到别人的电脑上,我们还是没有获得啊…
原理我应该是懂了,按照上面的payload,我们先去访问csrf页面,现在因为是在xss界面在同一个域下所有我们能获取它的token值
这时候我们同理写一个xss平台的payload就能利用…(好的,抓紧时间看下js回来填坑…)
总结
csrf通过上面的练习我觉得最难的是如何诱使别人来点击链接,同时在点击链接时又要对方处于一种登陆状态。
当然配合xss上面的问题就能很好解决,所以是xss和csrf的配合是比较重要的吧