n3rada/MSSQLand

GitHub: n3rada/MSSQLand

一个专为红队设计的 MSSQL 后渗透工具,支持链接服务器遍历、级联用户模拟和 SCCM 基础设施侦察。

Stars: 54 | Forks: 8

# ✈️ MSSQLand 优雅地降临在你的目标 Microsoft SQL Server (MS SQL) DBMS 中,就像手持香槟杯乘坐商务舱抵达一样。🥂 ![MSSQLand 链式能力](/media/chain.jpg) MSSQLand 专为在红队活动或任何安全审计期间与 [Microsoft SQL Server](https://en.wikipedia.org/wiki/Microsoft_SQL_Server) 数据库管理系统 (DBMS) 交互而构建。它旨在直接通过你的 beacon 在目标环境内运行(例如,使用 assembly 执行),允许你在多个链接服务器之间铺平道路,并在此过程中模拟任何你可以模拟的用户,从最后一跳中执行任何所需的操作。 ## 🧸 使用方法 ``` MSSQLand.exe -c [options] [action-options] ``` 格式:`server:port/user@database` 或任意组合 `server/user@database:port`。 - `server`(必需)- SQL Server 主机名或 IP - `:port`(可选)- 端口号(默认:1433,常见:1434, 14333, 2433) - `/user`(可选)- 在此服务器上模拟的用户 - 支持**级联模拟**:`/user1/user2/user3` 执行 `EXECUTE AS LOGIN = 'user1'; EXECUTE AS LOGIN = 'user2'; EXECUTE AS LOGIN = 'user3';` - 每个 `/user` 都会将一个新的模拟上下文推入安全栈 - `@database`(可选)- 数据库上下文 ``` # 仅测试连接(不执行操作) MSSQLand.exe localhost -c token # 执行特定操作 MSSQLand.exe localhost -c token info MSSQLand.exe localhost:1434@db03 -c token info MSSQLand.exe LAB-SQL01@AdventureWorks -c token tables -n Customer ``` ### 🔗 链接服务器链 使用 `-l` 标志链接多个 SQL 服务器,**以分号 (`;`) 作为分隔符**: ``` -l SQL01;SQL02/user;SQL03@database ``` **语法:** - **分号 (`;`)** - 分隔链中的服务器 - **斜杠 (`/`)** - 指定要模拟的用户 - 支持**级联模拟**:`/user1/user2` 执行连续模拟 - **艾特符号 (`@`)** - 指定数据库上下文 - **方括号 (`[...]`)** - 用于保护服务器名称不被我们的分隔符分割 **示例:** ``` # 简单链 -l SQL01;SQL02;SQL03 # 使用模拟和数据库 -l SQL01/admin;SQL02;SQL03/manager@clients # 级联模拟(模拟 user1,然后在 SQL01 上模拟 user2) -l SQL01/user1/user2;SQL02;SQL03 # 混合级联(SQL01: user1→user2,SQL03: user3→user4→user5) -l SQL01/user1/user2;SQL02;SQL03/user3/user4/user5@database # 服务器名称可以包含连字符、点(无需括号) -l SQL-01;SERVER.001;HOST.DOMAIN.COM # 仅当服务器名称包含分隔符时才需要括号 -l [SERVER;PROD];SQL02;[SQL03@clients]@clientdb ``` ## 🫤 帮助 - `-h` 或 `--help` - 显示所有可用的操作 - `-h search_term` - 过滤操作(例如,`-h adsi` 显示所有与 ADSI 相关的操作) - `localhost -c token createuser -h` - 显示特定操作的详细帮助 ## 🔧 Configuration Manager (ConfigMgr) 支持 MSSQLand 包含对 **[Microsoft Configuration Manager](https://learn.microsoft.com/fr-fr/intune/configmgr/)**(原 SCCM / MECM)利用和侦察的全面支持。当你拥有 ConfigMgr 数据库服务器的访问权限时,你可以利用专门的操作进行设备情报收集(例如 `cm-devices`)或基础设施映射。 所有 ConfigMgr 操作都使用 `cm-` 前缀(例如 `cm-scripts`, `cm-package`),以符合 Microsoft [官方 PowerShell cmdlet](https://learn.microsoft.com/en-us/powershell/module/configurationmanager/?view=sccm-ps) 的命名约定(`Get-CM*`, `Set-CM*` 等)。 ## 📸 整洁的输出,干净的报告 该工具的输出富含时间戳和有价值的上下文信息,旨在产生视觉上吸引人且专业的结果,使其非常适合为你任何报告(例如客户交付物、内部报告、红队评估)捕获高质量截图。 所有输出表格对 Markdown 友好,可以直接复制粘贴到你的笔记中,无需任何格式调整。 ## 🥚 起源 MSSQLand 诞生于现实世界的需求和惨痛的教训。 最初,我为 [SQLRecon](https://github.com/skahwah/SQLRecon) 做了大量贡献,它为 MS SQL 后渗透和侦察提供了坚实的基础。然而,在我为 SQLRecon 做贡献期间,特别是在解决[链式链接服务器遍历](https://github.com/skahwah/SQLRecon/issues/16#issuecomment-2048435229)和增强用户模拟方面,我在贡献的处理方式上遇到了重大障碍。我[提交的 Pull Request](https://github.com/skahwah/SQLRecon/pull/17) 引入了在模拟、链式操作和上下文管理方面的重大改进,最终未被合并,而是被复制粘贴了。 为了不让这项工作白费,我决定开发 MSSQLand,这是一个面向对象(OOP)、模块化且对社区友好的替代方案。与需要深度重构才能进行简单修改的 SQLRecon 不同,MSSQLand 是为开发者构建的。该工具以可扩展性为理念构建,允许集成新功能,同时保持清晰和简单。它旨在为需要 MS SQL 利用的任务提供结构化、可定制且对操作员友好的体验。 ## ⚠️ 免责声明 **此工具仅提供用于防御性安全研究、教育和授权渗透测试。** 在你对不拥有的任何系统运行此软件之前,你必须拥有**明确的书面授权**。 此工具仅用于教育目的,旨在帮助安全专业人员在授权的任务中理解和测试 SQL Server 环境的安全性。 可接受的环境包括: - 你控制的私有实验环境(本地虚拟机、隔离网络)。 - 认可的学习平台(CTF, Hack The Box, OffSec 考试场景)。 - 拥有客户书面同意文档的正式渗透测试或红队任务。 滥用本项目可能会导致法律诉讼。 ## ⚖️ 法律声明 严禁在未经系统所有者明确许可的情况下,在现实世界环境中或针对系统未经授权使用此工具,这可能违反法律和道德标准。本工具的创建者和贡献者不对任何滥用或造成的损害负责。 负责任且合乎道德地使用。始终尊重法律并获得适当的授权。
标签:CTF学习, DBMS, SQL Server, T-SQL, 内网渗透, 协议分析, 反取证, 命令执行, 域环境, 多人体追踪, 安全评估, 攻击链, 数据泄露, 权限提升, 横向移动, 用户模拟, 编程规范, 链接服务器, 集合执行