施耐德电气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