代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)

在ASP.NET StartKit TimeTracker中由于程序设计上的小失误,我们可以利用这个BUG来达到越权访问aspx页面的能力.

我们都知道该系统定义了三种角色,分别为

Administrator(管理员)

Project Manager(项目管理者)

Consultant(顾问)

只有Administrator角色的用户才可以访问管理信息页面(ProjectList.aspx)

现在我来描述一下错误现象:

现在我有一个管理员的帐户ai_ai@126.com.

我们先用这个帐户登陆,去创建一个Consultant角色的帐户:ai_c@126.com

然后马上关闭浏览器.(注意我这里说的关闭是用MOUSE点击浏览器关闭按钮而不是用程序提供的注销按钮)

再打开浏览器进入登陆页,用帐户:ai_c@126.com登陆系统.

这时我们就可以利用顾问角色的帐户访问管理信息页面

http://localhost/TTWebCSVS_cn/ProjectList.aspx?index=2

这个BUG岂不是和系统角色访问权限相背.

现在让我们来找虫

我们可以看到该系统的登陆用户角色信息是存放在一个COOKIE中的.

数据存放前进行了加密,利用了类FormsAuthentication.Encrypt的静态方法.

该COOKIE的名称在Global中定义为一个常量:

public const string UserRoles = "userroles"

这就是BUG之一

现在我们再看Global中Application_AuthenticateRequest事件中另一段代码:

Response.Cookies[UserRoles].Value = cookieStr;

Response.Cookies[UserRoles].Path = "/";

Response.Cookies[UserRoles].Expires = DateTime.Now.AddMinutes(1);

从以上我们可以得知,该COOKIE的有效时间是一分钟.

这样我们在前一登陆帐户关闭后,一分钟内马上利用另一帐户登陆,这样后面的帐户可以取到前一帐户的角色信息.

因为2个登陆帐户用的是同一个叫userroles的COOKIE

这又是BUG之一

时间: 2024-10-30 00:55:51

代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)的相关文章

代码阅读总结之ASP.NET StartKit TimeTracker(应用程序路径之处理笔记)

在开发中我们为了整个程序目录结构清晰化,望望会建立许多不同的文件目录. 例如结构如下: |root |pic |web |usercontrol 在web目录中,我们怎么取到pic目录中的图片路径呢? 方法1: 让我们先看看ASP.NET StartKit TimeTracker的解决方案: ASP.NET StartKit TimeTracker的类Global中定义了一个公有方法: public static string GetApplicationPath(HttpRequest req

代码阅读总结之ASP.NET StartKit TimeTracker

自定义集合类排序(Sort())方法随笔 ASP.NET StartKit TimeTracker中定义了很多自定义集合类 例如: UsersCollection TimeEntriesCollection 等等 他们都是ArrayList类的子类 例如: TimeEntriesCollection存放自定义类TimeEntry 这些自定义集合类都实现了排序方法Sort 先看我写的一段代码: using System; using System.Collections; namespace Ar

代码阅读总结之ASP.NET StartKit TimeTracker(数据绑定之困惑笔记)

以前在项目中数据绑定一直用<%# %> 今天在ASP.NET StartKit TimeTracker的AdminTabs.ascx中有一段代码: <a href='<%= Global.GetApplicationPath(Request) %>/<%# ((ASPNET.StarterKit.TimeTracker.BusinessLogicLayer.TabItem) Container.DataItem).Path %>'> <%# ((ASP

代码阅读总结之ASP.NET StartKit TimeTracker(QueryString之改进笔记)

在ASP.NET StartKit TimeTracker中使用了大量QueryString 例如: http://localhost/TTWebCSVS_cn/ProjectList.aspx?index=2 现在让我们在IE地址里面敲入下面的地址,会出现什么情况? http://localhost/TTWebCSVS_cn/ProjectList.aspx?index=a2 或者 http://localhost/TTWebCSVS_cn/ProjectList.aspx?index= 很明

代码阅读总结之ASP.NET StartKit Commerce

ASP.NET StartKit Commerce简单,容易理解. 我认为是初次学习.NET代码的首选,不怕各位笑话,我曾经完整阅读该项目代码3次. 那么,通过阅读我们能学习到什么知识呢?请看我下面的总结: 1.多层结构的实现 依我见是2层结构:PL层和BLL层(没有明显的DAL层,DAL和BLL共同组成BLL层).但是我们可以学习到Db过程的调用方法. 2.Web服务的简单使用 3.Web用户控件的使用 4.数据绑定的相关知识 让我们先看该项目中的一段代码: <asp:HyperLink cs

vs2013 的 asp.net 如何配置 角色权限?

问题描述 vs2013没有了2010的asp.net配置选项,该如何配置成员角色权限呢?以前在vs2010的asp.net配置选项可以打开一个配置页面,"安全"标签里,可以配置:1使用sqlserver还是access作为注册成员.用户的后台数据库2匿名用户无法访问指定文件夹下的页面3指定用户可以访问指定文件夹下的页面配置起来相当方便但vs2013菜单-网站下面没有了asp.net配置选项,这些功能该在哪里配置,又如何配置呢?曾照网上的帖子操作,没有成功:http://blogs.ms

代码阅读总结之Fitch and Mather 7.0

asp.net发生异常或错误时错误提示页面的处理方法 当asp.net发生异常或错误时,我们是怎么样处理错误提示页面? 我总结了下面几种方式: i:利用方法Response.Redirect() 看下面2段代码: 1. 在页面admin.aspx中发生异常时 try { //程序逻辑 } catch(OverflowException) { //在选中的上下文中所进行的算术运算.类型转换或转换操作导致溢出时引发的异常 //例如:小于int的MinValue或大于int的MaxValue,异常,转

Kryo简介及代码阅读笔记

更新:2012-08-01 版本 2.16长时间运行可能会导致OOM,版本2.18有bug,不能正确序列化map和collection. 真是悲剧,所用的每一个版本都有bug.不过从代码来看,作者有时的确比较随便..测试用例也少..(比起msgpack少多了) ======================================== Kryo官方网站:https://code.google.com/p/kryo/ 优点:     速度快!见https://github.com/eisha

FFMpeg框架代码阅读

FFMpeg框架代码阅读 内容摘要:FFmpeg是一个集录制.转换.音/视频编码解码功能为一体的完整的开源解决方案.FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用.FFmpeg支持MPEG. DivX.MPEG4.AC3.DV.FLV等40多种编码,AVI.MPEG.OGG.Matroska.ASF等90多种解码. TCPMP, VLC, MPlayer等开源播放器都用到了FFmpeg. FFmpeg主目录下主要有libavcodec.libavformat和l