Windows 權限提升(Privilege Escalation)枚舉階段

 Windows 權限提升(Privilege Escalation)

枚舉階段


Windows 中的 SID 結構化表示法 S-R-X-Y

 - S : SID

 - R : 代表修訂版,並且始終設定為 1,因為整體 SID 結構仍然是其初始版本

 - X : 決定標識符權限。例如,「5」是標識符權限最常見的值。它指定 NT 權限並用於本機或網域使用者和群組

 - Y : 代表識別符權限的子權限。每個 SID 由一個或多個子權限組成。這部分由域標識符和相對標識符(RID)組成。網域識別碼對於網域使用者是網域的 SID,對於本機使用者是本機的 SID,內建主體是「32」。RID 確定主體,例如使用者或群組。

使用者 SID 範例 : S-1-5-21-1336799502-1441772794-948155058-1001

最後四碼 1001 是 RID,預設 RID 是從 1000 開始(預設帳號),所以 1001 表示系統上建立的第二個帳號


有些 RID 會低於 1000,這些都是預設的帳號或群組,如下是眾所皆知的範例

S-1-0-0                       Nobody        
S-1-1-0	                      Everybody
S-1-5-11                      Authenticated Users
S-1-5-18                      Local System
S-1-5-domainidentifier-500    Administrator

透過指令 whoami /user 可以查看當下使用者的 SID



Windows 攻擊時建議獲取下列資訊,幫助提升權限很有幫助

- Username and hostname : 使用者名稱與主機名稱
- Group memberships of the current user : 現有使用者所屬群組與群組成員
- Existing users and groups : 本機使用者與群組
- Operating system, version and architecture : 作業系統版本與架構
- Network information : 網路相關資訊
- Installed applications : 已安裝的應用程式
- Running processes : 執行中的程序


檢查當前使用者所屬相關群組,可以使用 whoami /groups 指令



輸入 powershell 啟動 powershell 再執行 Get-LocalUser 可以列出本機所有使用者




net user 也會列出本機的所有使用者帳號




前面 whoami /groups 是列出當前使用者所屬群組,若要列出本機上的所有群組可以使用 Get-LocalGroup 或是 net localgroup




想要查看特定群組內的成員可以使用指令 Get-LocalGroupMember 後面接群組名稱 adminteam






systeminfo 也是一個重要的資訊收集指標




網路相關資訊更是不可或缺的,ipconfig /all 給他下去




與網路有關的路由表也要一併收集,指令 route print





netstat -ano 執行的服務與端口也要一併收集





使用 Get-ItemProperty 指令列出所有已安裝的應用程式,配合登錄表兩個值與輸出名稱參數 displayname 一併使用,完整指令如下

Get-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" | select displayname



另一個 Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*" | select displayname




上面在列舉已安裝的應用時有看到 KeePass 2.51.1,依據之前密碼管理器破解所學下一步應該是直接查找 KeePass 的 DB,使用指令 dir /s *.kdbx 但沒有結果,不知道原因,可能是權限不夠



所以改換 PowerShell 的查找指令來找資料庫看看

Get-ChildItem -Path C:\ -Include *.kdbx -File -Recurse -ErrorAction SilentlyContinue

發現一樣沒有結果,有可能是安裝了密碼管理器但沒有使用也可能是沒有權限




另外已安裝應用程式當中還有看到 XAMPP,列舉時有看到 XAMPP 安裝在預設路徑 C 目錄下




所以改找找 XAMPP 的相關設定檔 ini 與資訊,使用如下指令

Get-ChildItem -Path C:\xampp -Include *.txt,*.ini -File -Recurse -ErrorAction SilentlyContinue

找到了一大堆檔案




透過閱讀 XAMPP 官方文件與經驗,發現兩個感興趣的檔案

 - my.ini : MySQL 設定文件



 - passwords.txt 包含 XAMPP 元件的預設密碼




讀取兩個檔案的內容看一下,type C:\xampp\passwords.txt 發現是預設的密碼,沒太大幫助



設定檔內容,type C:\xampp\mysql\bin\my.ini,結果 GG 沒有權限



由於現在這個 remote shell whoami 身分是使用者 dave,所以接著查看 dave 的使用者 profile 有無可利用的文件,可以透過特定副檔名進行查找

Get-ChildItem -Path C:\Users\dave\ -Include *.txt,*.pdf,*.xls,*.xlsx,*.doc,*.docx -File -Recurse -ErrorAction SilentlyContinue

搜尋完畢僅有一個檔案,順便看一下內容是個簡短的會議紀錄筆記,但當中包含了一個看似有用的帳號與密碼 steve / securityIsNotAnOption++++++




其實 PowerShell 也支援使用 cat 指令來查看文件,用 cat 來讀同一份文件如下




已經知道使用者 steve 所以要列舉一下該使用者所屬相關資訊,使用 net user steve

使用者雖不是 Administrators 群組成員但隸屬遠端桌面群組




Windows 主機有遠端桌面就方便多了,這時候透過拿到的帳號密碼進行遠端桌面連線

└─$ xfreerdp -v:192.168.197.220 -u:steve -p:securityIsNotAnOption++++++ -drive:aries,/home/kali_r/Downloads

由於改成使用者 steve 的權限登入 Windows 了,所以可以看的檔案權限也不一樣,將剛剛做過的枚舉再來一次,這一次發現 steve 有權限可以讀 XAMPP 的 my.ini 檔案,且在檔案中發現了一組新的密碼 admin123admin123! 且描述寫明為 backupadmin 的密碼




此時看看 backupadmin 所屬相關資訊 net user backupadmin

看來中獎了,是本機的 administrators 群組成員




由於該使用者不屬於 Remote Desktop User 所以無法遠端桌面登入,但可以透過其他方式執行所屬的權限,例如 Run as





開啟後透過 whoami 確認是 backupadmin,可以透過指令做任何事情了

若想要遠端進該系統其實也沒問題,透過指令將使用者 backupadmin 加入到本機的

Remote Desktop Users 群組就可以了,先使用 Get-LocalGroupMember "Remote Desktop Users" 查看群組成員,再使用 net localgroup "Remote Desktop Users" backupadmin /add 就完成了

完成後可以再 Get 一次就可以確認成員加入成功了




指令 └─$ xfreerdp -v:192.168.197.220 -u:backupadmin -p:admin123admin123!,登入測試看看吧





練習靶機 : 192.168.197.221

可以遠端桌面的一般使用者帳號密碼 mac / IAmTheGOATSysAdmin!

遠端登入後枚舉發現某個 ini 檔案如下,看來是一段 Base64 Code




Decode 後得到另外一個沒管理員權限但依樣可以遠端的使用者 richmond / GothicLifeStyle1337!




換一個使用者遠端登入,就看到 flag 了





留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)