渗透测试 | ViewState反序列化漏洞详解
💡
原文中文,约3700字,阅读约需9分钟。
📝
内容提要
本文介绍了ASP.NET中的ViewState机制及其反序列化漏洞。ViewState用于保持页面状态,通过将控件状态序列化为字符串并嵌入页面。为防止信息泄露,ASP.NET引入了加密和签名机制,配置选项包括启用ViewState、ViewState Mac和加密模式,以增强安全性。
🎯
关键要点
- ViewState是ASP.NET框架用来保持页面状态的机制。
- ViewState通过将控件状态序列化为字符串并嵌入页面来存储状态。
- ViewState的原始状态是一个字典类型,包含控件的状态信息。
- ViewState数据以Base64编码格式存储在名为__VIEWSTATE的隐藏字段中。
- ASP.NET引入了加密和签名机制以防止信息泄露和篡改。
- ViewStateEncryptionMode属性用于启用ViewState的加密,选项包括Always、Never和Auto。
- EnableViewStateMac属性用于启用ViewState的校验功能,确保数据完整性。
- 从.NET 4.5.2开始,ViewState Mac功能被强制启用。
- ASP.NET的web.config文件用于配置ViewState的相关选项。
- 即使在web.config中禁用enableViewState,ASP.NET服务器仍会被动解析ViewState。
➡️