用途
hunt-aspnet 是一个针对 ASP.NET 技术栈的漏洞挖掘技能,用于在授权安全测试中系统性地发现和验证 ASP.NET 特有的攻击面。其核心目标是 ViewState 反序列化、machineKey 恢复、双解析器 MAC 绕过等可导致远程代码执行(RCE)或信息泄露的问题。
主要能力
- ViewState 分析:识别
__VIEWSTATE、__VIEWSTATEGENERATOR、__VIEWSTATEENCRYPTED等隐藏字段,判断 ViewState 是仅签名还是同时加密。__VIEWSTATEENCRYPTED为空表示仅签名未加密,若验证密钥泄露即可伪造。 - 双解析器差异检测:通过发送多种 ViewState 载荷形态(垃圾数据、真实前缀、翻转位、超大、XML 形状、LosFormatter 前缀等),观察不同错误信息,证明存在两个反序列化入口,其中一个在某些载荷形态下先于 MAC 校验执行。
- machineKey 恢复线索:检测负载均衡环境下跨节点 ViewState MAC 失败,确认 Web 场拓扑;结合源码泄露、配置泄露等途径寻找验证/解密密钥。
- 端点探测:枚举
trace.axd、elmah.axd、*.svc、*.asmx、Telerik.Web.UI.WebResource.axd、ChartImg.axd、ScriptResource.axd、WebResource.axd、_vti_bin/*等路径。 - WCF 服务枚举:通过
?wsdl和?mex获取服务契约,寻找认证较松的管理端点。 - 请求验证器绕过:测试 HTML 实体编码、JSON/XML 请求体、路径段、Cookie/Referer 头等绕过方式。
- Telerik 组件检测:识别
Telerik.Web.UI.WebResource.axd?type=rau上传处理器,关联 CVE-2017-11317、CVE-2017-11357、CVE-2019-18935。 - CMS 特定链:覆盖 SharePoint(ToolPane.aspx + 匿名 FormDigest + 未加密 ViewState 的 ToolShell 前置链)、Sitecore(CVE-2021-42237)、DotNetNuke、Umbraco。
- SafeControl 枚举:通过
Picker.aspx?PickerDialogType=<TypeName>的不同错误信息枚举 SafeControl 列表,用于 CVE-2019-0604 家族挖掘。
使用方式
技能以方法论和可复制命令的形式给出。典型流程:
- 指纹识别:通过响应头(
X-AspNet-Version、X-Powered-By、Server: Microsoft-IIS/10.0、ASP.NET_SessionId、.ASPXAUTH等)和表单体中的__VIEWSTATE判断技术栈。 - 触发错误:用过期 ViewState POST 触发 500,从错误体读取 .NET Framework 与 ASP.NET 版本信息。
- 定位所有含
__VIEWSTATE的表单,检查__VIEWSTATEENCRYPTED是否为空。 - 运行双解析器差异探测:技能提供 Python 脚本,发送 7 种载荷形态并分类响应。
- 探测敏感端点:如
curl -sk -o /dev/null -w "%{http_code}\n" "https://target.example/trace.axd",200 表示完整跟踪转储暴露。 - 枚举 WCF 服务:抓取页面中的
.svc链接,逐个请求?wsdl和?mex。 - 测试请求验证器绕过:尝试 URL 编码、NUL 字节、无
<的javascript:、Cookie/Referer 注入等。 - Telerik 指纹与利用门槛:请求
Telerik.Web.UI.WebResource.axd?type=rau,若返回 RadAsyncUploadHandler 风格响应则存在 Telerik;公开利用需要泄露的 machineKey 和 telerikEncryptionKey。
适用场景
- 互联网可达的经典 ASP.NET Webforms 企业应用(银行门户、经销商门户、HR 系统,运行于 .NET Framework 4.x)。
- SharePoint 场(2013/2016/2019/SE)。
- 集成 Telerik UI for ASP.NET AJAX 的站点。
- WCF 服务(
*.svc?WSDL)等常被遗忘的管理端点。 - Sitecore、DotNetNuke、Umbraco 等 CMS。
限制
- 完整 RCE 通常需要同时恢复验证密钥与解密密钥;仅有原语(如未加密 ViewState)本身不构成可利用漏洞。
- Telerik 利用需要泄露的 machineKey 和 telerikEncryptionKey。
- 报告前需确认攻击者当前可实际达成的影响,并能在 10 分钟内复现完整链。
- 技能中提及的 CVE 编号、版本范围与利用工具(ysoserial.net、viewgen、telerik-revda)为资料原文,具体可用性取决于目标环境。
- 部分绕过技巧(如
X-Forwarded-For: 127.0.0.1)是否有效取决于应用实现。