参考了下网上给出的漏洞原因和解决思路如下:
$link = base64_decode(urldecode($link));
link可以构造成任意地址,下面直接跳转了
header("location:$link");
影响所有用到dedecms系统的网站。
漏洞证明:http://www.**.com/plus/download.php?open=1&link=aHR0cDovL3d3dy5iYWlkdS5jb20%3D
其中将**号更改为你的网站域名,如果跳转到其它网站就说明存在漏洞。
修复方案:对link参数做判断,对不是同域名的跳转给予提示
我们这里给出具体的修改方案:
修改download.php(在网站根目录plus文件夹下)
把
header("location:$link");
替换为
if(stristr($link,$cfg_basehost))
{
header("location:$link");
}
else
{
header("location:$cfg_basehost");
}
这样即可将非本站域名跳转到网站首页,以免出现钓鱼欺诈行为。而scanv也不会再提示低危风险漏洞了。