找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖
Claude、GPT 海外模型 API 接入云原生前端项目实战教程50G互联网架构师面试指南
大模型全栈开发课程企业级DevOps全栈实践零基础产品经理就业课程

6143

积分

1

好友

771

主题
发表于 3 天前 | 查看: 0| 回复: 0

本文将探讨如何从 Microsoft SQL Server (MSSQL) shell 升级到在目标计算机上执行命令,核心是利用内置功能 xp_cmdshell

这种攻击比表面看起来更严重。虽然进程是从 MSSQL shell 启动的,但同样可以通过 SQL 注入 (SQLi) 攻击触发。如果攻击者能注入 SQL 命令,就可能借此在系统上执行命令。

攻击概述

先交代一下环境:我已经拿到一个 Microsoft SQL shell,界面如下:

Impacket 连接 Microsoft SQL Server 的输出日志

接着准备执行第一条 SQL 命令,尝试在本地计算机上运行命令。前面已经提到,我们要用 xp_cmdshell 来实现。

xp_cmdshell "whoami"

这条命令通过 SQL Server 的 xp_cmdshell 功能执行 whoami 实用程序。whoami 会返回当前进程对应的用户,也就是运行 SQL Server 的账户。执行它可以确认 SQL Server 服务账户在目标机器上的权限级别。这个信息非常关键,如果 SQL Server 服务以高于预期的权限运行,还可能给后续提权提供机会。

执行 xp_cmdshell 被 SQL Server 阻止的错误提示

第一次尝试没有成功。从错误信息看,似乎缺少某些权限。不过我已经以管理员身份登录 MSSQL shell,下一步是调整两个配置项,再重新执行命令。

SP_CONFIGURE "show advanced options", 1
RECONFIGURE

SP_CONFIGURE 用于修改服务器级配置。把 show advanced options 设置为 1,可以打开默认隐藏的高级配置项。随后执行 RECONFIGURE 让修改立即生效。在启用 xp_cmdshell 这类用于执行系统命令的功能之前,通常都需要先完成这一步。

SP_CONFIGURE 启用高级选项并执行 RECONFIGURE 的输出

再试一次后,还是同样的错误。唯一的解决办法如下:

SP_CONFIGURE "xp_cmdshell", 1

这条命令会启用 SQL Server 中的 xp_cmdshell 功能。默认情况下,出于安全考虑该功能是关闭的,因为它允许在 SQL Server 环境中执行系统命令。把它设置为 1 后,再执行 RECONFIGURE 应用变更。启用 xp_cmdshell 后,就可以运行操作系统命令了,这也是在目标机器上执行后续操作的关键步骤。

RECONFIGURE
xp_cmdshell "whoami"

启用 xp_cmdshell 后执行 whoami 的完整日志

终于成功

最终想法

配置调整完成后,攻击成功执行。通过启用高级选项并调整设置,我们用 xp_cmdshell 在目标机器上运行了命令。这也说明保证 SQL Server 配置安全有多重要:被忽略的设置很容易被利用,正确管理这些配置是防范此类漏洞的关键。




上一篇:SQL注入WAF绕过实战:IIS安全狗防护下攻破XYCMS
下一篇:利用MSSQL CLR存储过程不调用cmd加载Shellcode绕过杀软上线CobaltStrike
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-9-21 01:50 , Processed in 1.727951 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表