本文通过 Google 翻译 SeImpersonatePrivilege – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部门表达别扭的字词进行了校正及个别注释补充。导航
授权位置:本地安全策略(secpol.msc)-本地策略-用户权限分配-身份验证后模拟客户端。】一个已启用 SeImpersonate 特权的账户在完成身份验证后,就能够模拟别的也已通过身份验证的账户,如账户A。如果被模拟的账户A 没有完成身份验证,那么体系中(LSASS 进程里的登录会话)便不会存留它的令牌信息,此时便不能够满足 SeImpersonate 特权模拟账户身份的条件,此时模拟账户身份的动作也会失败,体系也会拒绝模拟请求。
账户登录或通过身份验证之后,体系便会为其生成一个身份验证令牌,该令牌会一直存在,直到体系重启。了解了这种特权能让我们做什么之后,作为攻击者,我们得思考:“当 SeImperonsate 特权启用时,要冒充管理员账户还需要哪些条件?”
对于 IIS 的较旧版本(IIS 6之前的版本),我们将选择 ASP 类型的利用文件。为了制作恶意的 ASPX 文件,我们将利用 msfvenom 工具进行。
从 nmap 扫描结果来看,目标运行着 IIS 10 ,被认定为 Windows 10 build 17134 。不过,这大概并非百分之百准确,但起码让我们知道了目标的大致情况;关键的是,这表明该体系较为现代,很大概是 x64 架构。鉴于此,我们起首制作基于 x64 位架构的恶意 ASPX 利用文件,要是不行,我们再测试 x32 位架构的恶意 ASPX 利用文件。
在这个示例中,我决定让反向 shell 利用 80 端口。您通常会看到我利用 443/80/445/21 端口,这是因为这些端口通常能够通过防火墙实现出站访问。倘若我们利用像“4444”这样的任意端口,则很大概会被防火墙阻拦,进而错误地认为漏洞利用没有结果。利用文件现在已经准备就绪,接下来,我们只需要在端口 80 上启动 netcat 侦听器,然后返回我们的 FTP 会话,利用 put 下令将恶意 ASPX 文件上传到 Web 服务器。
服务账户和提拔账户默认都会同时拥有 SeImpersonatePrivilege 和 SeAssignPrimaryTokenPrivilge 这两项特权。需要指出的是,这两项特权均可实用下面所提到的三种攻击。但比起只有 SeAssignPrimaryTokenPrivilge 却没有 SeImpersonatePrivilege 的情况,没有 SeAssignPrimaryTokenPrivilge 但有 SeImpersonatePrivilege 的情况更为多见。而且,SeImpersonatePrivilege 是默认启用的,因此,在这两项特权中,我们通常会重点关注 SeImpersonatePrivilege 特权。2、利用 JuicyPotato 模拟本地 SYSTEM 帐户
如果您对此攻击的工作原理细节感兴趣,可在此处检察更多。受此漏洞影响的 Windows OS 包括:
从此处可以获取 JuicyPotato.exe 的 64 位可实行文件,如果您需要 32 位的可实行文件,则可以在此处获取。现在,既然我们拥有了 JuicyPotato 在两种架构下的可实行文件,接下来我们便需要确定受害者机器上运行的OS版本:
注:JuicyPotato.exe 参数中的 -l 443 是指 COM 服务监听的端口,443可以是任意值。
下令中未出现的默认参数 -n 135 是 RPC 服务的端口,关于 RPC 服务和 COM 服务之间的关系目前还不太明确,有待研究。
请注意 CLSID 周围的双引号,下令需要这些引号,否则将无法实行。2.3、滥用 SeimpersonatePrivilege 特权:Metasploit 模块
在 MeterPreter 会话中,下令 getprivs 可以帮助我们检察当前账户的特权信息,和在cmd.exe 中的 whoami /priv 下令是一样的结果。在 Metasploit 中有两个 Potato 攻击模块,可以利用以下下令找到:
注:Windows Server 各版本的发布与相应的 Windows 客户端版本是相互关联的。每一代 Windows Server 版本通常是基于某个特定的 Windows 客户端版本进行开发的,虽然它们在功能上有所不同,但底层架构和技能大体同等。以下是 Server 各版本与 客户端版本的对应:微软实施的变更会对攻击者假冒的服务需要建立 COM 连接的能力产生影响,因为现在连接仅被允许在 TCP 端口 135 上进行。这意味着攻击者无法再以 SYSTEM 身份对其假冒的 RPC 服务进行认证来创建可被模拟的令牌,从而让 JuicyPotato 失效。
- Windows Server 2003 基于 Windows XP
- Windows Server 2008 基于 Windows Vista
- Windows Server 2008 R2 基于 Windows 7
- Windows Server 2012 基于 Windows 8
- Windows Server 2012 R2 基于 Windows 8.1
- Windows Server 2016 基于 Windows 10(1607 版本)
- Windows Server 2019 基于 Windows 10(1809 版本)
- Windows Server 2022 基于 Windows 10(21H1 版本)
Windows Server 2016 从版本 1607 开始
如果想全面了解该漏洞的工作原理,可在此处检察干系介绍。3.1、滥用 SeimpersonatePrivilege 特权:PrintSpoofer.exe
从此处检察 printspoofer.exe 的64位和32位版本的副本。将漏洞利用下载到受害者机器上后,我们可以实行以下下令直接进入 SYSTEM shell:
我们该如何办理这个题目?- 我不建议从互联网上下载这个 DLL,因为据我所知,你无法直接从微软下载它。相反,如果你还没有将 Visual Studio 下载到实验室机器上,那就先下载到实验室机器上,然后再将 DLL 复制到你的攻击机器上。将 vcruntime140.dll 的副本传输到我们的攻击者机器后,我们可以将其下载到受害者机器上。
要充分了解 RoguePoto 的工作原理,请检察此处。RoguePotato 采取了与原始 Potato 攻击类似的技能,但对攻击方式进行了修改,以适应从 1809 版本开始对 Windows 10/Server 2019 利用体系进行的更新。因此,根据我个人的经验,这个漏洞只实用于发生变化后的 Windows 版本(1809+)。
请注意,上述下令中的 IP 地点是受害者机器的 IP。我们需要获取 roguepotato.exe 的副本,然后将其发送给受害者,然后开始利用此漏洞。
可以在此处找到 roguepotato.exe 的副本。由于其工作原理与 JuicyPotato 相似,都是需要以 SYSTEM 的身份去实行某些利用。在本例中,我们不再像利用 JuicyPotato 时那样再次弹出恶意 shell.exe 文件,而是通过 netcat 去利用这一漏洞而获得反向 shell。
注意:上面下令中的 IP 是攻击机的 IP,-l 9999 是本地 RogueOxidResolver 解析服务,对应上述 socat 下令中连接端口。
注意:上面的 present (至今)是作者写这篇文章的时间,即 2022年6月,现在是否还有结果需要实验测试。
欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |