关闭

MAT:一款针对MSSQL服务器的安全检测与审计工具

发表于:2024-9-05 09:12

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Alpha_h4ck    来源:FreeBuf

  关于MAT
  MAT是一款针对MSSQL服务器的安全检测与审计工具,该工具使用C#开发,可以帮助广大研究人员快速识别和发现MSSQL 服务器中的安全问题,并实现安全检测与审计目的。
  功能介绍
  1、执行自动检查并识别安全问题;
  2、允许通过 Windows 集成身份验证以及 SQL 身份验证登录;
  3、如果权限存在则快速激活 XP_cmdshell(本地以及链接服务器上);
  4、通过 XP_cmdshell 方便地执行系统命令(本地以及单/双链接服务器);
  5、方便执行 SQL 命令(本地以及链接服务器上);
  6、通过 XP_dirtree 快速触发 NTLM 请求;
  7、自定义存储过程-用于执行操作系统命令(本地);
  8、自动检查并启用 RPC OUT(如果链接服务器禁用 RPC OUT,则链接服务器上的存储程序(如 xp_cmdshell)将不可用);
  9、自动转储 MSSQL 用户哈希;
  工具要求
  Visual Studio
  CommandLineParser.2.9.1(NuGet包)
  Costura.Fody(NuGet包)
  工具安装
  源码编译
  广大研究人员可以直接使用下列命令将该项目源码克隆至本地:
  git clone https://github.com/SySS-Research/MAT.git
  然后打开Visual Studio,加载项目代码,根据操作系统平台架构编译项目代码即可。
  发布版本
  除此之外,我们也可以直接访问该项目的【Releases页面】下载最新版本的MAT可执行程序。
  工具使用
  Example: MAT.exe [options]
  Example: MAT.exe --server localhost -u sqlusername -p sqlpassword --os-command "whoami"
  如果可执行文件在没有凭据的情况下执行(没有选项“-u:”或“-p:”),它将默认尝试使用 Windows 集成身份验证(当前登录的 Windows 用户)登录。
  工具参数选项
  Options:
   
  -s, --server             SQL 服务器(必填)
  -u, --user               SQL 用户
  -p, --password         SQL 密码
  -d, --database         数据库名称 (默认: 'master')
  -r, --relay              通过XP_DIRTREE触发到给定IP的NTLM中继
  -i, --impersonate       模拟指定的SQL用户
  --dumphashes         如果当前用户具有管理员权限,则转储MSSQL用户哈希
  -l, --linked-server       链接的SQL服务器
  -e                     在本地(-e)或链接服务器(-e LINKEDSERVER)上启动XP_CMD Shell
  --os-command          在所选目标系统中执行的OS命令
  --sql-command         在所选目标系统中执行的SQL命令
  --double-link           使用双链接通过XP_CMD执行OS命令
  --stoprox              通过自定义程序集存储进程执行OS命令
  --help                 显示工具帮助信息
  --version              显示版本信息
  工具运行演示
  在执行安全检测和审计期间,如果在本地服务器上识别出本地 MSSQL Server 实例,我们就可以直接使用MAT手动与目标实例建立连接:
  MAT.exe --server localhost
  该工具显示收集到的Windows用户凭证可以登录 SQL Server“COM1”(Windows 集成身份验证 - 无需输入用户名/密码)。该工具提供以下输出:
  用户属于“sysadmin”组。这允许用户激活 XP_CMD shell 并执行系统命令或列出 SQL 用户登录(这在后面很重要)。
  激活 XP_cmdshell 后(MAT.exe --server localhost -e),可以随后执行系统命令(MAT.exe --server localhost --os-command "whoami")。
  使用参数“--os-command”而不使用附加参数“--linked-server”会告诉工具在条目 SQL Server(COM1)上本地执行该命令:
  下一步,可以测试用户 COM1\user 是否可用于访问链接服务器,MAT识别出了以下链接服务器:
  在 SQL Server 上查询链接服务器时,服务器本身(在本例中为 COM1)也始终会列出。此处的实际链接服务器是“COM2”。直接尝试使用受感染的用户在此链接服务器上执行 SQL 命令会失败(MSSQL 工具会自动执行这些检查):
  这是因为 COM1 上没有当前用户的登录映射,登录映射可以确定 SQL Server COM1 中的哪个用户与 COM2 中的哪个用户相关联。
  因此,了解 COM1 上有哪些用户非常重要,这样才能测试这些用户是否存在登录映射(如果权限足够高,则可以通过 SQL Management Studio 直接在链接服务器对象“COM2”中检查这一点)。此前,MAT检测到以下用户登录:
  userx
  user1
  adminuser
  拥有“sysadmin”权限的用户com1\user也可以模拟SQL用户。
  因此,可以尝试模拟用户“userx”。通过参考用户/权限图表,可以发现模拟用户“userx”可以以“usery”的身份在 COM2 上执行 SQL 命令。需要注意的是,模拟后执行的所有操作都以模拟用户的身份进行。相关命令如下:
  MAT.exe --server localhost --impersonate userx
  使用该工具可获得以下结果:
  在此演示场景中,该工具不仅能够在本地或链接服务器 COM2 上执行 OS 命令(通过 1 个链接),还可以从那里使用 SQL Server COM1 作为链接服务器(通过 2 个链接)。在三重链接场景中,COM1 将首先通过链接连接到 COM2,然后返回 COM1,然后再次通过链接连接到 COM2。指示“Pwn3d!”表示链接服务器上的映射用户属于“sysadmin”组,因此可以完全控制 SQL Server。
  下图显示了每个 MSSQL 服务器的现有用户及其映射:
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2024软件测试行业从业人员调查问卷》,您的见解,行业的声音!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号