NOTES邮件系统是IBM公司开发的一套邮件系统,做为优秀的内部邮件系统,在中国应用极为广泛,很多大型公司将NOTES作为内部办公OA及邮件系统使用。
NOTES通过使用密钥和其它安全手段,提供了四级安全措施:验证、存取控制、字段级加密和电子签名,在身份认证和a传输安全上很严密。
但是NOTES作为一个邮件应用,利用服务器发送邮件,利用网络传递消息,它必然和其他网络应用一样,会出现这样那样的安全问题。看我们能挖掘出多少来。
一、邮件病毒木马携带
电子邮件可以携带病毒木马,这是由于邮件能携带Word文档或EXE可执行文件等附件,而 Word文档可能携带宏病毒,EXE文件可能携带的病毒种类更多,所以附带传送二进制数据时,传送的数据中很可能包含有病毒,这个不可避免。但一个有优秀的、成熟的、有安全责任感的邮件客户端软件,收到带有附件的文件后,应该正确分析附件的性质;当附件是可执行文件时,软件应该对其做一个安全限制,用户打开该附件时,应该提醒用户安全风险;实际上, gmail,outlook等大部分邮件软件等都做到了这一点,分析提示附件安全风险,甚至拒绝邮件有安全风险的附件。
而号称安全的notes添加exe附件,不会进行任何提醒,直接添加;收件人收到exe附件时,也可下载到本地或直接执行,而不会进行安全提醒,不知这是什么考虑?见下图:
这个风险就不用说了,一般人安全意识稍差,打开恶意附件就中招了。不过各位可能要说了,exe文件很招摇,让人心生防患,一般人不会打开。再加上很多企业部署了邮件网关,比如我进行安全检测的这家,收到外来邮件,会提示如下:
要让人中招还要加大欺骗力度,比如伪造邮件。我监测的这家企业在 smtp接受服务器处不进行接入控制和身份认证,给伪造邮件开了方便之门。现在,我们自己搭建一个邮件发送端,直接和邮件接受方SMTP服务器通讯,发送伪造邮件。
二、伪造邮件
伪造邮件首先要确定接受方的smtp服务器域名,可以百度或google一下,一般是mx+n+对方域名或 smtp+对方域名。找到后,最简单的方法是直接 telnet连接服务器服务端口,然后按照SMTP和MIME底层通讯过程发送伪造邮件。现在看看和SMTP服务器的对话过程:
看一下NOTES邮箱,果然收到邮件了,现在,你可以冒充任何收件人的领导、朋友、同事发邮件,邮件中可以包含附件、链接、内嵌对象等,现在让人中招是不是难拒绝多了?我们可以使用vbs、javamail、c#socket等编写代码自动实现这个过程。但是毕竟还要对方下载附件和点击链接,有没有更自动化的手段?
三、跨站脚本0day
想到了跨站脚本,很多邮件客户端不能在性能和安全性之间平衡,支持富文本,通过过滤html源程序中能够使脚本程序运行的代码获取安全性,但如果script元素中出现漏洞,可导致可在html邮件中直接嵌入脚本程序,或跨站脚本的发生。但是根据NOTES提供的资料, NOTES不支持脚本语言,据说从根本上杜绝了脚本漏洞的发生。先测试一下吧,从NOTES服务器创建一封邮件,主题和正文都是<script>alert”xss”</script>,发送出去,等几秒,收到了,看看:
看来没有问题,NOTES把脚本当做了文本处理。
从其它邮箱,如gmail也创建一封这样的邮件,发给NOTES,打开后,也是一样。看来NOTES确实没有跨站脚本漏洞了。
但别急着下结论。通过测试,我发现NOTES在内部邮件或与正规的外部邮件传送中确实没有问题,因为NOTES本身无法构造恶意HTML邮件,如果对邮件中插入恶意脚本,NOTES将对脚本代码进行过滤或加密转换,比如通过htmlencode加密转换,使脚本不可执行,这就是NOTES不识别脚本的秘密。但通过SMTP服务器接受其它邮件客户端软件或webmail的邮件时问
题就出现了。
我们来看看,其它邮件客户端软件或webmail如果构造带有恶意HTML代码的邮件,会出现什么情况呢?
我们通过自己的邮件发送软件,构造一个恶意HTML代码的邮件,内容是:scripalert”
1”/script,由于在邮件中构造HTML代码,对代码进行base64加密,上面这个代码加密后内容为” PHNjcmlwdD5hbGVydKGxMaGxPC9zY3JpcHQ+”。修改邮件头相关内容为:Content-type:text/html;content-transfer-encoding:base64构造好恶意邮件后,通过邮件发送给NOTES,打开这封邮件,看看这时的情况:
跨站脚本出现了!这里的原因其实很简单,NOTES会将远程邮件内容从base64转换为可读内容,对这种可读内容中的恶意脚本,NOTES没有过滤和加密,导致了问题的发生。由于NOTES是通过NOTES ID进行双因素认证,不能利用跨站脚本的一个常见危害——cookie窃取,但是其它危害,如网马下载、钓鱼攻击等还是可以进行的。
这个漏洞刚刚通过IBM中国区客服向IBM总部进行了报告,正在处理中。NOTES邮件是通过NSF文件保存在本地的,我一直想测试是否能实施成功跨站脚本的最大危害——跨域攻击,但不知为什么,一直没有成功,一些正常的脚本,比如activex对象生成,xmlhttp利用等,在客户端打开的时候会脚本报错,可能有一些什么限制,比较郁闷。对邮件发送或跨站脚本进一步利用有什么意见,欢迎进一步讨论。
本文为网络安全技术研究记录,文中技术研究环境为本地搭建或经过目标主体授权测试研究,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,在挖掘、提交相关漏洞的过程中,应严格遵守相关法律法规。