Merak邮件服务器cleanHTML()函数跨站脚本漏洞
发布日期:2009-05-05
更新日期:2009-05-06
受影响系统:Icewarp WebMail Server 9.4.1
不受影响系统:Icewarp WebMail Server 9.4.2
描述:
BUGTRAQ ID:
34823
CVE(CAN) ID:
CVE-2009-1467
Merak Email Server是一个全面的办公室局域网或Internet通讯邮件解决方案。
为了防止在HTML邮件中执行JavaScript和VBScript代码并过滤掉不希望的HTML标签,Merak邮件服务器WebMail模块的cleanHTML()函数会对HTML邮件执行过滤。从462行到482行,cleanHTML()函数删除或更改了各种恶意关键字,包括删除所有以on开始的属性(如onmouseover、onload等),并将javascript和vbscript重写为noscript。之后在485行,cleanHTML()函数彻底的删除了邮件中的各种HTML标签:
$string = preg_replace('#</*(meta|xml|blink|link|embed|object|iframe|
frame|frameset|ilayer|layer|bgsound)[^>]*>#i',"",$string);
在之前过滤掉的关键字之间注入这些HTML标签,cleanHTML()函数就无法识别,之后该函数删除HTML标签时关键字会再次生效。
另外一种绕过过滤的方法是使用16进制的HTML实体。cleanHTML()函数在459行对输入字符串进行一次解码:
$string = html_entity_decode($string, ENT_COMPAT, "UTF-8");
通过双重编码输入,所有用于过滤的正则表达式在第一次解码后也无法识别出恶意的内容。
<*来源:RedTeam Pentesting
链接:
http://marc.info/?l=bugtraq&m=124153469904998&w=2
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
<div o<xml>nmouseover="alert('XSS')";>XSS</div>
<img src=&#x6a;&#x6
1;&#x76;&#x
61;&#x73;&#
x63;&#x72;&
#x69;&#x70;
&#x74;&#x3a
;&#x61;&#x6
c;&#x65;&#x
72;&#x74;&#
x28;&#x34;&
#x32;&#x29;>
建议:
临时解决方法:
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
* 在配置中禁用HTML消息,仅以纯文本显示邮件。
厂商补丁:
Icewarp
-------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.icewarp.com/浏览次数:2454
严重程度:0(网友投票)