CSRF跨站请求伪造

2018/4/15

首先看CSRF的全名和百度定义,

CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。

 

其实首先我们要区分csrf和xss漏洞。xss是镶嵌在html中执行一个JS脚本去得到用户浏览器中存储的网站的cookie,有同源策略的限制。而CSRF不需要取得cookie,只需要受害者主动打开某链接就可以了。笔者本文只讨论CSRF,暂时不讨论XSS攻击和同源问题了。

 

我们在bwapp中添加上我们的csrf的文件,让bwapp扩展csrf靶机。


开启服务器,然后用真实机访问bwapp这个站。

我们进入csrf修改密码这一页。我们会发现,我们只需要把密码输入两次,就可以修改密码了。

但是

我们要留心URL中的东西。当我们点击 “change” 后,url会出现你要提交的东西。


我们把这个url复制下来,把两个参数的值变一变,再粘回URL中,发现密码也是可以修改的。

也就是说,在我们登陆的情况下,请求一次,我们的密码就是可以修改的,几乎没有验证的机制。

然后我们可以仿照这个url写出如下的一个HTML。


我们可以用src啊img啊这些需要加载的东西,想办法让用户访问以下我们的html,就可以让用户自己的浏览器往服务器发送这个完成修改密码的表单。

然后,所谓的crsf就完成了。

最终,需要知道的知识点就是,一个浏览器只有一个进程。用户再用浏览器A登陆某网站的情况下,(只要cookie有效),如果用户再用同一个浏览器A加载我们的含有请求的html,那么csrf攻击是完成的。如果用户开浏览器B去加载这个html的话是不行的。也就是说,不同的浏览器,进程不同,存的cookie,session等数据也是不同的。

相关工具的使用可以查 OWASP csrfTester。

至此,笔者的blog介绍完毕。

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页