施耐德電氣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