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

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

缺陷编号:wooyun-2014-064738

漏洞标题:tipask 盲打后台xss

相关厂商:tipask问答系统

漏洞作者: phith0n

提交时间:2014-06-13 13:37

修复时间:2014-09-11 13:38

公开时间:2014-09-11 13:38

漏洞类型:xss跨站脚本攻击

危害等级:高

自评Rank:15

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

直打后台的xss,不过这厂商似乎没注册呀,360有这边没有。。

详细说明:

注册会员时对用户名没有过滤。
这是检查部分代码:

$username = trim($this->post['username']);
$password = trim($this->post['password']);
$email = $this->post['email'];
if ('' == $username || '' == $password) {
$this->message("用户名或密码不能为空!", 'user/register');
} else if (!preg_match("/^[a-z'0-9]+([._-][a-z'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$/", $email)) {
$this->message("邮件地址不合法!", 'user/register');
} else if ($this->db->fetch_total('user', " email='$email' ")) {
$this->message("此邮件地址已经注册!", 'user/register');
} else if (!$_ENV['user']->check_usernamecensor($username)) {
$this->message("邮件地址被禁止注册!", 'user/register');
}


post和get都只经过了addslashes处理,没有htmlspecialchars。
没有其他地方检查用户名。但数据库中用户名长度是14位,如果要一次构造一个xss还是比较难的。可以用拼接的方式来构造exp,原理我就不多说了。
注册三个用户,第一个*/</script>,第二个*/alert(1)/*,第三个<script>/*,后台查看用户列表的时候触发。
详见漏洞证明。

漏洞证明:

注册一个<img src=1>发现没有过滤:

01.jpg


然后来拼接一个POC:
注册三个用户,第一个*/</script>,第二个*/alert(1)/*,第三个<script>/*。
注册完成后数据库可以看到,三个用户:

02.jpg


后台查看用户的时候触发:

03.jpg


如果要加载远程js的话得多注册几个了,不过因为tipask用了Jquery,所以加载起来也不难,我就不演示了。

修复方案:

htmlspecialchars

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


漏洞回应

厂商回应:

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