.NET代码审计之MVC权限绕过漏洞

AuthorizeAttribute是asp.net MVC的几大过滤器之一,俗称认证和授权过滤器,也就是判断登录与否,授权与否。当为某一个Controller或Action附加该特性时,没有登录或授权的账户是不能访问这些Controller或Action的,笔者在 Controller上添加了自定义的[MyAuthorize()]特性,如下图.
.NET代码审计之MVC权限绕过漏洞
控制器下方没有注明[AllowAnonymous]特性的Action均无法直接访问,必须要登录,例如访问/Home/About页面跳转至登录口需要核实身份信息

.NET代码审计之MVC权限绕过漏洞

AllowAnonymous

MVC提供了AllowAnonymousAttribute表示在授权期间跳过AuthorizeAttribute的控制器和操作,具体审计时关注Controller或者Action上方是否有[AllowAnonymous],有的话表示当前控制器或方法可以被匿名用户访问,也就是我们常见的未授权访问漏洞,如下代码

[AllowAnonymous]public ActionResult FindData(int id) {   return Content("this id eq " + id);}

URL访问FindData方法可直接通过URL请求到内容,所以在代码审计时要格外注意[AllowAnonymous]这个特性

.NET代码审计之MVC权限绕过漏洞