4.2 SQL Server獲取webshell及提權基礎
主要架構ASP+MSSQL+IIS或者ASP.NET+MSSQL+IIS ,PHP和JSP架構也是支持MSSQL
4.2.1 SQL Server簡介
4.2.2 SQL Server版本
1. SQL Server 2000
2. SQL Server 2005
3. SQL Server 2008
4. SQL Server 2012
5. SQL Server 2014
6. SQL Server 2016
4.2.3 sa口令密碼獲取
1. webshell或源代碼獲取
通過翻查conn.aspx, config.aspx, conn.asp, config.asp, config.php, web.config等文件查看數據庫連接的密碼,
2. 源代碼泄露
獲取站點源代碼壓縮包,很多網站會對整站進行打包,下載以后就能夠查看目標站點的源代碼
3. 嗅探
使用Cain,Ettercap等工具嗅探1433數據庫端口登錄的密碼
4. 口令暴力破解
使用一些MSSQL的暴力破解工具對數據庫MSSQL進行暴力破解,一旦暴力破解成功則獲取sa的口令
4.2.4 常見SQL Server 基礎命令
1. 創建,使用及刪除數據庫
(1) 創建數據庫bmfx
create database bmfx
(2) 使用數據庫bmfx
use bmfx
(3) 刪除bmfx數據庫
drop database bmfx
2. 查看所有數據庫名稱及大小
sp_helpdb
3. 重命名數據庫用的SQL
sp_renamedb'old_dbname', 'new_dbname'
4. 備份和還原數據庫
(1) 備份數據庫
backup database [mydb] to disk = n'D:\mydb.bak' with noformat, noinit, name = n'mydb-完整數據庫備份', skip, norewind, nounload, stats = 10
(2) 還原數據庫
restore database [news] from disk = n'D:\mydb.bak' with file = 1, nounload, stats = 10, replace, move 'test' to 'D:\database\test.mdf', move 'test_log' to 'D:\database\test.ldf'
注意: with后面跟相關參數需要逗哈隔開,可以設置覆蓋還原及還原路徑等參數
(3) 完整備份TestDB數據庫
backup database TestDB to disk = 'C:\Backups\Testdb.bak' with init;go
5. 收縮或壓縮數據庫
(1) 查看所有數據大小
dbcc sqlperf(logspace)
(2) 收縮或壓縮數據庫:
-- 重建索引 DBCC REINDEX DBCC INDEXDEFRAG
-- 收縮數據和日志 DBCC SHRINKDB DBCC SHRINKFILE
-- 壓縮數據庫 dbcc shrinkdatabase(dbname)
6. 基本的SQL語句
(1) 選擇: select * from table1 where 范圍
(2) 插入: insert into table1(field1,field2) values(value1,value2)
(3) 刪除: delete from table1 where 范圍
(4) 更新: update table1 set field1=value1 where 范圍
(5) 查找: select * from table1 where field like '%value1%'
(6) 排序: select * from table1 order by field1,field2 [desc]
(7) 總數: select count as totalcountfrom table1
(8) 求和: select sum(field1) as sumvalue from table1
(9) 平均: select avg(field1) as avgvalue from table1
(10) 最大: select max(field1) as maxvalue from table1
(11) 最小: select min(field1) as minvalue from table1
7. 字符串處理函數
(1) LTRIM(): 去除字符串頭部的空格
(2) RTRIM(): 去除字符串尾部的空格
(3) LEFT (<character_expression>, <integer_expression>): 返回character_expression左起<integer_expression>字符
(4) RIGHT (<character_expression>, <integer_expression>): 返回character_expression右起<integer_expression>字符
(5) SUBSTRING (<expression>, <starting_position>, length): 返回從字符串左邊第starting_position個字符起length個字符的部分
(6) CHARINDEX(): 返回字符串中某個指定的字符串出現的開始位置
(7) PATINDEX()
(8) QUOTENAME()
(9) REPLICATE
(10) REVERSE()
(11) REPLACE()
(12) SPACE()
(13) STUFF()
8. 轉換函數
(1) ASCII():返回字符表達式最左端字符的ASCII碼值,在ASCII()函數中,純數字的字符串可不用"引起來;但其他字符的字符串必須用"引起來使用,否則會出錯
(2) CHAR() :將ASCII碼轉換為字符,如果沒有輸入0-255的ASCII碼值,則CHAR()返回NULL
(3) LOWER()和UPPER(): LOWER()將字符串全部轉換為小寫,UPPER()將字符串全部轉換為大寫
(4) STR() : 把數字型數據轉換為字符型數據
(5) CONVERT() : 數據類型轉換 (<data_type>[length],<expression>[,style])
9. 日期函數
(1) day(date_expression)
(2) month(date_expression)
(3) year(date_expression)
(4) DATEADD(<datepart>,<number>,<date>)
(5) DATEDIFF(<datepart>,date1>)
(6) DATENAME(<datepart>,<date>)
(7) DATEPART(<datepart>,<date>)
(8) GETDATE() : 以DATETIME的默認格式返回系統當前的日期和時間
4.2.5 常見SQL Server提權命令
1. 查看數據庫的版本
命令如下:
select @@version();
2. 查看數據庫所在服務器操作系統參數
主要顯示如下:
ProductName, ProductVersion, Language, Platform, Comments, CompanyName, FileDescription, FileVersion, InternalName, LegalCopyright, LegalTrademarks, OriginalFilename, PrivateBuild, SpecialBuild, WindowsVersion, ProcessorCount, ProcessorActiveMask, ProcessorType, PhysicalMemory和Product ID 等參數信息,其中Platform 顯示平台是X86還是X643. 查看數據庫啟動的參數
exec master..xp_msver;
3. 查看數據庫啟動的參數
命令如下:
sp_configure
4. 查看數據庫啟動時間
命令如下:
select convert(varchar(30), login_time, 120) from master.. sysprocesses where spid=1
5. 查看數據庫服務器名和實例名
命令如下:
print 'ServerName......:'+convert(varchar(30), @@SERVERNAME)
print 'Instance.....:'+convert(varchar(30), @@SERVICENAME)
6. 查看用戶登錄信息
(1) 所有數據庫用戶登錄信息
sp_helplogins
(2) 查看所有數據庫用戶所屬的角色信息:
sp_helpsrvrolemember
(3) 查看某數據庫下,對象級用戶權限
sp_helprotect
(4) 查看鏈接服務登錄情況
sp_helplinkedsrvlogin
7. 查看數據庫中所有的存儲過程和函數
命令如下:
sp_stored_procedures
8. 查看數據庫中用戶和進程的信息
(1) 數據庫中用戶和進程的信息
sp_who
(2) SQL Server 數據庫中的活動用戶和進程的信息
sp_who'active'
(3) SQL Server 數據庫中的鎖的情況
sp_lock
9. 恢復存儲過程
命令如下:
大家根據這個關鍵字網上搜下就有,太多了我就不手打了,主要恢復的dll文件涉及到xplog70.dll, xpstar.dll, odsole70.dll
10. 開啟和關閉xp_cmdshell
11. xp_cmdshell執行命令
12. 開啟和關閉sp_oacreate
13. sp_OACreate刪除文件
14. sp_OACreate復制文件
15. sp_OACreate移動文件
16. sp_OACreate加管理員用戶
17. 開啟和關閉sp_makewebtask
18. sp_makewebtask新建文件
19. wscript.shell執行命令
20. Shell.Application執行命令
21. 開啟和關閉openrowset
22. 沙盒執行命令
23. 注冊表劫持粘貼鍵
24. sp_oacreate替換粘貼鍵
25. public權限提權操作
26. echo一句話后門
27. MSSQL中查詢password
上述具體命令內容大家可以通過上述關鍵字去網上搜索即可搜到
4.2.6 數據庫備份獲取webshell
1. 差異備份
2. log備份
4.2.7 清除SQL Server日志
SQL Server自帶了日志審計功能,對於SQL Server的一些操作都會記錄在案,在日常滲透測試之后,需要清理這些痕跡
1. 查看備份文件歷史
2. 刪除media_set_id為13的記錄
3. 刪除錯誤日志及操作日志
