安全雜談-Windows下的幾種提權方式的粗略匯總
- 2019 年 10 月 6 日
- 筆記
本文轉載在 訂閱號 「安全初心」,歡迎關注。 作者:hl0rey 編輯:暮城之光 首先感恩父親節,願所有天下的父親健康快樂。也感謝某兄弟的多番提點,打開了自己的一些心智,思維終究會在理想與現實中趨於平衡,不成佛不成魔。突然也在想一個問題,安全可以被證明嗎?不安全可以被證明嗎?留給大家思考。
目錄
- 利用漏洞
- 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
遞歸的搜索目錄並且只顯示文件名
C:> dir /b /s unattend.xml
3.3.GPP
windows下這些場景需要存儲和使用用戶憑證
映射驅動(Drives.xml) 創建本地用戶 數據源(DataSources.xml) 印表機配置(Printers.xml) 創建/更新服務(Services.xml) 計劃任務(ScheduledTasks.xml) 更改本地Administrator密碼
所有域的組策略存儲在
\<DOMAIN>SYSVOL<DOMAIN>Policies
也就是這幾個路徑
ServicesServices.xml ScheduledTasksScheduledTasks.xml PrintersPrinters.xml DrivesDrives.xml DataSourcesDataSources.xml
powerspoit中的powerup.ps1的Get-CachedGPPPassword方法,也就是把這幾個路徑檢測檢測,還能自動解密。

四.配置不當的服務
獲取服務的資訊(獲取本地以system許可權啟動的服務)
wmic service get name,pathname,startname | findstr /C:"LocalSystem"
4.1.服務相關註冊表可被修改
windows下每當一個服務被創建的時候就會這個鍵下對應的創建一組鍵值,一般這組鍵值只有管理員才能訪問,但是如果許可權配置不當還是有可能提權的。
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservices

其中的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 HKLMSOFTWAREPoliciesMicrosoftWindowsInstaller reg query HKCUSOFTWAREPoliciesMicrosoftWindowsInstaller

msf模組
exploit/windows/local/always_install_elevated
powersploit下的powerup.ps1腳本里有個Get-RegistryAlwaysInstallElevated可以檢測是否存在高許可權安裝。
六.憑據爆破
爆破下高許可權賬戶或者服務的口令。
文章詳情:微信公眾號「玄魂工作室」。