sqlmap从入门到精通-第四章-4-2 SQL Server获取webshell及提权基础
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. 删除错误日志及操作日志
![](https://upload-images.jianshu.io/upload_images/6086910-acd50491ea4801f5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)