文中的Guest指虛擬機裡面跑的操作系統,Host指裝VMware這款軟件的操作系統
受影響系統:
VMWare VMWare Workstation 6.0.2
VMWare VMWare Workstation 5.5.4
VMWare ACE 2.0.2
VMWare ACE 1.0.2
VMWare Player 2.0.2
VMWare Player 1.0.4
描述:
VMWare是一款虛擬PC軟件,允許在一台機器上同時運行兩個或多個Windows、DOS、LINUX系統。
VMware的共享文件夾機制實現上存在目錄遍歷漏洞,運行於Guest系統上的程序可以利用此漏洞訪問到Host系統的文件。
VMware的共享文件夾允許用戶在Guest和Host系統之間傳輸數據,該機制允許Guest系統的用戶讀寫任意部分的Host文件系統,包括系統文件夾和其他敏感文件。
該漏洞的起因是用於在Guest系統中提供共享文件夾功能的VMware API處理PathName參數的方式。在確認PathName參數不包含有0x2e0x2e(翻譯為ASCII子字符「..」)字符串後,就會將其從多個字節字符串轉換為寬字符字符串,然後將所生成的寬字符字符串傳送給Host系統上的系統文件API。這個轉換是使用Windows API的MultiByteToWideChar函數實現的。由於驗證「..」字符串是在轉換輸入字符串之前執行的,因此Guest系統上的惡意程序或用戶提供的PathName可以通過驗證,但在調用MultiByteToWideChar之後仍可能映射為包含有Unicode UTF-16版本的「..」字符串。
測試方法:
/-----------
// mbtwc.c
#include <windows.h>;
int main(int argv, char *argc[]) {
~ unsigned int i, ans;
~ unsigned char buf[200];
~ for (i=1;i;i++) {
~ memset(buf, 0, 200);
~ ans = MultiByteToWideChar(CP_UTF8, 8, &i, 4, buf, 100);
~ // 8 = MB_ERR_INVALID_CHARS
~ if (ans && (buf[0] == '.') && (buf[1] == 0) &&
~ ((i & 0xff) != '.'))
~ printf("%d %04x: %02x %02x %02x %02x\n", ans, i,
~ buf[0], buf[1], buf[2], buf[3]);
}
~ }
- -----------/
資料來源 http://www.hackeroo.com/
- Mar 03 Mon 2008 10:39
[安全警戒線]入侵虛擬機宿主OS新法 VMware產品共享文件夾MultiByteToWideChar()變量目錄遍歷漏洞
close
全站熱搜
留言列表
發表留言