齐博CMS某处任意文件写入getshell(需要一定权限)

2015-05-18 4,530
漏洞标题 齐博CMS某处任意文件写入getshell(需要一定权限)
相关厂商 齐博CMS
漏洞作者 phith0n
提交时间 2015-02-14 15:13
公开时间 2015-04-02 10:23
漏洞类型 命令执行
危害等级
自评Rank 15
漏洞状态 漏洞已经通知厂商但是厂商忽略漏洞
Tags标签 php源码审核,任意文件写入利用

漏洞详情

只拿整站做说明,下载最新版本。

/inc/function.inc.php 1507行

//自定义内容页文件名缓存生成
function get_showhtmltype(){
global $db,$pre,$Fid_db;
$query = $db->query("SELECT aid,htmlname FROM {$pre}article WHERE htmlname!=''");
while($rs = $db->fetch_array($query)){
$show.="\$showHtml_Type[bencandy][{$rs[aid]}]='$rs[htmlname]';\r\n";
}
foreach( $Fid_db[iftable] AS $key=>$erp){
$query = $db->query("SELECT aid,htmlname FROM {$pre}article$erp WHERE htmlname!=''");
while($rs = $db->fetch_array($query)){
$show.="\$showHtml_Type[bencandy][{$rs[aid]}]='$rs[htmlname]';\r\n";
}
}
write_file(ROOT_PATH."data/showhtmltype.php","<?php\r\n".$show.'?>');
}

一个生成什么页面的函数。我们看到,其中将htmlname从数据库中取出,直接放入$show.="\$showHtml_Type[bencandy][{$rs[aid]}]='$rs[htmlname]';\r\n";。那么htmlname只要闭合前面的引号(因为是二次操作,所以不需要考虑全局的addslashes),就能造成PHP代码最后写入ROOT_PATH."data/showhtmltype.php"文件。

我们看到这个函数在哪里调用:

屏幕快照 2015-02-13 下午11.58.54.png

屏幕快照 2015-02-13 下午11.59.06.png

如上两图,实际上就是在增加文章、修改文章两个过程中调用的。

而默认情况下,注册用户是可以给“美女欣赏”这个栏目投稿,也就是增加文章的。但我们还需要一个权限,必须能“自定义内容页文件名”,需要后台给某些用户组开启这个权限:

屏幕快照 2015-02-13 下午11.30.20.png

具体操作方法见“漏洞证明”

漏洞证明:

首先我的用户组是有相关权限了。投稿给“美女欣赏”这个栏目。

我选择在修改文章的时候进行getshell。新投稿一篇文章,来到http://10.211.55.3/qibocms/member/post.php?job=edit&fid=10&aid=666,aid是我这篇文章的id。这里有“自定义文件名”:

屏幕快照 2015-02-14 上午12.07.30.png

如上图,在其他设置里,将自定义文件名用单引号闭合后,插入shell。需要以.html结尾。提交。

http://10.211.55.3/qibocms/data/showhtmltype.php可见已经getshell:

屏幕快照 2015-02-14 上午12.11.13.png

修复方案:

不知道

版权声明:转载请注明来源 phith0n@乌云

本文作者:Chloe O_o

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/30557.html

Tags:
评论  (0)
快来写下你的想法吧!

Chloe O_o

文章数:38590 积分: 0

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号