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

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

缺陷编号:wooyun-2014-059836

漏洞标题:Tipask问答系统可修改他人回答(官方Demo成功)

相关厂商:Tipask

漏洞作者: 飞黎

提交时间:2014-05-08 17:30

修复时间:2014-08-06 17:32

公开时间:2014-08-06 17:32

漏洞类型:非授权访问/权限绕过

危害等级:低

自评Rank:13

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

Tipask一处越权操作可非法操作他人回答

详细说明:

首先盯紧目标回答,比如这个问题的第一个回答:
http://help.tipask.com/q-19260.html

t0153afe5e564f8b65c.png


F12看一下评论按钮的链接,搞到回答的ID:

t01588ef8d0012c888e.png


ID是3608,然后访问:
http://help.tipask.com/question/editanswer/3608/0.html

t012e6f977188496255.png


提交之,修改成功:

t019d5dd200677bd009.png


----------------------------------

问题出在: control/question.php
line323:
function oneditanswer() {
$navtitle = '修改回答';
$aid = $this->get[2] ? $this->get[2] : $this->post['aid'];
$answer = $_ENV['answer']->get($aid);
(!$answer) && $this->message("回答不存在或已被删除!", "STOP");
$question = $_ENV['question']->get($answer['qid']);
$navlist = $_ENV['category']->get_navigation($question['cid'], true);
if (isset($this->post['submit'])) {
$content = $this->post['content'];
$viewurl = urlmap('question/view/' . $question['id'], 2);
//检查审核和内容外部URL过滤
$status = intval(2 != (2 & $this->setting['verify_question']));
$allow = $this->setting['allow_outer'];
if (3 != $allow && has_outer($content)) {
0 == $allow && $this->message("内容包含外部链接,发布失败!", $viewurl);
1 == $allow && $status = 0;
2 == $allow && $content = filter_outer($content);
}
//检查违禁词
$contentarray = checkwords($content);
1 == $contentarray[0] && $status = 0;
2 == $contentarray[0] && $this->message("内容包含非法关键词,发布失败!", $viewurl);
$content = $contentarray[1];
$_ENV['answer']->update_content($aid, $content, $status);
if (0 == $status) {
$this->message('修改回答成功!为了确保问答的质量,我们会对您的回答内容进行审核。请耐心等待......', $viewurl);
} else {
$this->message('修改回答成功!', $viewurl);
}
}
include template("editanswer");
}


在348行跳到 model/answer.class.php的:
line138:
function update_content($aid, $content, $status = 0) {
$this->db->query("UPDATE `" . DB_TABLEPRE . "answer` set content='$content',status=$status WHERE `id` =$aid");
}


sql语句没有判断userid就直接更新了回答内容,导致漏洞的产生

漏洞证明:

t019d5dd200677bd009.png

修复方案:

判断要修改的回答是不是用户自己的

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


漏洞回应

厂商回应:

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