Windows下的幾種提權方式的粗略匯總
目錄
- 利用漏洞
- DLL相關
- 本地存儲的密碼
- 配置不當的服務
- 令牌操作
- 高權限安裝(AlwaysInstallElevated)
- 憑據爆破
隨著系統管理員的安全意識的普遍提高,提權越來越成為廣大滲透測試者所面臨共同問題。本人水平有限,粗淺地總結了下幾種提權方式,以及一些個人看法,并配合相應的演示。可能對實戰沒什么太直接的幫助,算是幫大家溫習下基礎吧。
實驗環境是kali和win2008,有時候用win10,畢竟個人用戶還是win10多啊。
一.利用漏洞
1.1.利用漏洞提權,簡單快捷,瞬間從0到1,美滋滋。
windows系統被爆出了很多提權漏洞,通常來說及時打補丁就能防止黑客在本地利用漏洞提權。換言之就是沒打補丁就能提權,另外windows平臺上許多軟件也被爆出提權漏洞,所以說枚舉目標機上打了哪些補丁、操作系統的版本以及安裝了哪些軟件對于利用漏洞提權來說十分重要。
1.2.測試方法
用wmic來收集信息,wmic和powershell可是滲透利器。命令中的對象和屬性名都不區分大小寫。
1.2.1.獲取當前系統名稱
- wmic os get caption
1.2.2.枚舉補丁
- wmic qfe get Description,HotFixID,InstalledOn
可以用cmd命令稍微篩選下(此處命令為查看是否打了ms17010和ms08067的補丁)
- wmic qfe get Description,HotFixID,InstalledOn | findstr /C:"KB4013389" /C:"KB958644"
powershell
https://github.com/rasta-mouse/Sherlock
msf模塊
得先獲得一個meterpreter shell
- use post/windows/gather/enum_patches
msf這個模塊其實也是用wmic去枚舉的補丁,然后做的篩選。其實可以與時俱進的優化一下。
可以看出是用wmic去枚舉的補丁。
這個模塊可以指定要檢測的補丁號如果不指定的話,會有默認的幾個補丁會檢測,存在下面這個數組。可以通過在這數組里加自己自定義的補丁號和提示信息。
檢測邏輯
1.2.3.枚舉當前安裝的軟件
- wmic product get name,version
1.3.舉例
1.3.1.系統漏洞
***的漏洞(CVE-2018-8120)
- https://github.com/alpha1ab/CVE-2018-8120
這個補丁肯定沒打,其實不用枚舉。
用exp的時候注意下位數,一下就成功了,預感又要有一大批服務器要遭殃了
炒一個之前提到的冷飯(smb跨協議憑據反射)
欺騙system來認證,從而泄露憑證,這屬于"社工"windows系統。
漏洞編號MS16-075,補丁編號KB3164038 。
在不打補丁,并且不啟用smb簽名的情況下可以用(待考證)。
燙手山芋
- https://github.com/Kevin-Robertson/Tater
WPAD(Web Proxy Auto-Discovery protocol )是為了讓瀏覽器自動發現代理服務器,使代理對于用戶來說是透明的,也就是說讓用戶不用自己配置代理,感受不到代理存在。
- https://www.ibm.com/developerworks/cn/linux/1309_quwei_wpad/
ie瀏覽器默認會去嘗試自動獲取配置,有的windwos服務也會去自動獲取,比如windows更新服務。 Windows Defender updates服務是個高權限的服務,我們可以通過nbns欺騙讓system通過http在假的 WPAD進行ntlm認證,我們再把憑據反射回smb協議,從而取得高權限。
爛土豆
- https://github.com/breenmachine/RottenPotatoNG
GitHub上編譯好版本只能彈個cmd.exe,需要自行修改main方法,讓他可以執行自定義的命令。稍作修改即可。
爛土豆比燙手山芋更可靠,因為不用等待Windows Defender updates服務來上鉤。所以說能用ms16-075,那就用爛土豆吧。win10系統記得先過uac,再提權。
1.3.2.第三方組件漏洞
win10pcap提權
- http://www.freebuf.com/news/82310.html
二.DLL相關提權
2.1.DLL注入
這種方法提權,只能是在有漏洞的情況下吧
2.2.DLL劫持
powersploit下的powerup.ps1中的兩個方法Find-ProcessDLLHijack、Find-PathDLLHijack。(路徑太長顯示不全。。。)
三.本地存儲的密碼
這個項目挺有趣的
- https://github.com/AlessandroZ/LaZagne
這個遠控,把上面那個項目作為一個模塊加了進去
- https://github.com/n1nj4sec/pupy/
powersploit里的powerup.ps1其中包括幾種搜集本地密碼的方法,就像之前一樣,把腳本導入進去,直接調用方法就好。
- Get-UnattendedInstallFile
- Get-Webconfig
- Get-ApplicationHost
- Get-SiteListPassword
- Get-CachedGPPPassword
- Get-RegistryAutoLogon
3.1.自動應答文件
需要自動化部署一些服務的時候,能用到這個
msf模塊
- post/windows/gather/enum_unattend
3.2.其他程序的配置文件
發現包含敏感關鍵詞的文件
在當前目錄以及其子目錄中,不區分大小寫的查找:
- findstr /si password *.txt
- findstr /si password *.xml
- findstr /si password *.ini
遞歸的搜索目錄并且只顯示文件名
- C:\> dir /b /s unattend.xml
- C:\> dir /b /s web.config
- C:\> dir /b /s sysprep.inf
- C:\> dir /b /s sysprep.xml
- C:\> dir /b /s *pass*
- C:\> dir /b /s vnc.ini
3.3.GPP
windows下這些場景需要存儲和使用用戶憑證
- 映射驅動(Drives.xml)
- 創建本地用戶
- 數據源(DataSources.xml)
- 打印機配置(Printers.xml)
- 創建/更新服務(Services.xml)
- 計劃任務(ScheduledTasks.xml)
- 更改本地Administrator密碼
所有域的組策略存儲在
- \\<DOMAIN>\SYSVOL\<DOMAIN>\Policies\
也就是這幾個路徑
- Services\Services.xml
- ScheduledTasks\ScheduledTasks.xml
- Printers\Printers.xml
- Drives\Drives.xml
- DataSources\DataSources.xml
powerspoit中的powerup.ps1的Get-CachedGPPPassword方法,也就是把這幾個路徑檢測檢測,還能自動解密。
四.配置不當的服務
獲取服務的信息(獲取本地以system權限啟動的服務)
- wmic service get name,pathname,startname | findstr /C:"LocalSystem"
4.1.服務相關注冊表可被修改
windows下每當一個服務被創建的時候就會這個鍵下對應的創建一組鍵值,一般這組鍵值只有管理員才能訪問,但是如果權限配置不當還是有可能提權的。
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services
其中的ImagePath的值指向的是服務的啟動程序所在的位置,如果這個地方可以修改的話,也就能劫持這個服務了。
4.2.可執行文件可被修改
直接替換服務的可執行文件,劫持服務提權。
用accesschk來檢測一下,可以修改的服務。
- https://technet.microsoft.com/en-us/sysinternals/accesschk.aspx
- accesschk.exe -uwcqv "你知道權限的用戶" * -accepteula
也可用msf模塊
- exploit/windows/local/service_permissions
powersploit中的powerup.ps1
獲取可以修改的服務
- Get-ModifiableService
4.3.可執行文件路徑未被引號包裹
如果服務的可執行文件路徑未被引號包裹,那么在遇到空格的時候,會導致截斷,例如C:\Program Files\ 1.exe,如果未被引號包裹,在服務啟動過程中會嘗試加載C:\Program.exe。所以查找到有缺陷的服務,在可寫的路徑下插入后門,重啟服務即可提權。
msf模塊
- exploit/windows/local/trusted_service_path
powerup.ps1
- Get-ServiceUnquoted
五.令牌操作
通過office漏洞拿到win10的shell,先過uac,然后直接就可以導入system的令牌,瞬間獲得system權限。
不想用msf的話,可以參考這個鏈接
https://labs.mwrinfosecurity.com/blog/incognito-v2-0-released/
六.高權限安裝
https://msdn.microsoft.com/en-us/library/aa367561
windows中有一項組策略配置(一個系統配置,一個用戶配置兩個配置都啟用才行,并且相關的組策略對象都啟用才行)可以讓用戶在運行.msi文件進行安裝程序時,始終以system權限運行,而不是以當前用戶的權限。
我感覺這個只有撞了大運才會碰上吧23333,但是在滲透測試中還是要嘗試一下的。
涉及的注冊表鍵值及查詢方法是(只要值為1,則是啟用狀態)
- reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer
- reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer
msf模塊
- exploit/windows/local/always_install_elevated
powersploit下的powerup.ps1腳本里有個Get-RegistryAlwaysInstallElevated可以檢測是否存在高權限安裝。
六.憑據爆破
爆破下高權限賬戶或者服務的口令。