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

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

接下来我们用bwapp演示CSRF。

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

渗透测试之CSRF

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

渗透测试之CSRF

burpsuite发送到CSRF poc

渗透测试之CSRF

我们复制CSRF html到本地,打开

渗透测试之CSRF

点击提交请求后自动跳转到我们的页面,并且密码被更改成功

渗透测试之CSRF

从上面这个最简单的例子可以知道,CSRF攻击的一个大体流程,伪造一个请求链接,发送给受害者,受害者点击后请求被执行,前提是存在CSRF漏洞的浏览器cookie还没有过期,如果过期了是没有用的。

上面这个例子我们可以直接发送一个连接请求http://192.168.23.248:88/csrf_1.php?password_new=liao1234&password_conf=liao1234&action=change

但是这样会很明显,所以可以在线转成短域名。然后加上一个诱使受害者点击。

例子二:更改密码

渗透测试之CSRF

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

渗透测试之CSRF

请求结果可以发现直接被执行了

渗透测试之CSRF

说明是存在csrf的。

例子三:银行转账

渗透测试之CSRF

同样抓请求来分析

渗透测试之CSRF

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

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

渗透测试之CSRF

可以看到请求被执行了账户的金额减少了。

然后总结一下,怎么找CSRF漏洞,一般抓到数据包先看看如果不带有token验证,然后还有一个固定的变量可以被控制,就像上面的密码和确认密码可以被控制一样就会存在CSRF。

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

所以CSRF的关键是token,看到没token的时候CSRF走一波


相关文章:

  • 2021-05-27
  • 2021-08-14
  • 2021-12-03
  • 2022-01-16
  • 2021-05-10
  • 2021-06-05
  • 2021-07-29
  • 2022-12-23
猜你喜欢
  • 2021-10-02
  • 2021-12-07
  • 2021-06-26
  • 2021-12-23
  • 2021-04-07
  • 2021-07-07
  • 2021-06-20
相关资源
相似解决方案