亲测Discuz! 7.2,7.1,7.0三个版本都受影响
都是因为同一原因,导致可在全部页面触发xss漏洞
这里拿Discuz! 7.2做分析
比如Discuz! 7.2安装包里面的第二个文件就是ajax.php
注意这里的最后一行的showmessage函数,我们跟进
include/global.func.php文件
这里当$infloat和$handlekey不为空,都存在的话
将$show_message赋值,且$handlekey进入$show_message的内容中
最后include template('showmessage');
$show_message内容在showmessage.htm模板里面显示:
所以通过上面的分析,变量$handlekey进入$show_message的内容中时
只是过滤了单引号,但是在$show_message装那个并没有用到单引号保护变量
所以这里变量$handlekey就等于没有通过过滤直接最后显示在页面中了
这样就导致了xss漏洞
为什么前面会说全部页面都会触发咧
因为这里的函数showmessage,是一个全局的消息传递函数,基本上在所有的页面都会用
因为这是一个消息传递函数,无所谓登陆与否了,只要满足$infloat和$handlekey不为空,就能出发XSS漏洞
所有一个小问题却导致了整个系统都存在漏洞,这就不是小漏洞了
其他的就不一一列举了