齊治堡壘機后台存在命令執行漏洞(CNVD-2019-17294)分析


  • 基本信息

引用:https://www.cnvd.org.cn/flaw/show/CNVD-2019-17294

補丁信息:該漏洞的修復補丁已於2019年6月25日發布。如果客戶尚未修復該補丁,可聯系齊治科技的技術支持人員獲得具體幫助。

  • 漏洞復現

如下圖,通過在傳遞參數”service=`id`”,成功執行命令,並回顯命令執行結果。

  • 源代碼分析

首先,定位到/audit/data_provider.php,直接查找$_GET[‘service’]或者$_REQUEST[‘service’]都找不到。原來在文件開頭包含的common.php中,已有全局配置。

代碼如下,不但給變量加了個前綴”req_”,還過濾掉了一些危險字符。

然后,搜索” $req_service”定位到data_provider.php文件的第99行。可見,將$GET[‘service’]賦值到$service變量中。

然后,跟進$service來到data_provider.php文件的第124行。可見,通過字符串拼接,將$_GET[‘service’]帶入到$cmd變量中。

然后,跟進$cmd來到data_provider.php文件的第133行。可見,$cmd被帶入exec函數中執行。至此,造成遠程命令執行漏洞。

  • 漏洞利用

通過反單引號執行命令,寫入PHP一句話代碼到服務器。

原理如下圖所示,這樣就可以繞過過濾執行任意命令。實際上,還需要用${IFS}替換掉空格才行。

所以,最終方案如下。

  • 引用

https://www.php.net/manual/en/function.exec.php

https://www.anquanke.com/post/id/84920

轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM