ZZCMS是中国ZZCMS团队的一套内容管理系统(CMS)。
ZZCMS 8.3及之前版本中的zs/subzs.php文件存在SQL注入漏洞。该漏洞源于基于数据库的应用缺少对外部输入SQL语句的验证。攻击者可利用该漏洞执行非法SQL命令。
https://pan.baidu.com/s/1vFT6pG31J7NMKtRsbt1fLQ?_at_=1632443525498
这里要安装库,如果没有要去创建一个数据库
完事之后点击下一步就好了
他会有一个查询过程,等他查询结束就好了
这样子就算安装结束了
在简述中已经提到,漏洞产生在文件zs/subzs.php中
先用Seay代码审计工具打开zs/subzs.php
仔细一看,漏洞就产生在第一个函数里
细细分析,,从if开始。
if (!isset($_COOKIE[“zzcmscpid”])){
$str=”暂无记录”;
判断COOKIE中如果不存在zzcmspid函数,那么就会将”暂无记录”赋值给变量str
否则,判断到cokie有zzcmspid的话,就直接把zzcmspid赋值给cpid,由cpid来判断当前id值是否大于0。其次直接带入数据执行sql语句。
else{
$cpid=$_COOKIE[“zzcmscpid”];
if (strpos($cpid,”,”)>0){
$cpid=str_replace(“ “,””,$cpid);
$cpid=str_replace(“deleted”,””,$cpid);//cookie会出现deleted的情况
$sql=”select id,proname,img from zzcms_main where id in (“.$cpid.”)”;
}else{
checkid($cpid);
$sql=”select id,proname,img from zzcms_main where id=’$cpid’ “;
}
漏洞原因是因为函数未对cookie值验证,sql查询语句没用引号引起来,是数字型注入,一定要注意,从前端传到后端的数据都是可更改的。
全局搜索一下,看看哪里调用了这个函数:
可以看到在/label.php中调用了,跟进去看看。
functionfixed($cs,$channel){
switch($channel){
case’ad’: returnshowad($cs); break;
case’zs’: returnshowzs($cs); break;
case’dl’: returnshowdl($cs); break;
case’pp’: returnshowpp($cs); break;
case’job’: returnshowjob($cs); break;
case’zx’: returnshowzx($cs); break;
case’zh’: returnshowzh($cs); break;
case’announce’: returnshowannounce($cs); break;
case’cookiezs’: returnshowcookiezs($cs); break;
case’zsclass’: returnshowzsclass($cs); break;
case’keyword’: returnshowkeyword($cs); break;
case’province’: returnshowprovince($cs); break;
case’sitecount’: returnshowsitecount($cs); break;
}
再次全局搜索一下调用fixed函数的地方,就在同一文件处,即label.php中的showlabel函数。
functionshowlabel($str){
global$b; //zsshow需要从zs/class.php获取$b;zxshow从s/class.php获取$b;
$channels= array( ‘ad’, ‘zs’, ‘dl’, ‘zx’, ‘pp’, ‘job’, ‘zh’, ‘announce’, ‘cookiezs’, ‘zsclass’, ‘keyword’, ‘province’, ‘sitecount’);
foreach($channels as$value) {
if(strpos($str, “{#show”.$value. “:”)!== false){
$n=count(explode( “{#show”.$value. “:”,$str)); //循环之前取值
for($i= 1;$i ‘’){$str=str_replace( “{#show”.$value. “:”.$cs. “}”,fixed($cs,$value),$str);} //$cs直接做为一个整体字符串参数传入,调用时再转成数组遍历每项值
}
}
//自定义标签
$channels= ‘zs,dl,zx,pp,job,wangkan,zh,company,special,baojia,ask,link,ad,about,guestbook,help’;
$channel = explode( “,”,$channels);
for($a= 0; $a
用户名 | 金币 | 积分 | 时间 | 理由 |
---|---|---|---|---|
奖励系统 | 100.00 | 0 | 2021-10-07 14:02:37 | 投稿满 10 赞奖励 |
奖励系统 | 50.00 | 0 | 2021-10-07 14:02:39 | 投稿满 5 赞奖励 |
Track-手电筒 | 60.00 | 0 | 2021-09-29 22:10:22 | 一个受益终生的帖子~~ |
打赏我,让我更有动力~
The attachment is hidden and you need to reply to the topic before it becomes visible.
© 2016 - 2022 掌控者 All Rights Reserved.
1428136846
发表于 7个月前
11111
评论列表
加载数据中...