在.NET代码审计和红队打点中,经常会遇到一种“奇怪”的行为现象:某些 .NET 应用的接口原本需要身份认证,但只需在 .aspx
或 .ashx
等后缀后随手加一个 /
,就能悄无声息地绕过所有认证逻辑,成功访问敏感接口。这个看似偶然的现象,背后其实隐藏着 ASP.NET 请求处理机制与逻辑结合所带来的路径变形认证绕过漏洞。
一次群友私聊我,说在测试目标系统时发现 xxxAction.ashx/do.asmx
等接口有时候可以绕过身份认证直接调用敏感功能,而有时候又不行。他百思不得其解,不清楚这是什么机制导致的。
我们以一个典型 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只是从代码角度简要解析了此类绕过的产生机制及利用路径构造的基本思路,但不是最核心的原因,还有其他的场景触发漏洞。
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...