n3rada/mssqlclient-ng
GitHub: n3rada/mssqlclient-ng
Impacket mssqlclient.py 的增强版本,通过简洁的语法实现了对 SQL Server 及其链接实例的交互和账户模拟,无需复杂的 T-SQL 查询。
Stars: 2 | Forks: 0
impacket 的 `mssqlclient.py` 的增强版本。它允许你与 Microsoft SQL Server (MS SQL / MSSQL) 服务器及其链接实例进行交互,并在此过程中模拟沿途遇到的任何账户,而无需复杂的 T-SQL 查询。
[options]
```
首次运行时会自动调用 `uv sync`,解析并安装所有依赖项(包括来自 GitHub 的 impacket)到隔离的虚拟环境中。随后的运行将瞬间完成。
```
mssqlclient-ng [options]
```
格式:`server:port/user@database` 或其任意组合形式 `server/user@database:port`。
- `server`(必填)- SQL Server 的主机名或 IP 地址
- `:port`(可选)- 端口号(默认:1433,其他常用:1434、14333、2433)
- `/user`(可选)- 要在此服务器上模拟的用户("execute as user")
- `@database`(可选)- 数据库上下文(如果未指定,默认为 'master')
### 🔗 链接服务器链
使用 `-l` 标志链接多个 SQL 服务器,并以**分号 (`;`) 作为分隔符**:
```
-l SQL01;SQL02/user;SQL03@database
```
**语法说明:**
- **分号 (`;`)** - 用于分隔链中的各个服务器
- **斜杠 (`/`)** - 指定要模拟的用户("execute as user")
- **@ 符号 (`@`)** - 指定数据库上下文
- **方括号 (`[...]`)** - 用于保护服务器名称不被我们的分隔符分割
**示例:**
```
# 简单的 chain
-l SQL01;SQL02;SQL03
# 使用 impersonation 和 databases
-l SQL01/admin;SQL02;SQL03/manager@clients
# 服务器名称可以包含连字符、点(不需要括号)
-l SQL-01;SERVER.001;HOST.DOMAIN.COM
# 仅当服务器名称包含分隔符字符时才需要括号
-l [SERVER;PROD];SQL02;[SQL03@clients]@clientdb
```
## 🙏 致谢
- 基于 [Impacket](https://github.com/fortra/impacket) 构建,核心依赖于 [tds.py](https://github.com/fortra/impacket/blob/master/impacket/tds.py)。
- 面向对象(OOP)设计与 [MSSQLand](https://github.com/n3rada/MSSQLand) 密切相关。
- 终端界面由 [prompt_toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) 提供支持。
## ⚠️ 免责声明
**本工具严格仅用于防御性安全研究、教育和授权的渗透测试。** 在对非您所有的任何系统运行本软件之前,您必须获得**明确的书面授权**。
本工具仅出于教育目的而设计,旨在帮助安全专业人员在授权的测试中理解并测试 SQL Server 环境的安全性。
可接受的环境包括:
- 您控制的私有实验环境(本地虚拟机、隔离网络)。
- 获得批准的学习平台(CTF、Hack The Box、OffSec 考试场景)。
- 具有记录在案的客户同意书的正式渗透测试或红蓝对抗演练。
滥用本项目可能会面临法律诉讼。
标签:Impacket, NTLM Relaying, pipx, pypi, Python, SQL Server, T-SQL, uv, XXE攻击, 协议分析, 域渗透, 开源安全工具, 数据库审计, 无后门, 权限提升, 横向移动, 电子数据取证, 编程规范, 网络安全, 账户冒用, 逆向工具, 逆向工程平台, 链式服务器, 隐私保护