文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>精迅 CMS 新闻内容管理系统漏洞

精迅 CMS 新闻内容管理系统漏洞

时间:2011-01-03  来源:心灵

发布日期:2011-01.03
发布作者:心灵

影响版本:精迅 CMS
官方网站:http://www.jxcms.com

漏洞类型:设计缺陷
漏洞描述:修改密码存在缺陷,可能被利用。

代码分析:代码:

case 'getpw':  $showsubmenu = 0;  $log_status && showmsg($lang['login_already'], $forward);  if (isset($_POST['submit'])) {  $msg = $_POST['hash'] == $ghash ? '' : $lang['hash_error'];  if ($set_captcha[1]) {  $msg or check_captcha($_POST['captcha']) or $msg = $lang['checkcode_error'];  }  $username = trim($_POST['username']);  $email = trim($_POST['email']);  if (!($member -> checkuser($username, 0) && $member -> checkemail($email, 0))) { // 0表示不检测是否存在  showmsg($member -> info);  }  $r = $member -> get(0, '`userid`,`email`,`question`,`answer`', "username='$username'");  if ($r) {  $answer = shtmlspecialchars($_POST['answer']);  if ($r['email'] != $email) showmsg($lang['email_name_error']);  elseif ($r['question'] && $answer != $r['answer']) showmsg($lang['answer_error']);  else {  $newpwd = substr(gethash($TIME . $IP), 6, 12);  $member -> modipwd($r['userid'], '', $newpwd, $newpwd, 1) or showmg($member -> info);  include JXCMS_ROOT . 'include/mail.func.php';  $mail_subject = &$lang['getpw_emailtitle'];  $mail_content = sprintf($lang['mail_body'], $username, $lang['your_new_password'] . $newpwd, $set_ceomail, $set_contact);  if ($set_sendtype == 'mail') {  basic_sendmail($email, $set_ceomail, $set_name, $mail_subject, $mail_content, 'html');  } elseif ($set_sendtype == 'nmail') {  nmail($email, $set_ceomail, $set_name, $mail_subject, $mail_content, 'html');  } elseif ($set_sendtype == 'smtp') {  smtp_sendmail($email, $set_ceomail, $set_name, $mail_subject, $mail_content, 'html');  }  showmsg($lang['getpw_sucess'], 'login.php', 3000);  }  } else showmsg($lang['email_name_error']);  }  include tpl('getpw');  break;    


主要是:“$newpwd = substr(gethash($TIME . $IP), 6, 12);”,在公用函数文件中 $TIME 定义是 time(),$IP 自定义就是当前客户端IP。

看 gethash:

function gethash($str) {  $str = md5($str . $GLOBALS['set_sid']);  $tmp = str_split($str, 1);  $tmp = array_unique($tmp);  return implode ('', $tmp);  }    

 

测试方法:
新密码就是这样生成出来的。“$GLOBALS['set_sid']”默认是空的(这里是基本条件之一,如果管理员在后台填写了安全码,那就没办法了。)。

这个程序有个留言本,随便留个言就可显示当时留言时间,然后把自己电脑时间改成服务器时间前几秒。再在本地搭建这个程序,就可以虚构“$newpwd = substr(gethash($TIME . $IP), 6, 12);”。

然后“echo $newpwd”就是修改后的密码。然后问题在时间上,可以从前几秒一直试到最后几秒,然后一个一个试密码就知道了。

“admin”的默认 Email 是 [email protected],80%的人是不去修改的,这个是前提条件!

这个程序最大设计失误是,后台管理账号和会员账号同放在“member”这个表里。

可能研究得复杂点,但本地架设测试成功的,没试过网上其他网站。总的来说很鸡肋,需要默认的 admin 邮箱没改和默认的安全码没写才行。

 

标签分类:

相关阅读 更多 +
排行榜 更多 +
翌日波奇狗的历险记手机版下载

翌日波奇狗的历险记手机版下载

休闲益智 下载
怪兽远征安卓版下载

怪兽远征安卓版下载

角色扮演 下载
谷歌卫星地图免费版下载

谷歌卫星地图免费版下载

生活实用 下载