ASP.NET是一套由Microsoft分发的帮助开发者构建基于WEB的应用的系统。 ASP.NET在对URL请求进行规范化处理时存在一个安全问题,远程攻击者可以利用这个漏洞发送特殊请求给ASP.NET应用程序,绕过授权配置,访问受保护的资源。 所谓规范化是将一个名称的各种等效形式解析为单个标准名称的过程。例如, 将\"c:\test\test.txt\"、\"test\test.txt\"、\"..\test.txt\"统一转换为物理路径\"c:\test\test.txt\"。当 Web 服务器收到 URL 后,该服务器需要将请求映射到一个确定响应的文件系统路径,这时就会调用规范化例程进行处理。 当试图访问某个受保护的资源时,ASP.NET会检查web.config看是否该资源需要授权。如果找到匹配项,则启动相应的认证机制,如FORM认证或者Windows认证。如果找不到匹配项,则继续检查上级应用的web.config中的授权部分,直至machine.config, 缺省情况下machine.config授权任意用户访问任意资源。 ASP.NET在进行规范化处理时存在问题,导致攻击者如果提供文件名的另外一种表示方法,就可以绕过限制。例如,\'\'/secret/secret.aspx\'\'是一个需要授权才能访问的资源, 攻击者可以用\'\'/secret\secret.aspx\'\'来进行访问。当ASP.NET将这个文件名在web.config中进行检查时,就找不到匹配项,从而最终授权用户无需进行认证即可访问此资源。而实际上\'\'/secret/secret.aspx\'\'和\'\'/secret\secret.aspx\'\'对应的是同一个资源,只是表示方法不同。有效的利用这个漏洞将允许攻击者访问任意需要授权的资源。
ASP.NET是一套由Microsoft分发的帮助开发者构建基于WEB的应用的系统。 ASP.NET在对URL请求进行规范化处理时存在一个安全问题,远程攻击者可以利用这个漏洞发送特殊请求给ASP.NET应用程序,绕过授权配置,访问受保护的资源。 所谓规范化是将一个名称的各种等效形式解析为单个标准名称的过程。例如, 将\"c:\test\test.txt\"、\"test\test.txt\"、\"..\test.txt\"统一转换为物理路径\"c:\test\test.txt\"。当 Web 服务器收到 URL 后,该服务器需要将请求映射到一个确定响应的文件系统路径,这时就会调用规范化例程进行处理。 当试图访问某个受保护的资源时,ASP.NET会检查web.config看是否该资源需要授权。如果找到匹配项,则启动相应的认证机制,如FORM认证或者Windows认证。如果找不到匹配项,则继续检查上级应用的web.config中的授权部分,直至machine.config, 缺省情况下machine.config授权任意用户访问任意资源。 ASP.NET在进行规范化处理时存在问题,导致攻击者如果提供文件名的另外一种表示方法,就可以绕过限制。例如,\'\'/secret/secret.aspx\'\'是一个需要授权才能访问的资源, 攻击者可以用\'\'/secret\secret.aspx\'\'来进行访问。当ASP.NET将这个文件名在web.config中进行检查时,就找不到匹配项,从而最终授权用户无需进行认证即可访问此资源。而实际上\'\'/secret/secret.aspx\'\'和\'\'/secret\secret.aspx\'\'对应的是同一个资源,只是表示方法不同。有效的利用这个漏洞将允许攻击者访问任意需要授权的资源。