close

文中的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/


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 ivan0914 的頭像
    ivan0914

    I'n Blog 之萬象真藏

    ivan0914 發表在 痞客邦 留言(0) 人氣()