FineCMS v2.1.5前台一处XSS+CSRF可getshell 8090安适门户
FineCMS一个XSS缝隙分析
FineCMS是一套用CodeIgniter开发的中小型内容打点系统,目前有三个分支:1.x,2.x,5.x,此次分析的是2.x的最新版2.1.5。
一、用户输入既然是XSS,那么就必然有用户的输入以及输出。
// controllers\member\InfoController.php
public function avatarAction() {
if (empty($this->memberconfig['avatar']) && $this->isPostForm()) {
$data = $this->input->post('data', TRUE);
$this->member->update(array('avatar'=> $data['avatar']), 'id=' . $this->memberinfo['id']);
$this->memberMsg(lang('success'), url('member/info/avatar'), 1);
}
$this->view->assign(array(
'avatar_ext_path' => EXT_PATH . 'avatar/',
'avatar_return' => (url('member/info/uploadavatar')),
'meta_title' => lang('m-inf-1') . '-' . lang('member') . '-' . $this->site['SITE_NAME'],
));
$this->view->display('member/avatar');
}
$data = $this->input->post('data', TRUE);中第二个参数为TRUE暗示数据会颠末xss_clean()函数进行过滤,然后就进行过滤。xss_clean()其实是很难绕过的,如果输出点在属性值中,孕育产生XSS的可能性就很大。
二、输出点①
前台触发
1 2 3 4 5 6 7 8 9 10 11
// controllers\member\SpaceController.php 第35行-44行
$this->view->assign($data);
$this->view->assign(array(
'meta_title' => lang('m-spa-2', array('1'=>$data['nickname'])) . '-' . $this->site['SITE_NAME'],
'userid' => (int)$data['id'],
'tablename' => $model['tablename'],
'modelname' => $model['modelname'],
'groupname' => $this->membergroup[$data['groupid']]['name'],
'page' => $this->get('page') ? $this->get('page') : 1,
));
温馨提示: 本文由杰米博客推荐,转载请保留链接: https://www.jmwww.net/file/pc/12475.html