渗透测试之CSRF

CSRF是跨站伪造请求,常见攻击手段发送csrf的链接,经过伪造请求从而受害者点击后会利用受害者的身份发起这个请求。例如新增一个帐号,修改用户密码等等。php

CSRF攻击成功有两个必须的条件。1.被伪造身份的目标曾在该浏览器上访问过CSRF站点,且cookies还没有过时。2.目标被引诱在该浏览器上访问了咱们放置恶意代码的域名或网站。html

接下来咱们用bwapp演示CSRF。浏览器

例子一:第一个例子是利用csrf更改密码cookie


点击change并抓取请求数据包。app


burpsuite发送到CSRF pocpost


咱们复制CSRF html到本地,打开测试


点击提交请求后自动跳转到咱们的页面,而且密码被更改为功网站


从上面这个最简单的例子能够知道,CSRF攻击的一个大致流程,伪造一个请求连接,发送给受害者,受害者点击后请求被执行,前提是存在CSRF漏洞的浏览器cookie尚未过时,若是过时了是没有用的。ui

上面这个例子咱们能够直接发送一个链接请求http://192.168.23.248:88/csrf_1.php?password_new=liao1234&password_conf=liao1234&action=changespa

可是这样会很明显,因此能够在线转成短域名。而后加上一个诱使受害者点击。

例子二:更改密码


一样抓包分析存在referer,没有token咱们直接把referer置空,发送请求


请求结果能够发现直接被执行了


说明是存在csrf的。

例子三:银行转帐


一样抓请求来分析


咱们看到是一个get请求,咱们把帐户修改成别的帐户,那么咱们直接把这个请求放到浏览器中看是否会被执行

http://192.168.23.248:88/csrf_2.php?account=666666&amount=200&action=transfer


能够看到请求被执行了帐户的金额减小了。

而后总结一下,怎么找CSRF漏洞,通常抓到数据包先看看若是不带有token验证,而后还有一个固定的变量能够被控制,就像上面的密码和确认密码能够被控制同样就会存在CSRF。

还有一种是post请求是=时不验证referer也没有token,测试方法没有token,referer为空请求成功就存在CSRF

因此CSRF的关键是token,看到没token的时候CSRF走一波