Dynamicweb是一款提供基于云的电子商务套件。通过这款软件,客户能够更好的进行内容管理、数字营销、电子商务,提供更好的产品信息管理解决方案,提升数字客户体验,并扩大自身的电子商务市场。
近期网上爆出Dynamicweb存在逻辑缺陷,导致可以无需登录以管理员身份实现RCE。漏洞编号为CVE-2022-25369,影响版本如下:
-
Dynamicweb < 9.5.9
-
Dynamicweb < 9.6.16
-
Dynamicweb < 9.7.8
-
Dynamicweb < 9.8.11
-
Dynamicweb < 9.9.
-
Dynamicweb < 9.10.18
-
Dynamicweb < 9.12.8
-
Dynamicweb < 9.13.0+
从漏洞通告中,我们可以看到问题出在`/Admin/Access/Setup/Default.aspx`文件中,本文我们使用Dynamicweb v9.8.9的代码进行分析。找到`/Admin/Access/Setup/Default.aspx`文件,发现其后端代码由`Dynamicweb.Admin._Default3`处理:
进入`Dynamicweb.Admin._Default3`的代码,我们可以很明显看到程序的一个逻辑错误。程序本意应该是:判断网站是否已经安装过。是,则跳转到网站首页,不继续处理;否,则进入`Setup.HandleAction`进行后续的网站安装。而程序这里错误的使用了&&逻辑,那么只要`Action`参数不为空,就不会进入重定向的代码中,转而进入`Setup.HandleAction`处理:
我们跟进`Setup.HandleAction`的代码,看其都有哪些功能。网站一共支持`setlicense`、`setdatabasesettings`、`tryconnectdatabase`、`endsetup`、`createschema`、`copyfiles`、`createadministrator`,这里代码太长,仅截取 `createadministrator`相关代码。通`createadministrator`功能,可以直接创建一个超级管理员账户:
通过登录超级管理员账号,我们再利用后台漏洞,即可达到GetShell的目的。
未授权添加管理员账号:
通过登录超级管理员账号,配合后台漏洞GetShell:
由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。
点关注,不迷路!
关注公众号回复“漏洞”获取研究环境或工具
原文始发于微信公众号(且听安全):【最新漏洞预警】CVE-2022-25369 Dynamicweb云电子商务系统认证逻辑缺陷可导致GetShell