WooYun-2014-80870:qibocms地方门户系统注入(多处类似,demo测试)
漏洞作者: ′雨。
来源:http://www.wooyun.org/bugs/wooyun-2014-080870
简要描述
初始化啊 初始化。
详细说明
很多类似的 随便找个地方把。
首先注册个会员。
在dianping/post.php中
if($action=="postnew")
{
if($webdb[ForbidPostMore]){
if($db->get_one("SELECT * FROM {$_pre}content WHERE uid='$lfjuid' LIMIT 1")){
showerr("系统设置每人只能发布一个商铺!");
}
}
if(!check_rand_num($_POST["$webdb[rand_num_inputname]"])){
showerr("系统随机码失效,请返回,刷新一下页面,再重新输入数据,重新提交!");
}
if(!$postdb[city_id]){
showerr("请选择城市");
}
/*验证码处理*/
if($webdb[Info_GroupPostYzImg]&&in_array($groupdb['gid'],explode(",",$webdb[Info_GroupPostYzImg]))){
if(!$web_admin&&!check_imgnum($yzimg)){
showerr("验证码不符合,发布失败");
}
}
$postdb['list']=$timestamp;
if($iftop){ //推荐置顶
@extract($db->get_one("SELECT COUNT(*) AS NUM FROM `{$_pre}content$_erp` WHERE list>'$timestamp' AND fid='$fid' AND city_id='$postdb[city_id]'"));
让哥来发布个点评。
@extract($db->get_one("SELECT COUNT(*) AS NUM FROM {$_pre}content$_erp
WHERE list>'$timestamp' AND fid='$fid' AND city_id='$postdb[city_id]'"))
来看看这个语句。 {$_pre}content$_erp 来看看这个文件中的$_erp哪里来的
可以看到 我们的这个语句位于 173行。
而对$_erp 赋值是在187行。 那么相当于我们173行的这个$_erp就没有初始化了。
结合qibocms 伪全局机制 那么我们就可以控制173行的这个$_erp 来达到注入的效果。
dianping/post.php?action=postnew&fid=11&postdb[address]=xx&postdb[city_id]=x&_erp=aaa&iftop=1&yzimg=a1df
构造一下
成功出数据。
测试demo。
嗯。
漏洞证明
修复方案
把 $_erp=$Fid_db[tableid][$fid]; 放在前面。