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

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

缺陷编号:wooyun-2014-084081

漏洞标题:PageAdmin多处设计缺陷可getshell

相关厂商:pageadmin.net

漏洞作者: Vigoss_Z

提交时间:2014-11-21 12:36

修复时间:2015-02-19 12:38

公开时间:2015-02-19 12:38

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-11-21: 细节已通知厂商并且等待厂商处理中
2014-11-22: 厂商已经确认,细节仅向厂商公开
2014-11-25: 细节向第三方安全合作伙伴开放
2015-01-16: 细节向核心白帽子及相关领域专家公开
2015-01-26: 细节向普通白帽子公开
2015-02-05: 细节向实习白帽子公开
2015-02-19: 细节向公众公开

简要描述:

rt

详细说明:

text3 = now.AddSeconds((double)random.Next(3600, 86164)).ToString("yyyyMMddHHmmss");
master_login.imMAPgbr7QUplCu6n3e(httpCookie).Add("Valicate", master_login.sxW4jRbFsutFEAxed8S(md, text3));


管理员登陆成功,SetCookie
登陆时间+(3600,86164)之间随机的秒数,进行Get_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();
}


将字串s MD5之后和pageadmin cms MD5之后的字串每2位进行16进制加法,再拼接在一起。
pageadmin cms是硬编码在这的。
还是老问题,得到lastlogin_time,我们就可以生成valicate进行cookie伪造了。
可能的valicate有86164-3600=83164个,平均40000次可以得到valicate,在可以接受的范围内。
lastlogin_time:
前台会员中心处,e/member/index.aspx?type=mem_idx&s=1
Cookie添加Member=UID=2&valicate=1。
UID=2为管理员UID。只要Valicate不为空就会进入权限验证,验证失败,js跳转。。。得到lastlogin_time,生成Valicate,暴力验证登录后台。
后台直接执行SQL,操作aspx文件。。。

漏洞证明:

图片为本地搭建环境,人品一般,大概需要40000多次

valicate.jpg

valicate2.JPG

修复方案:

Get_Md5中的pageadmin cms用户可设置

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-11-22 17:31

厂商回复:

感谢白帽子,已经修正了此问题。

最新状态:

暂无