Contensis 内容管理系统在 15.2.1.79 之前的版本中,其“Classic”界面存在一个缺陷,允许未经身份验证的用户上传并批准任意文件。通过上传 aspx 文件,可以在 Web 服务器的上下文中执行命令。
此漏洞于 2022 年 3 月发现,并于 2022 年 4 月 8 日由 Zengenti 在其发布中修复。
初始文件上传通过对以下端点的 POST 请求执行:
https://[example].cloud.contensis.com/REST/UI/Wizards/CreateContent/UploadFile?folderId=1&projectId=1&context=%7B%22UserID%22%3A1%2C%22LanguageID%22%3A1%2C%22SecurityToken%22%3A%22%22%7D
context 参数指示哪个用户正在上传文件;在这种情况下,UserId 为 1,即系统管理员。SecurityToken 参数是必需的,但可以为空。此请求(截图 1)会在服务器上生成一个带有 UUID 的临时文件。在此示例中,我使用了位于以下地址的 WebShell:https://github.com/tennc/webshell/blob/master/fuzzdb-webshell/asp/cmd.aspx

然后必须通过对以下端点的 POST 请求批准该文件:
https://[example].cloud.contensis.com/REST/UI/Wizards/CreateContent/CreateContent
此请求(截图 2)将包含初始请求中的临时文件路径,以及用于批准发布和修改内容类型以绕过文件限制的参数。在此实例中,ContentTypeId 设置为 43,表示它是一个 HTML 文档,而不是 ASPX。 然后该文件可在以下“预览”和“正式”域名上访问:
https://preview-[example].cloud.contensis.com/cmd2.aspx
https://iis-live-[example].cloud.contensis.com/cmd2.aspx

请负责任地仅在经授权的主机上测试(截图 3)
