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多次

PageAdmin多处设计缺陷可getshell – 网站安全 – 自学php网插图

 

PageAdmin多处设计缺陷可getshell – 网站安全 – 自学php网插图1

 

解决方案:

Get_Md5中的pageadmin cms用户可设置

    上一篇: phpok 最新版sql注入打包 - 网站安全 - 自学php网

    下一篇: 某烟草行业系统存在通用型SQL注入漏洞 - 网站安全 - 自学php网
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《PageAdmin多处设计缺陷可getshell – 网站安全 – 自学php网
   

还没有人抢沙发呢~