纵有疾风起
人生不言弃

qibocms 多个系统同一原因的sql注入 – 网站安全 –

因为qibocms 拥有很多系统。
看了看昨天发的那个洞 今天再下载了几个qibo其他的系统 发现有一部分系统存在该洞。
鉴于之前qibocms打补丁的时候总是打了几个系统 而遗漏了其他几个系统。
就把存在这洞的系统全部一个一个的写出来。

详细说明:

统一来看看全局文件

$_POST=Add_S($_POST);
$_GET=Add_S($_GET);
$_COOKIE=Add_S($_COOKIE);

function Add_S($array){
foreach($array as $key=>$value){
if(!is_array($value)){
$value=str_replace("&#x","& # x",$value);//过滤一些不安全字符
$value=preg_replace("/eval/i","eva l",$value);//过滤不安全函数
!get_magic_quotes_gpc() && $value=addslashes($value);
$array[$key]=$value;
}else{
$array[$key]=Add_S($array[$key]);
}
}
return $array;
}

判断是否开启gpc 如果off 就用addslashes来过滤数组中的value

没有过滤数组中的key。

0x01 新闻系统

news/member/post.php中

elseif($job=='manage')
{
if(!$atc_power)showerr("你没权限");
if($rsdb[pages]<2){
header("location:post.php?job=edit&aid=$aid");exit;
}
if($step==2){
asort($orderDB);
$i=0;
foreach( $orderDB AS $key=>$value){
$i++;
$db->query("UPDATE {$_pre}reply SET orderid=$i WHERE aid='$aid' AND rid='$key'");
}
refreshto("$FROMURL","排序成功",1);
}

对数组中的key循环出来后 无过滤直接带入到了update语句中所以造成了注入。

—————————————————————————————————————

0x02 图片系统

在 photo\member\post.php中

elseif($job=='manage')
{
if(!$atc_power)showerr("你没权限");
if($rsdb[pages]<2){
header("location:post.php?job=edit&aid=$aid");exit;
}
if($step==2){
asort($orderDB);
$i=0;
foreach( $orderDB AS $key=>$value){
$i++;
$db->query("UPDATE {$_pre}reply SET orderid=$i WHERE aid='$aid' AND rid='$key'");
}
refreshto("$FROMURL","排序成功",1);
}

也是一样的原因 循环出来后没有对$key过滤 直接带入到查询。

0x03 视频系统

video/member/post.php中

elseif($job=='manage')
{
if(!$atc_power)showerr("你没权限");
if($rsdb[pages]<2){
header("location:post.php?job=edit&aid=$aid");exit;
}
if($step==2){
asort($orderDB);
$i=0;
foreach( $orderDB AS $key=>$value){
$i++;
$db->query("UPDATE {$_pre}reply SET orderid=$i WHERE aid='$aid' AND rid='$key'");
}
refreshto("$FROMURL","排序成功",1);
}

也是一样的原因 循环出来后没有对$key过滤 直接带入到查询。

_____________________________________________________________________

0x04 博客系统

/blog/require/ajax/edit_sort.php中

if($action == "update"){
foreach($name AS $key=>$value){
$db->query("UPDATE `{$pre}blog_{$type}_album` SET name='$value' WHERE uid='$lfjuid' AND id='$key'");
}

这里跟之前的代码还有点不同 不过一样没过滤 造成注入。

/blog/member/update_sort.php

if($action == "update"){
foreach($name AS $key=>$value){
$db->query("UPDATE `{$pre}blog_{$type}_album` SET name='$value' WHERE uid='$lfjuid' AND id='$key'");
}

博客系统中这样的很多 。

博客系统 第三弹

/blog/require/ajax/friendlink.php

if($act=='modify')
{
foreach($name AS $key=>$value){
if($value!=$_name[$key]||$url[$key]!=$_url[$key]){
$url[$key]=filtrate($url[$key]);
$value=filtrate($value);
$db->query("UPDATE {$pre}blog_friendlink SET name='$value',url='{$url[$key]}' WHERE uid='$lfjuid' AND id='$key'");
}
}
job_end($job);
}

漏洞证明:

qibocms 多个系统同一原因的sql注入 – 网站安全 –插图

都是同一原因的 随便找个系统演示就行了。

修复方案:

我看这些都是起的数字的作用

$key=intval($key);

    上一篇: DedeCMS-V5.7-UTF8-SP1 新绕过思路+sql注入+任意订单支

    下一篇: B2Bbuilder最新版注入漏洞两枚 – 网站安全 – 自学
未经允许不得转载:起风网 » qibocms 多个系统同一原因的sql注入 – 网站安全 –
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录