一种利用路径变形绕过权限校验的思路:那些容易被忽视的 .NET 漏洞触发点
一种利用路径变形绕过权限校验的思路:那些容易被忽视的 .NET 漏洞触发点
原创 专攻.NET安全的 dotNet安全矩阵 2025-04-25 00:36
在.NET代码审计和红队打点中,经常会遇到一种“奇怪”的行为现象:某些 .NET 应用的接口原本需要身份认证,但只需在 .aspx
或 .ashx
等后缀后随手加一个 /
,就能悄无声息地绕过所有认证逻辑,成功访问敏感接口。这个看似偶然的现象,背后其实隐藏着 ASP.NET 请求处理机制与逻辑结合所带来的路径变形认证绕过漏洞
。
01. 漏洞起因和背景
一次群友私聊我,说在测试目标系统时发现 xxxAction.ashx/do.asmx
等接口有时候可以绕过身份认证直接调用敏感功能,而有时候又不行。他百思不得其解,不清楚这是什么机制导致的。
而该接口原本要求登录访问,但以这种格式访问时竟然未登录也能直接成功调用。这类问题,并非新鲜事,而是 .NET 在处理请求路径时的一种特性配合代码实现上的漏洞。
02. 一个典型的场景
我们以一个典型 WebService 为例,你可能认为任何对 /do.asmx
的访问都
会走 Page_Load
做校验,但实际情况请求 /do.asmx/deleteUser
时,.NET 会跳过 Page_Load
,直接绑定并执行 WebMethod deleteUser,具体代码如下所示。
[WebService(Namespace ="http://tempuri.org/")]publicclassdo:System.Web.Services.WebService{[WebMethod]publicstringdeleteUser(string uid){return$"Deleted user {uid}";}protectedvoidPage_Load(object sender,EventArgs e){if(Session["admin"]==null){ Response.Redirect("login.aspx");return;}}}
.NET 框架在处理 .asmx/foo 形式的 URL 时,会默认将 /foo 映射为某个 WebMethod,并跳过页面级的身份认证逻辑。
上述demo只是从代码角度简要解析了此类绕过的产生机制及利用路径构造的基本思路,但不是最核心的原因,还有其他的场景触发漏洞。