mcpField
H
hunt-aspnet

hunt-aspnet

github.com/uphiago安全1.3k40 次安装8 周前更新
代码仓库

关于 hunt-aspnet

hunt-aspnet 是面向漏洞赏金研究人员和渗透测试人员的 ASP.NET 安全评估技能,提供结构化流程,用于检查反序列化风险、暴露的诊断端点、遗留服务等问题。

主要功能

  1. 01ASP.NET 指纹识别与版本检查
  2. 02ViewState 反序列化评估
  3. 03诊断端点暴露检查
  4. 04WCF 与 Telerik 攻击面枚举
  5. 05请求验证器绕过测试
  6. 06注重误报控制的验证步骤

适用场景

  1. 01评估 WebForms 的 ViewState 处理
  2. 02检查 trace.axd 与 elmah.axd 是否暴露
  3. 03枚举 WCF 服务元数据
  4. 04审查 Telerik 与 SharePoint 攻击面

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/uphiago/recon-skills --skill hunt-aspnet

安装后在 Claude Code 中输入/hunt-aspnet确认已加载。

详细介绍

高价值目标

ASP.NET 反序列化漏洞一旦导致 RCE,通常能获得最高额的漏洞赏金。即使漏洞已修补,披露级别的发现(仅签名的 ViewState、双解析器差异、请求验证器异常)也能稳定获得低至中等奖励。

价值最高的目标:

  • SharePoint 场(任何版本——2013/2016/2019/SE)——仅签名的 ViewState + 宽松的 ToolPane.aspx + 匿名 FormDigest,构成 CVE-2025-53770 ToolShell 的前置条件链
  • Telerik UI for ASP.NET AJAX——当密钥泄露时,Telerik.Web.UI.WebResource.axd 是有记录的 RCE 接收端(CVE-2017-11317、CVE-2017-11357、CVE-2019-18935)
  • 传统 ASP.NET Webforms 企业应用——仍使用 .NET Framework 4.x 的银行门户、经销商门户、人力资源系统
  • WCF 服务(*.svc?WSDL)——常被遗忘的管理端点,其身份验证通常比主应用宽松
  • Sitecore CMS——ViewState + Sitecore 专属反序列化链(CVE-2021-42237)
  • DotNetNuke (DNN)——历史上的 ViewState RCE 利用链
  • Umbraco CMS——ViewState + 自定义反序列化接收端

**最有价值的资产类型:**可从互联网访问的 ASP.NET Webforms 应用 > WCF 管理服务 > 集成 Telerik 的网站 > 使用 VSF 的传统 ASP.NET MVC(极少见)


攻击面信号

表明使用 ASP.NET 的响应标头:

X-AspNet-Version: 4.0.30319          (classic — disclosure on its own)
X-Powered-By: ASP.NET
X-AspNetMvc-Version: 5.2
Server: Microsoft-IIS/10.0
Set-Cookie: ASP.NET_SessionId=...
Set-Cookie: .ASPXAUTH=...            (Forms auth cookie)
Set-Cookie: .ASPXFORMSAUTH=...
Set-Cookie: ASP.NET_SessionId=...; SameSite=None  (suggests cross-origin embedding)

正文信号(表单 HTML 中):

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="..." />
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="..." />
<input type="hidden" name="__VIEWSTATEENCRYPTED" id="__VIEWSTATEENCRYPTED" value="" />
                                        ↑ EMPTY = signed-only, not encrypted = exploitable if key leaks
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="..." />
<input type="hidden" name="__REQUESTDIGEST" id="__REQUESTDIGEST" value="0x...,...">
                                        ↑ SharePoint CSRF token; if anon-issued, see hunt-sharepoint

待探测的 URL 模式:

/trace.axd                            (per-app trace viewer; sometimes anon-accessible)
/elmah.axd                            (ELMAH error log viewer)
/elmah.axd/?id=...                    (ELMAH RCE / stack-trace leak)
/*.svc                                (WCF services)
/*.svc?wsdl                           (WCF WSDL)
/*.svc/mex                            (Metadata Exchange)
/*.asmx                               (legacy SOAP)
/*.asmx?WSDL                          (legacy SOAP description)
/*.asmx?disco                         (legacy discovery)
/Telerik.Web.UI.WebResource.axd       (Telerik AJAX components)
/ChartImg.axd                         (DataVisualization controls; historic deserialization)
/ScriptResource.axd                   (script resource handler; sometimes leaks paths)
/WebResource.axd                      (web resource handler)
/_vti_bin/*                           (SharePoint Web Service Forwarder)
/api/                                 (Web API 2.x is ASP.NET on classic framework)
/signin                               (often FedAuth / WS-Federation)

技术栈信号:

  • Server: Microsoft-IIS/10.0(或 /8.5、/7.5)——已确认使用 Windows + IIS
  • X-AspNet-Version 标头——传统 .NET Framework (4.x);.NET Core/5+ 不会发出此标头
  • 包含 ASP.NET_SessionId、.ASPXAUTH、FedAuth 的 Cookie——Forms 或声明身份验证
  • 表单正文中的 __VIEWSTATE——Webforms(不是 MVC、不是 Razor Pages、不是 Blazor)
  • MicrosoftSharePointTeamServices 标头(有时会被 ELB 移除,但会泄露在 start.aspx 正文中)——SharePoint

分步漏洞挖掘方法

  1. **识别框架版本。**触发任意 500 错误(过期的 ViewState POST 是可靠的方法),并在错误正文中查找 Version Information: Microsoft .NET Framework Version:X.X.XXXXX; ASP.NET Version:X.X.XXXX.X。此横幅会披露运行时和 ASP.NET 版本特定的补丁级别。.NET 4.0.30319 + ASP.NET 4.8.x 是最常见的现代组合。

  2. **定位每个包含 __VIEWSTATE 的表单。**爬取目标并搜索 name="__VIEWSTATE"。如果可以绕过 MAC / 加密,每个表单都是反序列化攻击的潜在接收端。

  3. **检查 __VIEWSTATEENCRYPTED 的值。**空值(value="")表示 ViewState 仅通过 <machineKey> 签名,但未加密。恢复验证密钥即可实现任意反序列化。非空值(value="something")表示 ViewState 同时经过签名和加密;伪造需要两种密钥。

  4. 测试 ViewState 解析器错误差异(双解析器反模式)。发送 7 种以上的 ViewState 形态并对响应分类:

    • 无意义数据(AAAA)→ "Validation of viewstate MAC failed"
    • 当前页面的真实前缀 → "Validation of viewstate MAC failed"
    • 翻转位后的真实 ViewState → "Validation of viewstate MAC failed"
    • 超大数据(A * 100000)→ "Validation of viewstate MAC failed"
    • XML 形态(<xss/>)→ "The state information is invalid for this page and might be corrupted" ← 不同的解析器路径
    • LosFormatter 风格前缀(/wEPDwUKMTcxNzgyOTQwMmRkkz9p4lzA...)→ "The state information is invalid for this page and might be corrupted"

    这种差异证明存在两个不同的反序列化入口,其中一个会在某些负载形态下于 MAC 检查之前进行分派。从历史上看,这使 MAC-before-parse 绕过利用成为可能。

  5. 查找负载均衡导致的跨节点 ViewState MAC 失败。 如果 POST 请求返回 500,并显示 "Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey...",说明服务器场中有多个 WFE,但未同步 machineKey,或未启用会话亲和性。从运维角度看,这会影响正常用户;从安全角度看,这证实了服务器场的拓扑结构。

  6. 探测 trace.axd 和 elmah.axd。 如果其中任一端点可匿名访问并返回 200,即为严重发现(trace 会泄露每个请求及其标头和表单数据;ELMAH 会泄露每个服务器错误,包括堆栈跟踪)。

  7. 枚举 WCF 服务(.svc)。 对每个服务,获取 ?wsdl 和 ?mex(元数据交换)。MEX 端点有时会返回包含管理操作的完整服务契约。

  8. 测试请求验证器绕过。 ASP.NET 的请求验证器默认会阻止查询字符串中的 <。仍可能奏效的绕过类型:

    • HTML 实体编码的载荷(&lt;script&gt;——但这些不会执行)
    • 在 JSON / XML POST 请求体中编码(不同的内容类型 ≠ 相同的验证器)
    • 位于路径段中(而非查询字符串)——验证器的作用范围取决于框架版本
    • 位于 Cookie / Referer 标头中(因情况而异)
    • 若通过 WebDAV PUT 访问,则位于 <%@ ... %> ASP 指令中(罕见)
  9. 检查 customErrors 模式。 如果 500 错误暴露了完整堆栈跟踪、框架版本、文件路径和内部方法名,则说明已设置 customErrors mode="Off"。生产环境应设为 RemoteOnly。

  10. 查找 Telerik 组件。 Telerik.Web.UI.WebResource.axd?type=rau 是历史上的上传到 RCE 攻击链(CVE-2017-11317)。dialogParametersHolder 参数攻击链(CVE-2019-18935)需要加密密钥,但除此之外可实现 RCE。

  11. SharePoint 专属反序列化路径——参见 hunt-sharepoint 技能,了解 ToolPane.aspx + 匿名 FormDigest + 未加密 ViewState 攻击链。

  12. 通过反射枚举 SafeControl。 SharePoint 的 Picker.aspx?PickerDialogType=<TypeName>(以及 DNN 等效端点)接受类名,并会针对“类型存在但未列入白名单”和“类型不存在”返回不同的错误消息。输入 Microsoft.SharePoint.*.WebControls.* 类型的字典,以枚举 SafeControl 列表——这对排查 CVE-2019-0604 系列漏洞很有用。


载荷与检测模式

堆栈跟踪指纹(通过过期的 ViewState POST 触发):

curl --max-time 30 --connect-timeout 10 -sk -X POST "https://target.example/page.aspx" \
  --data "__VIEWSTATE=AAAA&__VIEWSTATEGENERATOR=AAAA"
# Inspect body for:
#  - "Validation of viewstate MAC failed" → confirms signed ViewState
#  - "The state information is invalid for this page" → confirms ALTERNATE parser path
#  - "Version Information: Microsoft .NET Framework Version:X.X.XXXXX" → exact patch level
#  - "Microsoft.SharePoint.Client.ServerStub..." → SharePoint farm

ViewState 解析器错误差异探测(Python):

import requests, re, json
S = requests.Session(); S.verify = False
# Get fresh form
r = S.get("https://target.example/path/page.aspx")
real_vs = re.search(r'__VIEWSTATE" id="__VIEWSTATE" value="([^"]+)', r.text).group(1)
real_vsg = re.search(r'__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="([^"]+)', r.text).group(1)

# Test 7 payload shapes
for label, vs in [
    ("trivial",      "AAAA"),
    ("real",         real_vs),
    ("flipped-bit",  real_vs[:50] + "X" + real_vs[51:]),
    ("oversize",     "A" * 100000),
    ("base64",       "VGVzdE1hcmtlcjY3OFhZWg=="),
    ("xml-shaped",   "<xss/>"),
    ("losformatter", "/wEPDwUKMTcxNzgyOTQwMmRkkz9p4lzA" + "A"*50),
]:
    r = S.post("https://target.example/path/page.aspx",
               data={"__VIEWSTATE": vs, "__VIEWSTATEGENERATOR": real_vsg})
    title = re.search(r'<title>([^<]+)</title>', r.text)
    title = title.group(1)[:100] if title else "—"
    print(f"  [{label:14s}] {r.status_code}  {title}")

匿名检查 trace.axd:

curl --max-time 30 --connect-timeout 10 -sk -o /dev/null -w "%{http_code}\n" "https://target.example/trace.axd"
# 200 = full trace dump exposed → Critical
# 403 = mod set to localhost-only → check via X-Forwarded-For: 127.0.0.1

WCF 服务枚举:

# Find all .svc files
curl --max-time 30 --connect-timeout 10 -sk "https://target.example/" -o body.html
grep -oE '/[a-zA-Z0-9/_-]+\.svc' body.html | sort -u
# For each found:
curl --max-time 30 --connect-timeout 10 -sk "https://target.example/Service.svc?wsdl" | xmllint --format - | head -60

请求验证器绕过类型:

# Default: <script>alert(1)</script> in ?q= → "Potentially dangerous Request.QueryString value detected"
# Bypasses that sometimes work:
?q=%3cscript%3e            (URL-encoded — depends on validator config)
?q=<svg/onload=alert(1)>  (depends on validator version)
?q=<%00script>             (NUL-byte; older validators)
?q=javascript:alert(1)     (no < at all — passes validator)
Cookie: foo=<script>       (cookie body not validated by default)
Referer: http://x.com/<script>  (referer not validated in classic ASP.NET)

Telerik 漏洞利用门槛(CVE-2019-18935——需要加密密钥):

# Fingerprint Telerik
curl --max-time 30 --connect-timeout 10 -sk "https://target.example/Telerik.Web.UI.WebResource.axd?type=rau" -X POST
# If response is RadAsyncUploadHandler-style → Telerik present; try keys
# Public exploits require leaked machineKey AND telerikEncryptionKey

常见根本原因

  1. 在没有敏感 ViewState 数据的页面上,viewStateEncryption="Auto" 默认仅使用签名。 许多 SharePoint 页面都采用这种配置。当 __VIEWSTATEENCRYPTED 为空时,ViewState 仅使用签名——仅恢复 validationKey 就足以伪造数据。

  2. Web 场中的 <machineKey> 使用 AutoGenerate。 每台 WFE 首次启动时都会生成不同的密钥;一台 WFE 签发的 ViewState 在另一台上无法通过 MAC 验证。运维层面会产生 500 错误;安全层面则会泄露拓扑信息(错误消息会指出集群)。

  3. 开发阶段遗留了 <customErrors mode="Off">。 完整的方法名、文件路径和版本标识等堆栈跟踪信息会暴露给匿名互联网用户。

  4. 生产环境中仍启用了 trace.axd / elmah.axd。 <system.web><trace enabled="true"> 块中的设置常常会被遗忘。

  5. 遗忘了 WCF .svc 管理端点。 这些端点原本用于内部管理工具,主应用对外开放后却从未禁用。

  6. 双解析器反模式:ObjectStateFormatter(旧版)与 LosFormatter(新版)相对于 MAC 验证的反序列化顺序不同。 某些载荷会在 MAC 检查之前触发旧版解析器。

  7. 请求验证器只适用于 URL 编码的请求正文和查询字符串。 默认情况下,标头、Cookie、XML/JSON 请求正文和 multipart 字段都不会经过验证。开发者以为验证器适用于所有内容,但事实并非如此。

  8. 将 <machineKey> 提交到了源代码仓库。 配置文件提交到 GitHub 时经常会泄露验证密钥/解密密钥。结合使用 hunt-misc 进行源码侦察,可查找 Telerik / SharePoint / DNN 密钥。

  9. 认为 web.config 中的 SafeControls 条目可以控制反序列化。 SharePoint 的 <SafeControl> 列表决定了 Picker.aspx 可以实例化哪些类。如果继承检查是唯一的限制,则可能存在绕过方式(CVE-2019-0604 系列)。


绕过技术

防御措施绕过方式
__VIEWSTATEENCRYPTED 非空(已加密)从任何源代码泄露 / 配置泄露 / VS 伪造原语中恢复解密密钥和验证密钥;没有密钥就无法触发反序列化
请求验证器会拦截查询字符串中的 <将载荷移至 Cookie / Referer / JSON 请求正文 / multipart 文件名中——在经典 ASP.NET 中,验证器不会检查这些上下文
强制启用 EnableViewStateMac="true"从 web.config 泄露或 <machineKey> AutoGenerate 指纹识别中恢复 validationKey(ysoserial.net 的 --minify --islegacy 模式可以生成能够通过某些 MAC 验证缺口的 ViewState)
trace.axd 仅限 localhost 访问如果 trace 模式为 localOnly,且验证使用的是 Request.UserHostAddress,则设置 X-Forwarded-For: 127.0.0.1(有些应用会改用 Forwarded-For)
WCF .svc 匿名访问时返回 401先尝试 ?wsdl 和 ?mex;即使服务操作需要身份验证,有时仍可匿名枚举元数据
Telerik 上传功能已修补检查 Telerik 版本:2017Q1 之前的版本(build 2017.1.118 或更早版本)都存在原始 RAU RCE。检查 2017Q3 - 2019Q3 是否存在 CVE-2019-18935
强制执行 SafeControl 白名单在已修补的 SP 中,继承限制(instanceof PickerDialog)就是限制本身——要绕过就必须找到带有反序列化接收点的 SafeControl 子类;可通过 Picker.aspx 枚举
customErrors mode="On"(不显示堆栈跟踪)触发其他错误路径:使用无效的 Content-Length,或格式错误的 ViewState,以在 customErrors 处理程序下层触发解析器级异常

第 0 阶段验证

撰写报告前,请确认:

  1. 攻击者现在可以利用已披露的信息做什么?

    • trace.axd 返回 200,且包含完整请求转储 → 严重(PII / 会话 Cookie / Authorization 标头暴露)
    • elmah.axd 返回 200,且包含错误日志 → 高危(堆栈跟踪 + 内部路径 + 有时还包括凭据)
    • __VIEWSTATEENCRYPTED 为空 + 通过单独发现恢复出 machineKey → 可串联成导致 RCE 的严重漏洞
    • __VIEWSTATEENCRYPTED 为空,但无法恢复密钥 → 低危至中危(存在可利用原语,但单独无法利用)
    • 500 响应中包含堆栈跟踪 → 低危,除非其中包含凭据 / 连接字符串
  2. 你是否已复现从头到尾可造成攻击者可实现影响的完整攻击链,还是只确认了可利用原语?

    • 交叉参考 triage-validation 严重性判定门槛。“已确认可利用原语”并不意味着严重,除非攻击链最终造成实际影响。
  3. 分诊人员能否根据你的报告在 <10 min 内复现?

    • 每个步骤都应提供可复制粘贴的 curl / Python 命令。
    • 对于 RCE 攻击链:链接公开的漏洞利用工具链(ysoserial.net、viewgen、telerik-revda)以及具体的 gadget 链。

实际影响示例

场景 A — EoL SharePoint 2013 上仅签名的 ViewState + 宽松的 ToolPane

匿名访问 https://target-portal.example/_layouts/15/ToolPane.aspx?DisplayMode=Edit 时返回 200。表单包含 __VIEWSTATE(仅签名——__VIEWSTATEENCRYPTED=""),且匿名用户可通过 _api/contextinfo 获取 __REQUESTDIGEST。再加上 SP2013 已终止支持(今后不会再发布补丁),这构成了永久未修补代码路径上的 CVE-2025-53770“ToolShell”典型利用前提链。报告的严重性:严重。双解析器测试(方法论第 4 节)证实,XML 格式的载荷会在 MAC 验证之前到达旧版 ObjectStateFormatter ——这进一步证明,即使无法完全恢复 machineKey,攻击链仍可触达(不过完整 RCE 需要两者)。

场景 B — 传统银行门户暴露 Telerik RadAsyncUploadHandler

/Telerik.Web.UI.WebResource.axd?type=rau 返回 Telerik 上传处理程序。Telerik 版本(可从 JS bundle 元数据中看到)为 2016.3.1027。适用 CVE-2017-11317——该版本的密钥已写入公开的 Telerik DLL 中。上传 → 将 aspx 写入 /app_data/ → 发起请求 → RCE。报告的严重性:严重。

场景 C — 企业 HR 门户同时暴露 trace.axd 和 elmah.axd

trace.axd 返回 200,提供最近 50 个请求,其中 API 请求包含 Authorization: Bearer eyJ... 标头。elmah.axd 返回 200,提供完整错误日志,其中一个异常包含数据库连接字符串。报告的严重性:严重(匿名互联网用户可获取明文凭据)。


验证

运行此自测以确认 ASP.NET 漏洞搜寻就绪:

  1. ViewState 检测——确认能识别 __VIEWSTATE 模式:

    echo '<input type="hidden" name="__VIEWSTATE" value="dDwtMTc5MjU3NjY0Mzt0PDtsPGk8MT47PjtsPHQ8O2w8aTwxPjs+O2w8dDw7bDxpPDE+Oz47bDx0PDtsPGk8MT47PjtAPDEyMzQ1Njc4OTA7Pj47Oz47Pj47Pj47Pg==" />' | grep -q "__VIEWSTATE" && echo "PASS: ViewState pattern detected" || echo "FAIL"
    
  2. ViewState 加密检查——确认能区分加密与签名:

    echo '__VIEWSTATEENCRYPTED=""' | grep -q 'VIEWSTATEENCRYPTED=""' && echo "PASS: signed-only recognized" || echo "FAIL"
    
  3. trace.axd 探测语法——确认探测命令可正常工作:

    echo "trace.axd" | grep -q "trace.axd" && echo "PASS: trace.axd path syntax correct" || echo "FAIL"
    
  4. Telerik RAU 端点语法——确认 Telerik 处理程序路径:

    echo "/Telerik.Web.UI.WebResource.axd?type=rau" | grep -q "rau" && echo "PASS: Telerik RAU path syntax correct" || echo "FAIL"
    

全部 4 项测试用于验证 ASP.NET 攻击面检测能力。


易踩问题

  • 混淆了仅签名的 ViewState 与加密的 ViewState——__VIEWSTATEENCRYPTED="" 或该字段缺失,表示仅签名。这只是一个原语,并非 RCE。要实现完整的 RCE,必须恢复 machineKey。
  • ViewState MAC 验证发生在两个解析器中——这是双解析器反模式:旧版 ObjectStateFormatter 会在 LosFormatter 验证 MAC 之前进行解析。无论 MAC 是否有效,XML 形状的负载都会到达旧版解析器。两种情况都要测试。
  • 无需凭据即可收到 trace.axd 200 响应——纯堆栈跟踪顶多属于低危。只有当跟踪输出包含有效的 Authorization 标头、会话 Cookie 或连接字符串时,才属于严重级别。
  • elmah.axd 中有旧错误记录——数周前的错误记录若不包含有效凭据,仅供参考。报告严重级别前,请检查时间戳和内容。
  • 仓库中的 web.config 内含 MachineKey ≠ 线上密钥——已部署的服务器可能使用与仓库版本不同的 machineKey。报告前,先尝试伪造 ViewState 进行验证。
  • SharePoint ToolPane 可匿名访问,但需要 FormDigest——ToolPane 可访问只是前提,并非漏洞本身。需要完整攻击链:ToolPane + 匿名 FormDigest + 仅签名的 ViewState + machineKey。
  • JS 包中的 Telerik 版本 ≠ 可利用——JS 包版本是客户端库版本,不是服务器端 Telerik DLL 的版本。通过 WebResource.axd 响应标头验证服务器版本。
  • customErrors mode="On" 的处理——被 customErrors 隐藏的堆栈跟踪,仍可能通过处理程序层以下的解析器级异常泄露。测试格式错误的 Content-Length、超大的 ViewState 和编码错误。

相关技能与攻击链

  • hunt-rce——ViewState 反序列化是 ASP.NET 主要的 RCE 攻击路径;仅签名的 ViewState + 泄露的 machineKey = 必定实现 RCE。攻击链原语:检测到 ASP.NET ViewState 双解析器 MAC 绕过反模式(已签名但未加密,<%@ Page enableViewStateMac="true" viewStateEncryptionMode="Never" %>)+ 恢复 machineKey(通过 web.config 泄露、elmah.axd、源码泄露或 GitHub)→ 使用 hunt-rce 的 ysoserial.net TypeConfuseDelegate gadget → 以 w3wp.exe 工作进程的身份执行任意命令。
  • hunt-sharepoint——SharePoint 场会继承所有 ASP.NET 反模式,并有自身的攻击面。攻击链原语:ASP.NET 指纹识别发现 SharePoint(X-SharePoint 标头 + /_layouts/ 可访问)→ 转向 hunt-sharepoint,在尝试通用 ViewState 攻击前,先检查 SharePoint 特有的 RCE 路径(ToolShell、SafeControl 反射)。
  • hunt-ntlm-info——匿名通告 NTLM/Negotiate 的 IIS 站点会泄露 AD 拓扑。攻击链原语:IIS 后方的 ASP.NET 应用带有 WWW-Authenticate: NTLM → 使用 hunt-ntlm-info 捕获 Type-2 挑战 → 获取内部林名称 → 与 m365-entra-attack 发现的信息交叉关联 Entra 租户。
  • hunt-file-upload——Telerik RadAsyncUpload、Kentico、Umbraco 和 DotNetNuke 都曾出现过上传处理程序 RCE。攻击链原语:识别出 ASP.NET CMS → 使用 hunt-file-upload 的绕过矩阵攻击 CMS 上传处理程序 → 将 .aspx 文件写入 Web 可访问路径 → 发起请求 → 以应用程序池身份实现 RCE。
  • triage-validation——只有当 trace.axd/elmah.axd 确实泄露有效凭据或令牌时,泄露问题才属于严重级别;纯堆栈跟踪通常属于低危。攻击链原语:提交前,将每项已报告的发现都通过 triage-validation 的 7 问关卡进行审查——撰写报告(redteam-report-template)前,先区分“详细错误”(仅供参考)与“错误日志中的有效持有者令牌”(严重)。

评论

支持 Markdown