文章总结: 本文介绍一种无需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 技术模拟管理员来提升权限。让我们开始吧
攻击链
以下是完整攻击链概览:
- 在攻击者控制的 Windows 机器上生成 CSR
- 在被控 IIS 主机上运行 ASPX 代码,向 AD CS RPC 端点提交 CSR(以计算机账户身份)
- AD CS 为计算机账户颁发证书
- 在攻击者机器上将颁发的证书与私钥合并,生成 PFX 文件
- 使用 Rubeus 工具通过 PFX 请求计算机账户 TGT
- 使用计算机账户 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 访问它,我们会看到如下界面:
- CA Server Name:在此输入框中指定 AD CS 地址。在我的环境中,它是
winbox2.queen.indishell.lab\queen-WINBOX2-CA - Template Name:输入默认的计算机账户证书模板名称,即
Machine - 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倍
超清流畅
继续观看
无需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》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论