介紹
??前兩天網上曝出了關于向日葵遠控工具(Sunlogin)Windows個人版的RCE漏洞POC,因為利用簡單并且網上出現了公開的自動化掃描腳本,所以測驗的人很多,也出現了一些真實攻擊,漏洞的問題主要是出現在Sunlogin客戶端的幾個對外開放的介面中,現在我對其中一部分利用進行簡要的分析,
未授權認證
??分析的向日葵客戶端版本為11.0.0.33162,當SunloginCLient.exe在Windows上執行時,會連接遠程Oray的服務器,同時也會打開一個大于40000的埠監聽外部的連接訪問(具體是否從40000往上隨即開啟埠,這個沒有除錯,網上是這么說的,我們主要看的是發生利用的代碼部分),
??對其中一部分介面,Sunlogin統一對其進行處理,

??接著會執行至函式sub_140E21528,分別對不同介面進行不同的處理,在介面/cgi-bin/rpc的Handler處理函式中可以進行未授權認證,

??獲取action引數值,如果值為verify-haras,即action=verify-haras,那么可以在沒有識別碼和驗證碼的情況下認證成功,


??成功后回傳一個verify_string,作為之后再次訪問時Cookie欄位中使用的CID值,

RCE
??漏洞發生在介面/check處,如下圖,當引數cmd的值以ping或者nslookup開頭時可以構造命令實作遠程命令執行利用,

??發送請求時需要在請求頭中指定Cookie欄位中CID的值為之前/cgi-bin/rpc回傳的verify_string值(在測驗時我發現該值似乎是不會變化的,也就是說該值的計算沒有時間因子參與),下面是分別通過nslookup和ping拼接的利用請求,
??nslookup拼接字串利用:

??ping拼接字串利用:

請求中的路徑問題
??windows的路徑處理問題,一些小細節:
- 因為最終呼叫的是
CreateProcess,引數lpApplicationName固定為0,所以可執行檔案需要從lpCommandLine引數中,以空格分隔的第一個字串作為新起行程的啟動路徑,而windows又不會一級一級得驗證目錄的有效性,所以只要在ping/nslookup后不加空格并配合多個../和目標可執行檔案的路徑,從而啟動任意目標行程,以空格分隔命令引數; - Cmd.exe路徑前面必須為反斜杠
"\\",而不能是斜杠"/",不然無法找到目標檔案,powershell.exe則沒有這方面限制,究其原因是因為cmd中以斜杠"/"作為命令引數的標記使用,未免路徑斜杠和其混淆,便固定反斜杠作為路徑分隔符,如果使用了"/cmd.exe",會出現"cmd.exe /cmd.exe"的情況,/c作為引數指定后面的字串作為命令,那么md命令會創建.exe目錄,這就是為什么有時候第二次執行會出現"子目錄或檔案 .exe 已經存在"的原因;如果使用了/cmd,沒有后綴,那么就是"命令語法錯誤"的回顯, - 使用反斜杠時注意轉義字符,保險起見使用雙方斜杠,
其他
1. assist介面問題:
??我參考的這篇分析中提到了介面/assist,但是沒利用成功并發表了疑問,

??然后我嘗試了一下,確實不行,經過分析后判斷下來這個介面恐怕是沒法用的,在/assist這個介面會用到API CreateProcessAsUser,同樣lpApplicationName為0,由lpCommandLine空格分割后的第一個字串指定執行檔案路徑,
??至于為什么說這個介面沒法利用,是因為雖然可以通過fastcode指定引數值,并作為命令執行,但是并不和/check介面中的處理方式一樣是直接執行,/assist介面處理函式是取當前行程(即當前SunloginClient.exe實體)路徑,程式執行引數為"--mod=fastcode --fastcode=<fastcode傳入的引數>",復制當前行程令牌后作為新行程的令牌啟動,整個命令列尖括號才是我們可控的,而由于啟動的行程已經固定不變了,為Sunloginclient.exe,后面所有字串全部作為Sunloginclient.exe的引數,因此無法利用該介面指定其他命令,

??像&、|、||、&&這些符號也就是cmd.exe等shell終端中能有命令的效果,其他軟體如Sunloginclient.exe不對其進行處理,因此不能用,
2. 其他介面:
??比如/fastcode介面,無需傳入引數,可以直接獲取被控端的識別碼;其他還有比如/micro-live/enable、/micro-live/enable、/sunlogin-tools等,不過簡單地測驗了一下,會出現初始化失敗的問題,可能需要登錄,
客戶端執行插件功能時,大多通過指定命令列新起一個行程實作,

3. 內網外網問題
??因為需要直接訪問向日葵客戶端的ip,那么內網只能夠從內網其他機器打進去;而如果在公網,則容易被發現和攻擊,
本文來自博客園,作者:Bl0od
轉載請注明原文鏈接:https://www.cnblogs.com/zUotTe0/p/15913108.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/428496.html
標籤:其他
