作者:水泡泡@知道創宇404積極防御實驗室
日期:2021年3月5日
0x01 漏洞描述
View Planner是VMware官方推出的一款針對view桌面的測試工具,通過這個測試工具可以估算出在指定的應用環境下可以發布多少個view桌面。
View Planner 的logupload端點缺乏輸入驗證,導致具有查看View Planner Harness網絡訪問權限的未經授權的攻擊者可以上載和執行精心編制的文件,從而導致在logupload容器中執行遠程代碼。
影響范圍:VMware View Planner <=4.6.0
0x02 環境安裝
下載鏡像:
https://my.vmware.com/group/vmware/downloads/details?downloadGroup=VIEW-PLAN-460&productId=1067&rPId=53394 (選擇View Planner Harness )

下載需要注冊一個賬號且下載需要審核,需要等待一段時間,這里分享我已經下載好的:
鏈接: https://pan.baidu.com/s/1aeNW1HUyCkZze1bs7vplzg
提取碼: vv42
使用VMware直接加載ova文件,安裝過程中按照提示初始化 ssh root賬號的初始密碼,成功搭建。

0x03 漏洞復現
按照twitter上公開的POC,向logupload端點構造請求包(路徑使用相對路徑即可)。

其中上傳的文件內容是log_upload_wsgi.py的源文件,但添加了執行命令的代碼,在上傳成功之后,再請求一次logupload端點,收到curl請求,命令執行成功。

至此漏洞復現成功。
0x04漏洞分析
在分析之前,先簡單講一下View Planner的部署架構。
View Planner 的web服務由docker搭建提供,其中80,443端口的內容由appacheServer容器提供,而8081由crossbar容器提供,為ws服務,主要處理登陸后的后端交互邏輯。

ssh 到 viewplanner虛擬機,scp將/root/viewplanner 源碼拉出來,全局搜索logupload。

可以看到apache 配置文件配置了logupload端點的指向文件為/etc/httpd/html/wsgi_log_upload/log_upload_wsgi.py
其路徑/etc/httpd/html/ 實際是容器內的路徑,對應宿主機的/root/viewplanner/httpd

定位到/root/viewplanner/httpd/wsgi_log_upload/log_upload_wsgi.py 文件。

代碼很簡單,從cgi中獲取logfile 和logMetaData兩個參數數據,如果logMetaData參數傳入了json數據,則從json數據中獲取itrLogPath和logFileType兩個鍵值,隨之將itrLogPath和logFileType與resultBasePath 進行路徑拼接,判斷路徑是否存在,不存在則創建,
之后判斷logfile是否為上傳文件,上傳了文件,如果logFileType參數的值不等于workloadLogsZipFile 則直接將resultBasePath,itrLogPath,logFileType三個參數的值進行路徑拼接,并進行文件寫入。
由于缺少路徑規范過濾,只需要稍微構造一下數據包即可上傳惡意文件到任意路徑,從而可以覆蓋log_upload_wsgi.py 文件,達到遠程代碼執行的效果。
0x05 補丁分析
至此漏洞分析完畢,下載官方補丁進行對比分析(左補丁):

加入了個password參數也就是使用loguplaod這個端點需要密碼才可以訪問,但取的secret_key來自于wsgi.config,硬編碼值為:vmware-viewplanner-ca$hc0w,有點掩耳盜鈴的味道;
不過后面代碼,對拼接后的路徑使用normpath進行路徑規范化,并用startswith限制寫入的文件必須在 /etc/httpd/html/vpresults目錄下,也就沒法再跨路徑上傳文件,至此此漏洞算是修復完成了。
0x06 總結
此系統暴露在外網的IP非常少,大多數在內網,漏洞簡單但危害嚴重,建議廣大管理員趕快升級,避免在即將到來的行動中失分。
本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/1495/
暫無評論