4.2 SQL Server获取webshell及提权基础

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 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
  1. SQL Server 2005
  1. SQL Server 2008
  1. SQL Server 2012
  1. SQL Server 2014
  1. SQL Server 2016

4.2.3 sa口令密码获取

  1. webshell或源代码获取

通过翻查conn.aspx, config.aspx, conn.asp, config.asp, config.php, web.config等文件查看数据库连接的密码,

  1. 源代码泄露

获取站点源代码压缩包,很多网站会对整站进行打包,下载以后就能够查看目标站点的源代码

  1. 嗅探

使用Cain,Ettercap等工具嗅探1433数据库端口登录的密码

  1. 口令暴力破解

使用一些MSSQL的暴力破解工具对数据库MSSQL进行暴力破解,一旦暴力破解成功则获取sa的口令

4.2.4 常见SQL Server 基础命令

  1. 创建,使用及删除数据库

(1) 创建数据库bmfx

create database bmfx

(2) 使用数据库bmfx

use bmfx

(3) 删除bmfx数据库

drop database bmfx

  1. 查看所有数据库名称及大小

sp_helpdb

  1. 重命名数据库用的SQL

sp_renamedb'old_dbname', 'new_dbname'

  1. 备份和还原数据库

(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. 收缩或压缩数据库

(1) 查看所有数据大小

dbcc sqlperf(logspace)

(2) 收缩或压缩数据库:

-- 重建索引 DBCC REINDEX DBCC INDEXDEFRAG

-- 收缩数据和日志 DBCC SHRINKDB DBCC SHRINKFILE

-- 压缩数据库 dbcc shrinkdatabase(dbname)

  1. 基本的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. 字符串处理函数

(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. 转换函数

(1) ASCII():返回字符表达式最左端字符的ASCII码值,在ASCII()函数中,纯数字的字符串可不用"引起来;但其他字符的字符串必须用"引起来使用,否则会出错

(2) CHAR() :将ASCII码转换为字符,如果没有输入0-255的ASCII码值,则CHAR()返回NULL

(3) LOWER()和UPPER():LOWER()将字符串全部转换为小写,UPPER()将字符串全部转换为大写

(4) STR() : 把数字型数据转换为字符型数据

(5) CONVERT() :数据类型转换 ([length],[,style])

  1. 日期函数

(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提权命令

  1. 查看数据库的版本

命令如下:

select @@version();

  1. 查看数据库所在服务器操作系统参数

主要显示如下:

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;

  1. 查看数据库启动的参数

命令如下:

sp_configure

  1. 查看数据库启动时间

命令如下:

select convert(varchar(30), login_time, 120) from master.. sysprocesses where spid=1

  1. 查看数据库服务器名和实例名

命令如下:

print 'ServerName......:'+convert(varchar(30), @@SERVERNAME)

print 'Instance.....:'+convert(varchar(30), @@SERVICENAME)

  1. 查看用户登录信息

(1) 所有数据库用户登录信息

sp_helplogins

(2) 查看所有数据库用户所属的角色信息:

sp_helpsrvrolemember

(3) 查看某数据库下,对象级用户权限

sp_helprotect

(4) 查看链接服务登录情况

sp_helplinkedsrvlogin

  1. 查看数据库中所有的存储过程和函数

命令如下:

sp_stored_procedures

  1. 查看数据库中用户和进程的信息

(1) 数据库中用户和进程的信息

sp_who

(2) SQL Server 数据库中的活动用户和进程的信息

sp_who'active'

(3) SQL Server 数据库中的锁的情况

sp_lock

  1. 恢复存储过程

命令如下:

大家根据这个关键字网上搜下就有,太多了我就不手打了,主要恢复的dll文件涉及到xplog70.dll, xpstar.dll, odsole70.dll

  1. 开启和关闭xp_cmdshell
  1. xp_cmdshell执行命令
  1. 开启和关闭sp_oacreate
  1. sp_OACreate删除文件
  1. sp_OACreate复制文件
  1. sp_OACreate移动文件
  1. sp_OACreate加管理员用户
  1. 开启和关闭sp_makewebtask
  1. sp_makewebtask新建文件
  1. wscript.shell执行命令
  1. Shell.Application执行命令
  1. 开启和关闭openrowset
  1. 沙盒执行命令
  1. 注册表劫持粘贴键
  1. sp_oacreate替换粘贴键
  1. public权限提权操作
  1. echo一句话后门
  1. MSSQL中查询password

上述具体命令内容大家可以通过上述关键字去网上搜索即可搜到

4.2.6 数据库备份获取webshell

  1. 差异备份
  1. log备份

4.2.7 清除SQL Server日志

SQL Server自带了日志审计功能,对于SQL Server的一些操作都会记录在案,在日常渗透测试之后,需要清理这些痕迹

  1. 查看备份文件历史
  1. 删除media_set_id为13的记录
  1. 删除错误日志及操作日志
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
5月前
|
SQL IDE Java
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
111 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
4月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
60 6
|
4月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
371 1
|
3月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
470 0
|
4月前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
305 3
|
4月前
|
SQL 存储 安全
数据库数据恢复—SQL Server数据库出现逻辑错误的数据恢复案例
SQL Server数据库数据恢复环境: 某品牌服务器存储中有两组raid5磁盘阵列。操作系统层面跑着SQL Server数据库,SQL Server数据库存放在D盘分区中。 SQL Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。
|
4月前
|
SQL 存储 关系型数据库
关系型数据库SQL Server学习
【7月更文挑战第4天】
76 2