Discuz! "$referer"输出值跨站漏洞

2010-03-25T00:00:00
ID SSV:19341
Type seebug
Reporter Root
Modified 2010-03-25T00:00:00

Description

在Discuz! 任意版本中存在以下页面:

/templates/default/attachpay.htm /templates/default/ec_rate.htm /templates/default/register.htm

这些页面都包含$referer输出代码: <input type="hidden" name="referer" value="$referer" />

当$referer 中含有恶意代码时,这些页面及被其嵌套的php页面会产生跨站漏洞。

Discuz! 7.X Discuz! 6.X Discuz! 5.X Discuz!NT 3.X

其他版本可能也存在此问题。任何对referer进行赋值并输出的网站程序都存在该弱点。 等待官方补丁

                                        
                                            
                                                以register.htm 为例:

访问者访问某URL,然后点击“注册”按钮, 该URL被赋值给 $referer 函数,然后 register.htm 会将$referer输出,此时用户打开的注册页面 register.php 中也会包含 $referer 值。

所以,无论该URL是动态页面还是静态页面,无论它是否含有跨站漏洞,只要这个URL地址可以包含跨站代码,跨站就可能发生。


攻击者构造含有特殊代码的URL,以Discuz! 7.0为例,如:http://www.example.com/viewthread.php?tid=&lt;script&gt;alert(/liscker/);&lt;/script&gt; ,用户访问该URL,然后点击“注册”按钮,访问register.php,此时发生跨站,执行恶意代码。


attachpay.htm、ec_rate.htm原理与register.htm原理相同。