来自乌云。
Discuz编辑器JS处理不当导致的存储型XSS。
产生原因:
JS原生取ELEMENT中HTML内容的方法,会将服务端转义过的单双引号实体编码进行反转。
代码分析:
这里用最新版本本地测payload为:[PHP] 纯文本查看 复制代码 [align="onmouseover="alert(1)]
官方论坛站点悄悄于2015-1-21改了代码,导致以上payload被过滤,不过用[email=2"onmouseover="alert(2)]2[/email]可绕过。
[PHP] 纯文本查看 复制代码 /forum.php?mod=post&action=edit&fid=xx&tid=xx&pid=xx&page=x
/static/js/common.js:
/static/js/bbcode.js:
/static/js/editor.js
调试流程:
漏洞证明:
发表帖子,编辑器内输入[PHP] 纯文本查看 复制代码 [email=2"onmouseover="alert(2)]2[/email] ,支持的bbcode类型可在bbcode.js中查看。
点击编辑时即可触发,由于是编辑器前端产生的问题,因此有权限编辑帖子的角色都会受到影响,包括版主,管理员。
|