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版本
- SQL Server 2000
- SQL Server 2005
- SQL Server 2008
- SQL Server 2012
- SQL Server 2014
- SQL Server 2016
4.2.3 sa口令密码获取
- webshell或源代码获取
通过翻查conn.aspx, config.aspx, conn.asp, config.asp, config.php, web.config等文件查看数据库连接的密码,
- 源代码泄露
获取站点源代码压缩包,很多网站会对整站进行打包,下载以后就能够查看目标站点的源代码
- 嗅探
使用Cain,Ettercap等工具嗅探1433数据库端口登录的密码
- 口令暴力破解
使用一些MSSQL的暴力破解工具对数据库MSSQL进行暴力破解,一旦暴力破解成功则获取sa的口令
4.2.4 常见SQL Server 基础命令
- 创建,使用及删除数据库
(1) 创建数据库bmfx
create database bmfx
(2) 使用数据库bmfx
use bmfx
(3) 删除bmfx数据库
drop database bmfx
- 查看所有数据库名称及大小
sp_helpdb
- 重命名数据库用的SQL
sp_renamedb'old_dbname', 'new_dbname'
- 备份和还原数据库
(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
- 收缩或压缩数据库
(1) 查看所有数据大小
dbcc sqlperf(logspace)
(2) 收缩或压缩数据库:
-- 重建索引 DBCC REINDEX DBCC INDEXDEFRAG
-- 收缩数据和日志 DBCC SHRINKDB DBCC SHRINKFILE
-- 压缩数据库 dbcc shrinkdatabase(dbname)
- 基本的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
- 字符串处理函数
(1) LTRIM(): 去除字符串头部的空格
(2) RTRIM(): 去除字符串尾部的空格
(3) LEFT (, ): 返回character_expression左起字符
(4) RIGHT (, ): 返回character_expression右起字符
(5) SUBSTRING (, , length): 返回从字符串左边第starting_position个字符起length个字符的部分
(6) CHARINDEX(): 返回字符串中某个指定的字符串出现的开始位置
(7) PATINDEX()
(8) QUOTENAME()
(9) REPLICATE
(10) REVERSE()
(11) REPLACE()
(12) SPACE()
(13) STUFF()
- 转换函数
(1) ASCII():返回字符表达式最左端字符的ASCII码值,在ASCII()函数中,纯数字的字符串可不用"引起来;但其他字符的字符串必须用"引起来使用,否则会出错
(2) CHAR() :将ASCII码转换为字符,如果没有输入0-255的ASCII码值,则CHAR()返回NULL
(3) LOWER()和UPPER():LOWER()将字符串全部转换为小写,UPPER()将字符串全部转换为大写
(4) STR() : 把数字型数据转换为字符型数据
(5) CONVERT() :数据类型转换 ([length],[,style])
- 日期函数
(1) day(date_expression)
(2) month(date_expression)
(3) year(date_expression)
(4) DATEADD(,,)
(5) DATEDIFF(,date1>)
(6) DATENAME(,)
(7) DATEPART(,)
(8) GETDATE() :以DATETIME的默认格式返回系统当前的日期和时间
4.2.5 常见SQL Server提权命令
- 查看数据库的版本
命令如下:
select @@version();
- 查看数据库所在服务器操作系统参数
主要显示如下:
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;
- 查看数据库启动的参数
命令如下:
sp_configure
- 查看数据库启动时间
命令如下:
select convert(varchar(30), login_time, 120) from master.. sysprocesses where spid=1
- 查看数据库服务器名和实例名
命令如下:
print 'ServerName......:'+convert(varchar(30), @@SERVERNAME)
print 'Instance.....:'+convert(varchar(30), @@SERVICENAME)
- 查看用户登录信息
(1) 所有数据库用户登录信息
sp_helplogins
(2) 查看所有数据库用户所属的角色信息:
sp_helpsrvrolemember
(3) 查看某数据库下,对象级用户权限
sp_helprotect
(4) 查看链接服务登录情况
sp_helplinkedsrvlogin
- 查看数据库中所有的存储过程和函数
命令如下:
sp_stored_procedures
- 查看数据库中用户和进程的信息
(1) 数据库中用户和进程的信息
sp_who
(2) SQL Server 数据库中的活动用户和进程的信息
sp_who'active'
(3) SQL Server 数据库中的锁的情况
sp_lock
- 恢复存储过程
命令如下:
大家根据这个关键字网上搜下就有,太多了我就不手打了,主要恢复的dll文件涉及到xplog70.dll, xpstar.dll, odsole70.dll
- 开启和关闭xp_cmdshell
- xp_cmdshell执行命令
- 开启和关闭sp_oacreate
- sp_OACreate删除文件
- sp_OACreate复制文件
- sp_OACreate移动文件
- sp_OACreate加管理员用户
- 开启和关闭sp_makewebtask
- sp_makewebtask新建文件
- wscript.shell执行命令
- Shell.Application执行命令
- 开启和关闭openrowset
- 沙盒执行命令
- 注册表劫持粘贴键
- sp_oacreate替换粘贴键
- public权限提权操作
- echo一句话后门
- MSSQL中查询password
上述具体命令内容大家可以通过上述关键字去网上搜索即可搜到
4.2.6 数据库备份获取webshell
- 差异备份
- log备份
4.2.7 清除SQL Server日志
SQL Server自带了日志审计功能,对于SQL Server的一些操作都会记录在案,在日常渗透测试之后,需要清理这些痕迹
- 查看备份文件历史
- 删除media_set_id为13的记录
- 删除错误日志及操作日志