前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQLRecon:一款针对MSSQL的网络侦查与后渗透测试工具

SQLRecon:一款针对MSSQL的网络侦查与后渗透测试工具

作者头像
FB客服
发布2024-04-15 14:41:06
1340
发布2024-04-15 14:41:06
举报
文章被收录于专栏:FreeBufFreeBuf
关于SQLRecon

SQLRecon是一款针对Microsoft SQL Server的安全研究工具,该工具专为红队研究人员设计,可以帮助广大研究人员针对MSSQL执行网络侦查和后渗透利用测试。

工具安装

广大研究人员可以直接访问该项目的【Releases页面】下载预编译的最新版本SQLRecon。

除此之外,我们还可以使用下列命令将该项目源码克隆至本地:

代码语言:javascript
复制
git clone https://github.com/skahwah/SQLRecon.git

然后导入至Visual Studio中,针对操作系统架构完成代码构建即可。

工具使用

枚举模块

SQLRecon支持枚举活动目录以搜索跟Microsoft SQL Server相关的SPN。

枚举模块(/e:, /enum:)不需要提供身份验证提供程序:

代码语言:javascript
复制
SqlSpns - Use the current user token to enumerate the current AD domain for MSSQL SPNs

        /d:, /domain: | (OPTIONAL) NETBIOS name (DOMAIN) or FQDN of domain (DOMAIN.COM)

身份认证提供程序

SQLRecon支持使用一组不同的身份验证提供程序(/a:, /auth:),以实现与Microsoft SQL Server的交互:

代码语言:javascript
复制
WinToken - 使用当前用户令牌对SQL数据库进行身份验证

        /h:, /host: | SQL服务器主机名或IP

        /database:  | (可选)SQL server数据库名称,默认为“master”

        /port:      | (可选)默认为1433



WinDomain - 使用AD凭据对SQL数据库进行身份验证

        /h:, /host:     | SQL服务器主机名或IP

        /d:, /domain:   | NETBIOS名称(domain)或域的FQDN(domain.COM)

        /u:, /username: | 域用户的用户名

        /p:, /password: | 域用户的密码

        /database:      | (可选)SQL server数据库名称,默认为“master”

        /port:          | (可选)默认为1433



Local - 使用本地SQL凭据对SQL数据库进行身份验证

        /h:, /host:     | SQL服务器主机名或IP

        /u:, /username: | 本地SQL用户的用户名

        /p:, /password: | 本地SQL用户的密码

        /database:      | (可选)SQL server数据库名称,默认为“master”

        /port:          | (可选)默认为1433



AzureAD - 使用Azure AD凭据对Azure SQL数据库进行身份验证

        /h:, /host:     | SQL服务器主机名或IP

        /d:, /domain:   | 域的FQDN(domain.COM)

        /u:, /username: | 域用户的用户名

        /p:, /password: | 域用户的密码

        /database:     | (可选)SQL server数据库名称,默认为“master”



AzureLocal - 使用本地SQL凭据对Azure SQL数据库进行身份验证

        /h:, /host:     | SQL服务器主机名或IP

        /u:, /username: | 本地SQL用户的用户名

        /p:, /password: | 本地SQL用户的密码

        /database:      | (可选)SQL server数据库名称,默认为“master”

        /port:          |(可选)默认为1433

标准模块

标准模块需要针对单个Microsoft SQL server实例执行,标准模块必须传递给模块参数(/m:,/module:)中。

模块必须以[*]开头,且需要系统管理员权限或类似权限上下文。

代码语言:javascript
复制
Info                                                     | 显示相关SQL server的信息

Query /c:QUERY                                           | 执行SQL查询

Whoami                                                   | 显示您登录的用户、映射的用户以及存在的角色

Users                                                    | 显示哪些用户帐户和组可以对数据库进行身份验证

Databases                                                | 显示所有数据库

Tables /db:DATABASE                                      | 显示所提供数据库中的所有表

Columns /db:DATABASE /table:TABLE                        | 显示提供的数据库和表中的所有列

Rows /db:DATABASE /table:TABLE                           | 显示提供的数据库表中的行数

Search /keyword:KEYWORD                                  | 在所连接数据库的提供表中搜索列名

Smb /rhost:UNC_PATH                                      | 捕获NetNTLMv2哈希

Impersonate                                              | 枚举可以模拟的用户帐户

Links                                                    | 枚举链接的SQL服务器

CheckRpc                                                 | 获取链接服务器及其RPC状态的列表

[*] EnableRpc /rhost:LINKED_HOST                         | 在链接服务器上启用RPC和RPC输出

[*] DisableRpc /rhost:LINKED_HOST                        | 在链接服务器上禁用RPC和RPC输出

[*] EnableXp                                             | 启用xp_cmdshell

[*] DisableXp                                            | 禁用xp_cmdshell

[*] XpCmd /c:COMMAND                                     | 使用xp_cmdshell执行系统命令

[*] EnableOle                                            | 启用OLE自动化程序

[*] DisableOle                                           | 禁用OLE自动化程序

[*] OleCmd /c:COMMAND                                    | 使用OLE自动化程序执行系统命令

[*] EnableClr                                            | 启用CLR集成

[*] DisableClr                                           | 禁用CLR集成

[*] Clr /dll:DLL /function:FUNCTION                      | 在自定义存储程序中加载并执行.NET程序集

[*] AgentStatus                                          | 显示SQL代理是否正在运行并获取代理任务

[*] AgentCmd /c:COMMAND                                  | 使用代理任务执行系统命令

[*] Adsi /rhost:ADSI_SERVER_NAME /lport:LDAP_SERVER_PORT | 从链接的Adsi服务器获取明文Adsi凭据
代码语言:javascript
复制
SCCM模块

SQLRecon还提供了几个模块用于枚举和渗透SCCM和ECM,SCCM模块必须传递给模块参数(/m:,/module:)。

SCCM和ECM需要拥有一个对外的本地或远程Microsoft SQL数据库。

以[*]开头的模块需要sysadmin角色或类似的特权上下文。

代码语言:javascript
复制
sUsers                                                |显示所有SCCM用户

sSites                                                | 显示存储了数据的所有其他站点

sLogons /option:OPTIONAL_FILTER                       | 显示所有关联的SCCM客户端和最后登录的用户r

sTaskList                                             | 显示所有任务序列,但不访问任务数据内容

sTaskData                                             | 将所有任务序列解密为明文

sCredentials                                          | 显示SCCM保管的加密凭据

[*] sDecryptCredentials                               | 尝试解密已恢复的SCCM凭据Blob。必须在SCCM服务器上的高完整性或SYSTEM进程中运行

[*] sAddAdmin /user:DOMAIN\USERNAME /sid:SID          | 将在SCCM中将提供的帐户提升为“完全管理员”

[*] sRemoveAdmin /user:ADMIN_ID /remove:REMOVE_STRING | 删除用户的权限,或从SCCM数据库中完全删除用户

许可证协议

本项目的开发与发布遵循BSD-3-Clause开源许可证协议。

项目地址

SQLRecon:

https://github.com/skahwah/SQLRecon

https://securityintelligence.com/posts/databases-beware-abusing-microsoft-sql-server-with-sqlrecon/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 枚举模块
  • 身份认证提供程序
  • 标准模块
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档