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

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

缺陷编号: WooYun-2015-107120

漏洞标题: tipask问答社区xss定向getshell

相关厂商: tipask问答社区

漏洞作者: Aug0st

提交时间: 2015-04-15 13:15

公开时间: 2015-07-14 14:08

漏洞类型: 命令执行

危害等级: 高

自评Rank: 20

漏洞状态: 已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签: 设计缺陷/边界绕过

1人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-04-15: 细节已通知厂商并且等待厂商处理中
2015-04-15: 厂商已经确认,细节仅向厂商公开
2015-04-18: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2015-06-09: 细节向核心白帽子及相关领域专家公开
2015-06-19: 细节向普通白帽子公开
2015-06-29: 细节向实习白帽子公开
2015-07-14: 细节向公众公开

简要描述:

tipask问答社区某工功能xss可以导致getshell,其实只要构造好了问题,不用定向问管理员,只要管理员把问题点了,就能触发导致getshell

详细说明:

tipask问答社区定向提问处未做过滤,导致xss,然后台出可以写文件,然后用前台的提问去提问管理员,管理员前台点开问题即可触发getshell,不需要管理后台交互。其实只要构造好了问题,不用定向问管理员,只要管理员把问题点了,就能触发导致getshell.

漏洞证明:

1.首选来看这个xss,这个应该会和此人的这个有重合,http://**.**.**.**/bugs/wooyun-2010-097876,但是我看不到他的具体细节。(其实此人我认识)

来看,问题出现在了提问处

28.png



来看代码,

code 区域
function onadd() {
$navtitle = "提出问题";
if (isset($this->post['submit'])) {
$title = htmlspecialchars($this->post['title']);
$description = $this->post['description'];//未做处理
$cid1 = $this->post['cid1'];
$cid2 = $this->post['cid2'];
$cid3 = $this->post['cid3'];
$cid = $this->post['cid'];
$hidanswer = intval($this->post['hidanswer']) ? 1 : 0;
$price = abs($this->post['givescore']);
$askfromuid = $this->post['askfromuid'];
$this->setting['code_ask'] && $this->checkcode(); //检查验证码
$offerscore = $price;
($hidanswer) && $offerscore+=10;
(intval($this->user['credit2']) < $offerscore) && $this->message("财富值不够!", 'BACK');
//检查审核和内容外部URL过滤(此处也不是处理特使字符,只是审核和检查有没有外部url)
$status = intval(1 != (1 & $this->setting['verify_question']));
$allow = $this->setting['allow_outer'];
if (3 != $allow && has_outer($description)) {
0 == $allow && $this->message("内容包含外部链接,发布失败!", 'BACK');
1 == $allow && $status = 0;
2 == $allow && $description = filter_outer($description);
}
//检查标题违禁词(这也不是处理)
$contentarray = checkwords($title);
1 == $contentarray[0] && $status = 0;
2 == $contentarray[0] && $this->message("问题包含非法关键词,发布失败!", 'BACK');
$title = $contentarray[1];

//检查问题描述违禁词(也不是)
$descarray = checkwords($description);
1 == $descarray[0] && $status = 0;
2 == $descarray[0] && $this->message("问题描述包含非法关键词,发布失败!", 'BACK');
$description = $descarray[1];

/* 检查提问数是否超过组设置 */
($this->user['questionlimits'] && ($_ENV['userlog']->rownum_by_time('ask') >= $this->user['questionlimits'])) &&
$this->message("你已超过每小时最大提问数" . $this->user['questionlimits'] . ',请稍后再试!', 'BACK');

$qid = $_ENV['question']->add($title, $description, $hidanswer, $price, $cid, $cid1, $cid2, $cid3, $status);



so弹了

29.png

,所以此处证明有xss,其实还有好多处,咱用这一处。



2,下来再看后台可以写shell的证明,在此处

30.png



来看代码

function onucenter() {

if (isset($this->post['submit'])) {

$this->setting['ucenter_open'] = intval(isset($this->post['ucenter_open']));

$_ENV['setting']->update($this->setting);

if ($this->post['ucenter_config']){

$ucconfig = "<?php\n";

$ucconfig.=tstripslashes($this->post['ucenter_config']);

writetofile(TIPASK_ROOT . '/data/ucconfig.inc.php',$ucconfig);

}

//连接ucenter服务端,生成uc配置文件

$message = 'UCenter设置完成!';

}

include template('setting_ucenter', 'admin');

来看这个函数tstripslashes

function tstripslashes($string) {

if (is_array($string)) {

foreach ($string as $key => $val) {

$string[$key] = tstripslashes($val);

}

} else {

$string = stripslashes($string);

}

return $string;

}

看到stripslashes想到了什么哈哈没错

所以是可以写进去shell的

好了,咱们看两者结合,构造如下.

31.png



,提交。管理登陆。

32.png



显然我们的js已经加载了。然后看看文件写成功了没。

33.png

,文件写入成功。菜刀连接

34.png

成功。



3.再附一处程序bug

35.png



修复方案:

你们更专业

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2015-04-15 14:07

厂商回复:

CNVD未直接复现所述漏洞情况,暂未建立与软件生产厂商(或网站管理单位)的直接处置渠道,待认领。

最新状态:

暂无


漏洞评价:

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

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

评价

  1. 2015-04-13 13:20 | phith0n 认证白帽子 ( 普通白帽子 | Rank:804 漏洞数:125 | 一个想当文人的黑客~)
    0

    xss难得上首页,还是交给cncert的。

  2. 2015-04-13 13:25 | 浅蓝 ( 普通白帽子 | Rank:283 漏洞数:111 | 圈内最帅,没有之一)
    0

    csrf getshell吧? 话说tipask怎么被转到cncert了

  3. 2015-04-13 13:27 | Aug0st ( 普通白帽子 | Rank:227 漏洞数:48 | do)
    0

    @浅蓝 差不多那意思,不过得利用xss

  4. 2015-04-13 13:45 | zcy ( 实习白帽子 | Rank:93 漏洞数:15 )
    0

    偶像,宇哥屌

  5. 2015-04-13 13:50 | Aug0st ( 普通白帽子 | Rank:227 漏洞数:48 | do)
    0

    @zcy 呵呵,认错人了,和宇哥id确实很像

  6. 2015-04-13 16:54 | hkAssassin ( 普通白帽子 | Rank:395 漏洞数:73 | 我是一只毛毛虫。)
    0

    我看了下我提交的关于tipask 的快一年了还没审核!我也是醉醉的了!

  7. 2015-04-14 10:44 | 上山砍竹子 ( 路人 | 还没有发布任何漏洞 | 屌丝一枚)
    0

    最近正好在用额

  8. 2015-07-14 20:40 | guanji ( 路人 | 还没有发布任何漏洞 | linux)
    0

    牛 xss 插shell

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