[ 登录 ][ 注册 ] 天极传媒: 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
您现在的位置: IT专家网 > 安全子站 > 评论分析

利用注射技术攻击邮件服务器及防御措施

作者: 康凯,  出处:51cto, 责任编辑: 郭秋爽, 
2008-08-06 09:11
  本文将详细介绍通过跟邮件服务器通信的Web应用程序,即webmail应用来注入某些邮件协议(IMAP和SMTP协议)命令来攻击邮件服务器的原理、方法和防御措施。

  本文将详细介绍通过跟邮件服务器通信的Web应用程序,即webmail应用来注入某些邮件协议(IMAP和SMTP协议)命令来攻击邮件服务器的原理、方法和防御措施。

  一、Webmail应用程序的角色

  Webmail应用程序通过IMAP和SMTP协议来管理用户和他们的电子邮件之间的交互。从这一点来说,Webmail应用充当了客户应用程序和邮件服务器之间的代理角色。这个交互过程首先通过webmail应用程序来发送用户的身份凭证(注册号和口令)。此时,如果IMAP服务器支持使用“login”认证方式的话,那么Webmail应用程序会向IMAP服务器发送如下所示的命令:

AUTH LOGIN

  同样,这个应用程序还会将用户的各种动作(如访问邮箱、发送/删除电子邮件、退出邮箱等)转换成相应的IMAP和SMTP命令,然后把这些命令发送给相应的邮件服务器。然而,webmail应用程序的功能有限,所以用户只能生成该应用程序定义的选项所对应的那些IMAP或者SMTP命令。但是,用户却有可能改变被发送给邮件服务器的那些IMAP和SMTP命令。

  下面,就让我们来看一下这种技术的工作原理吧!

  二、邮件服务器注射技术原理

  与广为人知的诸如SQL注射、LDAP注射、SSI注射、XPath注射、CRLF注射等注射技术类似,邮件服务器注射技术也是通过一个对用户提供的数据没有严格检查的webmail应用程序将IMAP命令或者SMTP命令注射到邮件服务器。当通过webmail应用程序使用的后台邮件服务器无法直接经由Internet访问时,邮件服务器注射技术格外有用。

  要向邮件服务器注入命令,前提条件是允许用户通过webmail应用程序访问其端口25(SMTP)和143(IMAP)。

  邮件服务器注射来利用一个应用程序的攻击者来说,他们相当于直接访问了被防火墙隔离的原始电子邮件服务端口(即绕过了防火墙)。通过利用这种技术,攻击者可以进行各式各样的活动和攻击,至于到底能做哪些事情,这要取决于被注入命令的服务器的类型。之所以这样说,是因为Webmail应用会把来自用户的请求转换成各种IMAP和SMTP协议命令。下面介绍如何利用这两种协议。

  在进行IMAP注射时,注入的命令最终是由IMAP服务器执行的,所以命令必须遵循这个协议的格式和规范。Webmail应用程序为了完成客户请求的操作,必须跟IMAP服务器进行通信,这正是它们容易遭受这种攻击的原因。在用户验证身份的时候,webmail应用程序将用户的凭证传送到IMAP服务器,因此,利用IMAP服务器的验证机制,无需在该应用程序中具有一个有效帐户就能够进行IMAP注射。注入IMAP命令之前,用户必须找出跟邮件服务器通信时所用的所有参数,并弄清楚这些参数跟应用程序的功能的关系,如:

  ◆认证/登录/退出

  ◆邮箱操作(显示、阅读、创建、删除、重命名)

  ◆消息操作(阅读、复制、移动、删除)

  现在让我们看一个利用消息阅读功能来进行IMAP注射的例子。假定webmail应用程序使用参数“message_id”来存放用户想要阅读的消息的标识符。当一个包含消息标识符的请求发出时,该请求看起来像下面的样子:

http:///read_email.php?message_id=

  假如网页“read_email.php”负责显示有关消息,它直接把请求发给IMAP服务器,而不对用户提供的值做任何检验。这时发给邮件服务器的命令将是下面的样子:

FETCH BODY[HEADER]

  在这种情况下,我们就可以通过应用程序用来与邮件服务器通信的参数“message_id”来发动IMAP注射攻击。例如,可以利用下列命令来注入IMAP命令“CAPABILITY”:

http:///read_email.php?message_id=1
BODY[HEADER]%0d%0aZ900 CAPABILITY%0d%0aZ901 FETCH 1

  这将导致服务器执行下列IMAP命令:

FETCH 1 BODY[HEADER]
Z900 CAPABILITY
Z901 FETCH 1 BODY[HEADER]

  所以该服务器返回的页面显示的是在IMAP服务器中的“CAPABILITY”命令的结果:

* CAPABILITY IMAP4rev1 CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES
SORT QUOTA ACL ACL2=UNION
Z900 OK CAPABILITY completed

  三、SMTP注射

  这里,我们要向SMTP服务器注射命令,所以注入的命令必须遵循SMTP协议。由于这些活动是使用SMTP协议的应用程序所允许的,所以我们基本上就是去模仿发送电子邮件。要利用SMTP注射,用户必须事先通过认证,所以用户必须有一个有效的webmail帐户。

  通过SMTP发送电子邮件消息的格式如下:

  ◆发送方的e-mail地址

  ◆接收方的e-mail地址

  ◆主题

  ◆消息主体

  ◆附件

  下面是一个通过存放消息主题的参数来进行SMTP注射的例子。

  如前所述,这种技术的使用要求用户是经过认证的,并且可以针对发送电子邮件时的webmail参数进行SMTP命令注射。一般的,webmail应用程序会提供给用户一个表单,用户必须在表单中提供必要信息,这些信息将被发送给负责创建发送电子邮件所必需的原始SMTP命令的资源。

  发送电子邮件的请求一般如下所示:

POST http:///compose.php HTTP/1.1
...
-----------------------------134475172700422922879687252
Content-Disposition: form-data; name="subject"
SMTP Injection Example
-----------------------------134475172700422922879687252
...

  这将导致SMTP服务器执行下列命令:

MAIL FROM:
RCPT TO:
DATA
Subject: SMTP Injection Example
...

  如果webmail应用程序没有对参数“subject”中的值进行必要的验证,那么攻击者可以在其中注入额外的SMTP命令:

POST http:///compose.php HTTP/1.1
...
-----------------------------134475172700422922879687252
Content-Disposition: form-data; name="subject"
SMTP Injection Example
.
MAIL FROM: notexist@external.com
RCPT TO: user@domain.com
DATA
Email data
.
-----------------------------134475172700422922879687252
...

  上面注入的命令将生成一个将被发送给邮件服务器的SMTP命令序列,其中包含MAIL FROM、RCPT TO和DATA等命令,如下所示:

MAIL FROM:
RCPT TO:
DATA
Subject: SMTP Injection Example
.
MAIL FROM: notexist@external.com
RCPT TO: user@domain.com
DATA
Email data
.
...

  

共5页。 1 2 3 4 5 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。

邮件订阅


    • 解析Windows密码安全问题(第三部分)评论
      在前两部分文章中,我们讨论了Windows密码政策的问题以及它是如何在Active Directory环境被控制等问题,大家应该还记得在默认情况下密码政策和相关的设置位于默认域策略中(Default Domain Policy)。另外同样探讨了可以使用哪些技术破获windows密码,以及每种攻击方式的限制问题。那么,在本文中,我们将讨论如何让windows密码变得更加安全,以及如何能够解决在前两部分文章中出现的所有问题。本文将涉及Windows2002/2003/2008Active Directory默认安装带来的可能性以及其他能够整体提高密码安全的技术。
    • IDC创新和安全白皮书:合作或竞争评论
      业务创新是业务发展战略非常重要的一部分,并而日益成为公司保持竞争优势的决定性因素。由于创新的战略重要性,导致了我们越来越关注信息安全机制在抑制甚至扼杀业务创新方面起到的作用。IDC认为公司不仅是需要找到业务创新和有可能扼杀这种创新的信息安全机制,而且需要在这两者之间找到一个简洁的平衡来满足自己的业务需求。成功的企业能够在商业竞争中占有优势,是因为他们懂得去合理的利用两者使之成为一种具有杠杆作用的机制,而其它的企业只是单单强调其中的一个。
    • 预防企业数据丢失的6种最佳实践评论
      根据“私有权清算中心”(一家非赢利性消费者信息和倡导组织)的统计,自2005年1月以来,有将近2200万条记录遭到破坏。数据失窃和丢失案件数量惊人,这不仅是因为安全入侵事件正在以惊人的速度持续增长,数据丢失引发的财产损失事件也同样在飞速增加。根据美国政府的估计,所谓的“企业数据丢失”在去年使商业界损失了近1050亿美元。根据波尼蒙研究所(Ponemon Institute)的统计,仅仅内部人士导致的数据受损一项,每年给商业界造成的损失为平均每家公司3-4百万美元。产业分析公司Gartner集团估计,恢复数据的开销可以达到每条破坏记录150美元之高——这一数字还没有包括重拾客户信任和重建品牌价值、可能的罚款以及法律诉讼代理费的资金投入。在企业数据丢失案件有增无减的同时,公司也正在不断搜集更多数据,以求优化商业流程,改善客户服务,以及提升与合作伙伴的关系。更多的数据转化为相关数据在整个企业中数量不断增多的信息系统之间更广泛的传播。其结果就是——随着公司内外越来越多的用户获得接入系统的权限,敏感数据遭到破坏的风险也在不断增大。
    • RSA白皮书:管理银行的信息风险评论
      信息是银行的基础,但直到现在,金融机构还往往满足于以业务封闭式的方式管理风险。然而,行业的压力促使银行开始对这种战略展开思考。