一个C# MS SQL工具箱,设计用于进攻性侦察和后渗透阶段
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/skahwah/SQLRecon
SQL侦察
描述
AC# MS-SQL 工具包,专为攻击性侦察和后期开发而设计。有关每种技术的详细使用信息,请参阅wiki。
用法
您可以从发布页面获取 SQLRecon 的副本。或者,您可以自行编译解决方案这应该与克隆存储库一样直接,双击解决方案文件并构建。
枚举
SQLRecon 支持 MSSQL SPN 的 Active Directory 枚举,类似于PowerUpSQL 的 Get-SQLInstanceDomain.
- -e - 枚举类型
- 域-d域| (可选)域 FQDN - 使用当前用户令牌为 MSSQL SPN 枚举 AD。
强制参数
强制参数包括身份验证类型(Windows、本地或 Azure)、连接参数和模块。
- -a - 身份验证类型
- -a Windows - 使用 Windows 身份验证。这使用当前用户令牌。
- -a Local - 使用本地身份验证。这需要本地数据库用户的凭据。
- -a Azure - 使用 Azure AD 域用户名和密码身份验证。这需要域用户的凭据。
如果身份验证类型是Windows,那么您将需要提供以下参数。
- -s SERVERNAME - SQL 服务器主机名
- -d DATABASE -(可选)SQL 服务器数据库名称,默认为“master”
- -m MODULE - 您要使用的模块
如果身份验证类型是Local,那么您将需要提供以下参数。
- -d DATABASE -(可选)SQL 服务器数据库名称,默认为“master”
- -u USERNAME - 本地 SQL 用户的用户名
- -p PASSWORD - 本地 SQL 用户的密码
- -m MODULE - 您要使用的模块
如果身份验证类型是Azure,则您需要提供以下参数。
- -d DATABASE -(可选)SQL 服务器数据库名称,默认为“master”
- -r DOMAIN.COM - 域的 FQDN
- -u USERNAME - 域用户的用户名
- -p PASSWORD - 域用户的密码
- -m MODULE - 您要使用的模块
在某些情况下,MS SQL Server 可能不会侦听标准 TCP 端口。一个很好的例子是 MS SQL 故障转移集群。如果身份验证类型是Windows或Local ,您可以选择通过提供-r PORT标志来设置非标准连接端口。默认情况下,SQLRecon 将通过 TCP 端口 1433 连接到数据库。
标准模块
标准模块用于与单个 MS SQL 服务器进行交互。
- info - 打印有关 SQL 服务的信息
- query -o QUERY - 执行任意 SQL 查询
- whoami - 查看您登录的用户、映射的用户以及存在的角色
- 用户- 查看哪些用户帐户和组可以针对数据库进行身份验证
- databases - 显示 SQL 服务器上存在的所有数据库
- tables -o DATABASE - 显示您指定的数据库中的所有表
- search -o KEYWORD - 在您连接的数据库的表中搜索列名
- smb -o SHARE - 捕获 NetNTLMv2 哈希
↓ 命令执行(需要系统管理员角色或类似角色) - enablexp - 启用 xp_cmdshell
- disablexp - 禁用 xp_cmdshell
- xpcmd -o COMMAND - 使用 xp_cmdshell 执行任意系统命令
- enableole - 启用 OLE 自动化程序
- disableole - 禁用 OLE 自动化程序
- olecmd -o COMMAND - 使用 OLE 自动化程序执行任意系统命令
- enableclr - 启用自定义 CLR程序集
- disableclr - 禁用自定义 CLR 程序集
- clr -o DLLPATH -f FUNCTION - 在自定义存储过程中加载并执行 .NET 程序集
- agentstatus - 检查 SQL 代理是否正在运行并获取作业
- agentcmd -o COMMAND - 执行任意系统命令
模拟模块
模拟模块用于在模拟 SQL 用户的上下文中与单个 MS SQL 服务器进行交互。
- 模拟- 枚举可以模拟的任何用户帐户
- iwhoami -i IMPERSONATEUSER - 查看您登录的用户、映射的用户以及存在的角色
- iusers -i IMPERSONATEUSER - 查看哪些用户帐户和组可以针对数据库进行身份验证
- iquery -i IMPERSONATEUSER -o QUERY - 作为模拟用户执行任意 SQL 查询
↓ 命令执行(需要系统管理员角色或类似角色) - ienablexp -i IMPERSONATEUSER - 启用 xp_cmdshell
- idisablexp -i IMPERSONATEUSER - 禁用 xp_cmdshell
- ixpcmd -i IMPERSONATEUSER -o COMMAND - 使用 xp_cmdshell 执行任意系统命令
- ienableole -i IMPERSONATEUSER - 启用 OLE 自动化程序
- idisableole -i IMPERSONATEUSER - 禁用 OLE 自动化程序
- iolecmd -i IMPERSONATEUSER -o COMMAND - 使用 OLE 自动化程序执行任意系统命令
- ienableclr - 启用自定义 CLR程序集
- idisableclr - 禁用自定义 CLR程序集
- iclr -o DLLPATH -f FUNCTION - 在自定义存储过程中加载并执行 .NET 程序集
- iagentstatus -i IMPERSONATEUSER - 检查 SQL 代理是否正在运行并获取作业
- iagentcmd -i IMPERSONATEUSER -o COMMAND - 执行任意系统命令
链接的 SQL Server 模块
当您能够通过已建立的连接与链接的 SQL 服务器进行交互时,链接的 SQL Server 模块是有效的。
- links - 枚举任何链接的 SQL 服务器
- lquery -l LINKEDSERVERNAME -o QUERY - 在链接的 SQL 服务器上执行任意 SQL 查询
- lwhoami -l LINKEDSERVERNAME - 查看您在链接的 SQL 服务器上登录的用户
- lusers -l LINKEDSERVERNAME - 查看哪些用户帐户和组可以针对链接的 SQL 服务器上的数据库进行身份验证
- ldatabases -l LINKEDSERVERNAME - 显示链接的 SQL 服务器上存在的所有数据库
- ltables -l LINKEDSERVERNAME -o DATABASE - 显示链接的 SQL 服务器上提供的数据库中的所有表
- lsmb -l LINKEDSERVERNAME -o SHARE - 从链接的 SQL 服务器捕获 NetNTLMv2 哈希
↓ 命令执行(需要系统管理员角色或类似角色) - lenablerpc -l LINKEDSERVERNAME - 在链接的 SQL 服务器上启用 RPC 和 RPC out
- ldisablerpc -l LINKEDSERVERNAME - 在链接的 SQL 服务器上禁用 RPC 和 RPC out
- lenablexp -l LINKEDSERVERNAME - 在链接的 SQL 服务器上启用 xp_cmdshell
- ldisablexp -l LINKEDSERVERNAME - 在链接的 SQL 服务器上禁用 xp_cmdshell
- lxpcmd -l LINKEDSERVERNAME -o COMMAND - 在链接的 SQL 服务器上使用 xp_cmdshell 执行任意系统命令
- lenableole -l LINKEDSERVERNAME - 在链接的 SQL 服务器上启用 OLE 自动化过程
- ldisableole -l LINKEDSERVERNAME - 在链接的 SQL 服务器上禁用 OLE 自动化过程
- lolecmd -l LINKEDSERVERNAME -o COMMAND - 在链接的 SQL 服务器上使用 OLE 自动化过程执行任意系统命令
- lenableclr -l LINKEDSERVERNAME - 在链接的 SQL 服务器上启用自定义 CLR 程序集
- ldisableclr -l LINKEDSERVERNAME - 在链接的 SQL 服务器上禁用自定义 CLR 程序集
- lclr -o DLLPATH -f FUNCTION - 在链接的 SQL 服务器上的自定义存储过程中加载并执行 .NET 程序集
- lagentstatus -l LINKEDSERVERNAME - 检查 SQL 代理是否正在运行并在链接的 SQL 服务器上获取作业
- lagentcmd -l LINKEDSERVERNAME -o COMMAND - 在链接的 SQL 服务器上执行任意系统命令
例子
请参阅维基。有关详细示例。
路线图
以下技术在未来版本的路线图上
- 扩展枚举模块
标签:工具分享, SQL注入