无需Potato!利用ADCSRPC将IIS权限直达SYSTEM

admin 2026-09-06 04:50:42 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍一种无需Potato漏洞的提权技术,利用IIS应用池访问网络资源时身份静默提升为计算机账户的Windows特性,通过向ADCSRPC端点提交CSR获取计算机账户证书,再结合Rubeus的S4U2Self技术模拟管理员,实现从IISAppPool权限提升至SYSTEM。文章提供了完整攻击链步骤和操作命令,适用于已获得IISWeb应用RCE权限且主机为域成员的场景。 综合评分: 85 文章分类: 红队,内网渗透,漏洞分析,安全工具


无需Potato!利用AD CS RPC将IIS权限直达SYSTEM

mannulinux mannulinux

潇湘信安

2026年9月4日 08:30 湖南

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

| Ima知识库名称 | 加入条件 | | — | — | | 潇湘信安协同知识库(更新~ing!) | 限时免费 | | 潇湘信安学习资料库(更新~ing!) | ≥3年粉丝 | | 潇湘信安内部知识库(更新~ing!) | 星球成员 |

现在只对常读和星标公众号才展示大图推送,建议大家把“潇湘信安”设为星标,否则可能看不到了!

从IIS AppPool到NT Authority\SYSTEM:通过AD CS RPC端点的提权之路

原文链接:Privilege escalation from IIS AppPool to NT Authority/SYSTEM via AD CS RPC endpoint

作者:Mannu Linux

发布日期:2026-08-31

在这篇博客中,我将演示如何在不使用任何 Potato 漏洞利用的情况下,从 IIS AppPool\DefaultAppPool 权限提升至 NT Authority\SYSTEM。适用场景是:我们在一个通过 IIS Web 服务器运行的 Web 应用上获得了远程代码执行(RCE)权限,运行身份为 IIS AppPool\DefaultAppPool,且被控主机是 Windows 活动目录域的一部分。


概述

这项技术背后的关键洞察是一个有据可查的 Windows 行为:

当 IIS 应用池标识访问网络级资源时,其身份会被静默提升为该主机的计算机账户。

这个行为是设计使然,我们将滥用它来获取计算机账户权限。

当 IIS 应用池(以 IIS AppPool\DefaultAppPool 身份运行)向活动目录网络中的网络资源(如 Active Directory 证书服务 AD CS 的 RPC 端点)发起请求时,Windows 会自动将该身份转换为 IIS Web 服务器所在主机的计算机账户。

这意味着,当我们从被控 IIS 服务器向 AD CS RPC/Web 注册端点提交证书签名请求(CSR)时,该请求将以计算机账户的身份到达 AD CS,而 AD CS 会愉快地使用默认的计算机账户证书模板为其颁发证书。

通过将这种身份转换与证书请求相结合,我们可以从 AD CS 获取计算机账户证书,然后使用该证书获取计算机账户的票据授权票据(TGT),最终在目标主机上使用 S4U2Self 技术模拟管理员来提升权限。让我们开始吧


攻击链

以下是完整攻击链概览:

  1. 在攻击者控制的 Windows 机器上生成 CSR
  2. 在被控 IIS 主机上运行 ASPX 代码,向 AD CS RPC 端点提交 CSR(以计算机账户身份)
  3. AD CS 为计算机账户颁发证书
  4. 在攻击者机器上将颁发的证书与私钥合并,生成 PFX 文件
  5. 使用 Rubeus 工具通过 PFX 请求计算机账户 TGT
  6. 使用计算机账户 TGT 请求管理员用户的 CIFS TGS

步骤 1:在攻击者机器上生成 CSR

在攻击者机器上,运行一个自定义 PowerShell 脚本来生成 CSR 及其私钥。该脚本会将 CSR 和私钥以 base64 编码字符串的形式直接输出到控制台。

让我们在攻击者控制的 Windows 机器上运行 PowerShell 脚本:

PS C:\Users\b0x\Desktop> .\csr_short.ps1

注意subjectName 和 altName 参数不是必需的,因为 AD CS 默认计算机证书模板不接受用户提供的主题和备用名称。

输出将类似于这样:

将私钥输出保存到攻击者机器上的一个文件中(比如 machine_cet.key),我们在步骤 4 中会用到它

复制 base64 编码的 CSR,下一步我们将通过被控 IIS 主机和 ASPX 代码将其提交给 AD CS。复制 CSR 时,排除 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 行。


步骤 2:从被控主机向 AD CS RPC 端点提交 CSR

从这里下载 ASPX 代码: https://github.com/incredibleindishell/Certi-Bhai/blob/main/IIS_Privilege_escalation/cert.aspx

将 ASPX 代码上传到被控服务器,然后通过 HTTP/S 访问它,我们会看到如下界面:

  1. CA Server Name:在此输入框中指定 AD CS 地址。在我的环境中,它是 winbox2.queen.indishell.lab\queen-WINBOX2-CA
  2. Template Name:输入默认的计算机账户证书模板名称,即 Machine
  3. CSR Text area:将上一步中复制的 CSR 的 base64 编码内容粘贴到此文本框中

当请求到达 AD CS RPC 端点的那一刻,Windows 会将身份转换为 WEBSERVER$(计算机账户)。AD CS 看到一个合法的计算机账户使用默认的 Machine 模板请求证书,于是就颁发了证书


步骤 3:获取颁发的证书

当我们使用 ASPX 代码提交 CSR 时,AD CS 将颁发证书并将其作为对提交的 CSR 的响应返回。

从输出中,复制这个 base64 编码的已颁发证书,并将其粘贴到攻击者机器上的一个文件中(我们在步骤 1 中保存了 CSR 的私钥):

在我的环境中,我将颁发的证书保存在一个文件中,并将其命名为 machine_cert.cer。请注意,内容应粘贴在 -----BEGIN CERTIFICATE----- 和 -----END CERTIFICATE----- 行之间(参考上面的截图):


步骤 4:将颁发的证书与私钥合并以创建 PFX

在攻击者机器上,将颁发的证书文件和私钥文件保存在同一个目录中。

要通过将颁发的证书(machine_cert.cer)与私钥(machine_cert.key)合并来创建 PFX 文件,请使用 certutil 命令,如下所示:

C:\b0x> certutil -MergePFX machine_cert.cer machine_cert.pfx

执行上述命令后,我们需要为 PFX 文件设置一个密码(在我的环境中是 b0x@22)。

现在,我们有了一个名为 machine_cert.pfx 的 PFX 证书,它属于计算机账户 WEBSERVER$


步骤 5:使用 Rubeus 请求计算机账户 TGT

要为计算机账户 WEBSERVER$ 请求 TGT,请在攻击者机器上使用 Rubeus 工具,通过新创建的 PFX 向 KDC 进行身份验证:

C:\b0x> Rubeus.exe asktgt /user:hostname$ /domain:domain_name /certificate:machine_cert.pfx /password:password_of_the_cert /nowrap

请求的 TGT 将属于被控 IIS 主机的计算机账户。

在我的环境中,主机名是 WEBSERVER$,PFX 的密码是 b0x@22,域名是 queen.indishell.lab,所以命令是:

C:\b0x> Rubeus.exe asktgt /user:WEBSERVER$ /domain:queen.indishell.lab /certificate:machine_cert.pfx /password:b0x@22 /nowrap

截图显示,使用 Rubeus 工具为计算机账户 WEBSERVER$ 请求了 TGT(命令提示符 1)。截图中的第二个命令提示符显示,请求的 TGT 未注入当前主机,并且可以对目标主机 WEBSERVER$ 进行 SMB 访问。


步骤 6:请求 CIFS TGS 并模拟管理员

有了请求到的计算机账户 TGT,使用 S4U2self 技术请求 CIFS 服务票据,同时模拟默认的域管理员账户。我们将在攻击者机器上使用 Rubeus 工具执行此步骤。

命令语法如下:

C:\b0x> Rubeus.exe s4u /self /impersonateuser:Administrator /altservice:cifs/machine_hostname.domain_name /nowrap /ptt /ticket:base64_encoded_machine_account_TGT

在我的环境中,命令是:

C:\b0x> Rubeus.exe s4u /self /impersonateuser:Administrator /altservice:cifs/WEBSERVER.queen.indishell.lab /nowrap /ptt /ticket:base64_encoded_machine_account_TGT

如果一切顺利,我们将从 KDC 获得一个 CIFS TGS,并将其注入当前主机(攻击者机器)。

运行以下命令以确认 CIFS TGS 已注入当前主机:

C:\b0x> klist

命令输出显示 CIFS TGS 已注入我们的当前主机。

由于我们拥有 [email protected] 用户的 CIFS TGS,我们可以在目标主机 WEBSERVER$ 上以 Administrator 身份完全访问本地文件系统

现在,我们甚至可以使用 impacket 工具 secretsdump,通过请求到的 CIFS TGS 从 WEBSERVER$ 主机转储 NTLM 哈希。

这里是攻击链的视频演示:

已关注

关注

重播 分享 赞

关闭

观看更多

更多

退出全屏

切换到竖屏全屏退出全屏

潇湘信安已关注

分享视频

,时长02:23

0/0

00:00/02:23

切换到横屏模式

继续播放

[ ]

进度条,百分之0

播放

00:00

/

02:23

02:23

倍速

全屏

倍速播放中

0.5倍0.75倍1.0倍1.5倍2.0倍

超清流畅

 您的浏览器不支持 video 标签

继续观看

无需Potato!利用AD CS RPC将IIS权限直达SYSTEM

观看更多

转载

,

无需Potato!利用AD CS RPC将IIS权限直达SYSTEM

潇湘信安已关注

分享点赞在看

已同步到看一看写下你的评论

视频详情

关注我们

 还在等什么?赶紧点击下方名片开始学习吧 


知 识 星 球

星球已过800人,暂不再发放优惠券,如还有需要的师傅可加我VX:S_3had0w,等你一起来学习…!

| Ima知识库名称 | 加入条件 | | — | — | | 潇湘信安协同知识库(更新~ing!) | 限时免费 | | 潇湘信安学习资料库(更新~ing!) | ≥3年粉丝 | | 潇湘信安内部知识库(更新~ing!) | 星球成员 |

| | | | — | — | | | |


推 荐 阅 读



免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:潇湘信安 mannulinux mannulinux《无需Potato!利用AD CS RPC将IIS权限直达SYSTEM》

评论:0   参与:  0