施耐德电气U.Motion Builder号令注入缝隙安全公告

颁布功夫 2019-05-22

缝隙编号和级别


CVE编号:CVE-2018-7841,危险级别:严沉,CVSS分值:9.8


影响版本


Schneider Electric U.Motion Builder 1.3.4及之前版本


缝隙概述


Schneider Electric U.Motion Builder是法国施耐德电气(Schneider Electric)公司的一套构筑物智能治理系统。

Schneider Electric U.Motion Builder 1.3.4及之前版本中的track_import_export.php剧本中存在操作系统号令注入缝隙,该缝隙源于表部输入数据机关操作系统可执行号令过程中,网络系统或产品未正确过滤其中的特殊字符、号令等。攻击者可利用该缝隙执行犯法操作系统号令。


缝隙验证


EXP:https://www.exploit-db.com/exploits/46846
CVE-2018-7841为CVE-2018-7765补丁绕过,U.Motion 1.3.4蕴含易受攻击的文件/smartdomuspad/modules/reporting/track_import_export.php,其中利用法式凭据衔接的object_id机关一个名为$ where的SQlite查问,该查问能够通过GET或POST提供:

 

宝运莱·(中国区)最新官方网站


你能够看到object_id首先被string_encode_for_SQLite步骤解析,除了删除一些其他不成读的字符:

 

宝运莱·(中国区)最新官方网站


$ query之后用于挪用$ dbClient-> query():

 

宝运莱·(中国区)最新官方网站


query()步骤能够在dpaddbclient_NoDbManager_sqlite.class.php中找到:

 

宝运莱·(中国区)最新官方网站


在这里,您能够看到查问字符串(蕴含object_id)是通过一堆str_replace挪用提供的,主张是过滤掉危险字符,例如$ for Unix号令代替,并且在片段末尾,您现实上能够看到 另一个字符串$ sqlite_cmd与先前构建的$ query字符串衔接,最后传递给PHP exec()挪用。


显然,施耐德电气试图通过以下方式解决之前汇报的缝隙CVE-2018-7765:

 

宝运莱·(中国区)最新官方网站


正如您可能已经猜到的那样,仅仅过滤掉$不及以阻止号令注入exec()挪用。 因而,为了绕过str_replace建复,能够单一地使用反引号运算符,如以下示例要求中所示:

 

宝运莱·(中国区)最新官方网站


产生一个美丽的反向shell:

 

宝运莱·(中国区)最新官方网站


建复建议


目前厂商暂未颁布建复措施解决此安全问题,建议使用此软件的用户随时关注厂商主页或参考网址以获取解决法子:

https://www.rcesecurity.com/


参考链接


https://packetstormsecurity.com/files/152862/Schneider-Electric-U.Motion-Builder-1.3.4-Command-Injection.html