漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2014-051206
漏洞标题:Thinksaas存储型XSS
相关厂商:thinksaas.cn
漏洞作者: phith0n
提交时间:2014-02-20 13:03
修复时间:2014-05-18 13:03
公开时间:2014-05-18 13:03
漏洞类型:xss跨站脚本攻击
危害等级:高
自评Rank:18
漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2014-02-20: 细节已通知厂商并且等待厂商处理中
2014-02-22: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2014-04-18: 细节向核心白帽子及相关领域专家公开
2014-04-28: 细节向普通白帽子公开
2014-05-08: 细节向实习白帽子公开
2014-05-18: 细节向公众公开
简要描述:
点击触发,因为多处调用的同一个函数所以多处存在问题
之前还交过一个它的sql注入一个越权。。求审核……审核……核
详细说明:
Thinksaas是一款轻量级开源社区系统,界面我很喜欢。官网在http://www.thinksaas.cn/。
因为是一个类似论坛的社区,所以前台难免会有富文本编辑器,而处理不好富文本的话就容易产生XSS。自从看了M老师的文章,我对XSS也有了进一步的认识,所以才能找到Thinksaas过滤不严的XSS。
我们先看它使用的哪个函数对XSS进行的过滤,\thinksaas\tsFunction.php中:
cms中多处调用tsClean来清理富文本,而tsClean是调用CleanJS来清理xss。于是我们看到cleanJS函数。
首先过滤了注释,和php代码,然后“完全过滤JS”,但因为没有加i修饰符,所以直接大小写绕过。不过绕过此处也绕不过下面对标签名的过滤:html|head|meta|link|base|body|title|style|script|form|iframe|frame|frameset。过滤了这些标签,自然是还有很多标签可以执行。
它对属性的过滤比较严格,基本上onmouse系列、onkey系列、各种on属性都没了。剩下一下不太好触发的,暂时不考虑。
再下来对一些敏感的关键词进行了过滤,比如javascript:、cookie等。
标签过滤的比较少,所以我们从标签入手,一看没有过滤math,我们就可以利用math标签来绕过过滤。现给出大概的POC(有些地方情况不同略有小修改):
<math>
<maction actiontype="" xlink:href="javascript:alert(\u0064ocument.c\u006fokie)">hello world<maction>
</math>
因为过滤了“javascript:”这个关键词,但符号我们可以替换成html实体,于是利用“javascript:”绕过。而“document.”、“cookie”关键词我们可以通过unicode编码绕过,随便编码一个字符即可。
漏洞证明:
我们看看可以在哪里插入这个POC,随便找一个富文本编辑框,比如新建小组那里,有个小组介绍:
在这里插入即可(为防止编辑器本地过滤,抓包修改最佳)。
插入完成后,其他用户在查看该小组信息时就能看到此处XSS:
点击触发:
当然还有其他很多地方,比如小组发帖处。不过发帖处由于对于\的过滤,所以我们unicode编码要写成\\u0064。这次来个可以xss打cookie的EXP:
基本上可以执行任意代码,只要注意在javascript中避免出现关键字(用unicode替代)即可。
可收信成功:
修复方案:
使用白名单过滤富文本,可以考虑使用UBB
版权声明:转载请注明来源 phith0n@乌云
漏洞回应
厂商回应:
危害等级:无影响厂商忽略
忽略时间:2014-05-18 13:03
厂商回复:
暂时采用ubb编辑器不太现实,还是需要富文本编辑器,慢慢过滤吧。
最新状态:
暂无