CSRF进阶三部曲

Posted 白帽子社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSRF进阶三部曲相关的知识,希望对你有一定的参考价值。

谈到XSS可能对于大部分接触信息安全的人来讲都比较的熟悉而CSRF大部分人也会认为和XSS没什么区别,或者被一些网上的讲解所误导,认为就是点一个链接,哎呀,你的钱就没了。当然不否认这个是真的,但是CSRF的强大之处远不止这一点。下面就请随我来了解下这个CSRF的详细技术细节吧。

 

首先区分一下XSS(跨站脚本攻击)和CSRF(跨站请求伪造)从名字上就可以明显发现,一个是利用脚本攻击,另一个是伪造请求有欺骗的性质,CSRF也正是针对用户身份的一种欺骗,而从使用上来介绍的话,那XSS则是CSRF的利用手段之一。因为我们这次讲的是CSRF我就不在这里多说XSS了。

 

既然叫请求伪造,那就意味着在利用CSRF前首先你需要对目标的请求过程有一个了解,如何了解我在这里不做叙述。第二,上面我说了,CSRF是对身份的一种欺骗,所以在此之前你需要有一个合法的身份来对你的请求进行实现,而这个合法的身份就来自于CSRF的受害者。

 

首先来演示一下,在上面我说的网上的流传的CSRF基本概念。

这里是一个admin的账号,当我们在输入框输入数据后点击提交,下方就会显示我们所提交的数据。我们的目标是在未经admin用户操作下,使其添加新数据。

首先查看一下正常的请求

CSRF进阶三部曲(一)

get请求,所以攻击的代码非常简单

http://localhost:81/safe/csrf/index.phpValue=hahahahha

将以上代码发送给受害者使其在身份认证未失效的情况下点击,即可发送消息。

有时候对于这种情况可能有一些问题,最明显的就是发送这种链接很有可能被一些观察比较细致的人识破。所以这里我们可以利用以下几个方法来进行。

CSRF进阶三部曲(一)

CSRF进阶三部曲(一)

可以看到代码顺利执行,消息也成功发送,而这三种方法哪种方法更适合,可以自己选择并加以完善。

以上都是GET方式的攻击方式,但很多网站目前一些比较重要的请求都会采用POST请求。所以想在URL上做手脚就失效了,下面就演示一下如何使用POST的方式来发起CSRF的攻击。

CSRF进阶三部曲(一)

在一个页面中写入图中的代码即可对服务器发起post请求

CSRF进阶三部曲(一)

攻击成功。

如果你仔细观察,会发现上面所介绍的所有的攻击操作均是在localhost的域名下进行的,这些涉及代码的操作都是成立在目标网站存在xss漏洞的前提下进行的。

如果不存在呢?这就需要涉及到跨域操作和cookie策略上的问题了,下一次我将说明如何各浏览器之间的cookie安全策略,以及利用方法。



以上是关于CSRF进阶三部曲的主要内容,如果未能解决你的问题,请参考以下文章

Android进阶三部曲第三部《Android进阶指北》已出版

Android进阶三部曲 第三部《Android进阶指北》已完稿

Python进阶三部曲之IO操作

Python进阶三部曲网络编程

进阶三部曲第一部《Android进阶之光》第2版已出版

进阶三部曲第一部《Android进阶之光》第2版已出版