ZZCMS 网站安全审计之爆高危SQL注入漏洞



          ZZCMS内容管理系统于2018年2月6号被爆出SQL注入漏洞,该ZZCMS网站程序是

用于招商行业、平台供求、加盟行业,应用比较广泛,全套系统采用PHP语言开
发,数据库

采用mysqli,配合伪静态,zzcms系统稳定便捷,深受用户的喜欢。这
次发现的zzcms网站漏

洞,是存在于2017年12月12日的最新V8.2版本。

 
 
SINE安全公司在对该ZZCMS网站程序代码进行安全审计的时候,发现在用户目录USER下的

del.php代码里发现存在sql注入漏洞,利用该漏洞可以获取网站的管理员
账号密码,以及篡改

数据。Sine安全公司是一家专注于:网站安全、服务器安全、网站安全检测、网站漏洞修复,

渗透测试,安全服务于一体的网络安全服务提供商。
 
<?php
$pagename=trim($_POST["pagename"]);
 
$tablename=trim($_POST["tablename"]);
 
$id="";
 
if(!empty($_POST['id'])){
 
    for($i=0; $i<count($_POST['id']);$i++){
 
checkid($_POST['id'][$i]);
 
    $id=$id.($_POST['id'][$i].',');
 
    }
$id=substr($id,0,strlen($id)-1);//去除最后面的","
}
 
if (!isset($id) || $id==""){
 
showmsg('操作失败!至少要选中一条信息。');
}
switch ($tablename){case "zzcms_main";if (strpos($id,",")>0){
 
之前ZZCMS的版本已经加强了前端的安全过滤,尤其在chekid参数值上也进行了详细的安全过

滤,那么就没有其他的注入漏洞了吗?我们接着往下看代码,在  
del.php代码的最下面的代码

里发现了漏洞所在,如下代码:
 
}else{
 
if (strpos($id,",")>0){
 
$sql="select id,editor from ".$tablename." where id in (". $id 
.")";
}else{
 
$sql="select id,editor from ".$tablename." where id ='$id'";
}
 
$rs=query($sql);
 
$row=num_rows($rs);
 
if ($row){
 
while ($row=fetch_array($rs)){
 
if ($row["editor"]<>$username){
 
markit();
 
showmsg('非法操作!警告:你的操作已被记录!小心封你的用户及
 
IP!');
exit;
}
query("delete from ".$tablename." where id =".$row['id']."");
}
echo "<script>location.href='".$pagename."';</script>";
}     
 
完全是没有对tablename参数过滤,在tablename这个参数值上,发现可以传入一些非法参数包含

sql注入代码,由于这个参数值不需要闭合,直接可以拼接成sql语句
,导致该sql注入漏洞发生。

这个sql注入漏洞不需要用户登录也可以直接注入,危
害极大,请各位网站的运营者尽快修复漏洞。
 
zzcms漏洞利用exp                              

分享: