如何利用注射技術(shù)攻擊郵件服務(wù)器 |
發(fā)布時間: 2012/6/15 17:42:32 |
本文將詳細介紹通過跟郵件億恩科技服務(wù)器通信的Web應用程序,即webmail應用來注入某些郵件協(xié)議(IMAP和SMTP協(xié)議)命令來攻擊郵件億恩科技服務(wù)器的原理、方法和防御措施。 一、Webmail應用程序的角色 Webmail應用程序通過IMAP和SMTP協(xié)議來管理用戶和他們的電子郵件之間的交互。從這一點來說,Webmail應用充當了客戶應用程序和郵件億恩科技服務(wù)器之間的代理角色。這個交互過程首先通過webmail應用程序來發(fā)送用戶的身份憑證(注冊號和口令)。此時,如果IMAP億恩科技服務(wù)器支持使用“login”認證方式的話,那么Webmail應用程序會向IMAP億恩科技服務(wù)器發(fā)送如下所示的命令: AUTH LOGIN 同樣,這個應用程序還會將用戶的各種動作(如訪問郵箱、發(fā)送/刪除電子郵件、退出郵箱等)轉(zhuǎn)換成相應的IMAP和SMTP命令,然后把這些命令發(fā)送給相應的郵件億恩科技服務(wù)器。然而,webmail應用程序的功能有限,所以用戶只能生成該應用程序定義的選項所對應的那些IMAP或者SMTP命令。但是,用戶卻有可能改變被發(fā)送給郵件億恩科技服務(wù)器的那些IMAP和SMTP命令。 下面,就讓我們來看一下這種技術(shù)的工作原理吧! 二、郵件億恩科技服務(wù)器注射技術(shù)原理 與廣為人知的諸如SQL注射、LDAP注射、SSI注射、XPath注射、CRLF注射等注射技術(shù)類似,郵件億恩科技服務(wù)器注射技術(shù)也是通過一個對用戶提供的數(shù)據(jù)沒有嚴格檢查的webmail應用程序?qū)MAP命令或者SMTP命令注射到郵件億恩科技服務(wù)器。當通過webmail應用程序使用的后臺郵件億恩科技服務(wù)器無法直接經(jīng)由Internet訪問時,郵件億恩科技服務(wù)器注射技術(shù)格外有用。 要向郵件億恩科技服務(wù)器注入命令,前提條件是允許用戶通過webmail應用程序訪問其端口25(SMTP)和143(IMAP)。 郵件億恩科技服務(wù)器注射來利用一個應用程序的攻擊者來說,他們相當于直接訪問了被防火墻隔離的原始電子郵件服務(wù)端口(即繞過了防火墻)。通過利用這種技術(shù),攻擊者可以進行各式各樣的活動和攻擊,至于到底能做哪些事情,這要取決于被注入命令的億恩科技服務(wù)器的類型。之所以這樣說,是因為Webmail應用會把來自用戶的請求轉(zhuǎn)換成各種IMAP和SMTP協(xié)議命令。下面介紹如何利用這兩種協(xié)議。 在進行IMAP注射時,注入的命令最終是由IMAP億恩科技服務(wù)器執(zhí)行的,所以命令必須遵循這個協(xié)議的格式和規(guī)范。Webmail應用程序為了完成客戶請求的操作,必須跟IMAP億恩科技服務(wù)器進行通信,這正是它們?nèi)菀自馐苓@種攻擊的原因。在用戶驗證身份的時候,webmail應用程序?qū)⒂脩舻膽{證傳送到IMAP億恩科技服務(wù)器,因此,利用IMAP億恩科技服務(wù)器的驗證機制,無需在該應用程序中具有一個有效帳戶就能夠進行IMAP注射。注入IMAP命令之前,用戶必須找出跟郵件億恩科技服務(wù)器通信時所用的所有參數(shù),并弄清楚這些參數(shù)跟應用程序的功能的關(guān)系,如: ◆認證/登錄/退出 現(xiàn)在讓我們看一個利用消息閱讀功能來進行IMAP注射的例子。假定webmail應用程序使用參數(shù)“message_id”來存放用戶想要閱讀的消息的標識符。當一個包含消息標識符的請求發(fā)出時,該請求看起來像下面的樣子: http:///read_email.php?message_id= 假如網(wǎng)頁“read_email.php”負責顯示有關(guān)消息,它直接把請求發(fā)給IMAP億恩科技服務(wù)器,而不對用戶提供的值做任何檢驗。這時發(fā)給郵件億恩科技服務(wù)器的命令將是下面的樣子:
在這種情況下,我們就可以通過應用程序用來與郵件億恩科技服務(wù)器通信的參數(shù)“message_id”來發(fā)動IMAP注射攻擊。例如,可以利用下列命令來注入IMAP命令“CAPABILITY”:
這將導致億恩科技服務(wù)器執(zhí)行下列IMAP命令:
所以該億恩科技服務(wù)器返回的頁面顯示的是在IMAP億恩科技服務(wù)器中的“CAPABILITY”命令的結(jié)果: * CAPABILITY IMAP4rev1 CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES 三、SMTP注射 這里,我們要向SMTP億恩科技服務(wù)器注射命令,所以注入的命令必須遵循SMTP協(xié)議。由于這些活動是使用SMTP協(xié)議的應用程序所允許的,所以我們基本上就是去模仿發(fā)送電子郵件。要利用SMTP注射,用戶必須事先通過認證,所以用戶必須有一個有效的webmail帳戶。 通過SMTP發(fā)送電子郵件消息的格式如下: ◆發(fā)送方的e-mail地址 下面是一個通過存放消息主題的參數(shù)來進行SMTP注射的例子。 如前所述,這種技術(shù)的使用要求用戶是經(jīng)過認證的,并且可以針對發(fā)送電子郵件時的webmail參數(shù)進行SMTP命令注射。一般的,webmail應用程序會提供給用戶一個表單,用戶必須在表單中提供必要信息,這些信息將被發(fā)送給負責創(chuàng)建發(fā)送電子郵件所必需的原始SMTP命令的資源。 發(fā)送電子郵件的請求一般如下所示: POST http:///compose.php HTTP/1.1 這將導致SMTP億恩科技服務(wù)器執(zhí)行下列命令: MAIL FROM: 如果webmail應用程序沒有對參數(shù)“subject”中的值進行必要的驗證,那么攻擊者可以在其中注入額外的SMTP命令: POST http:///compose.php HTTP/1.1 上面注入的命令將生成一個將被發(fā)送給郵件億恩科技服務(wù)器的SMTP命令序列,其中包含MAIL FROM、RCPT TO和DATA等命令,如下所示:
對于郵件函數(shù)的注射之前人們就討論過,但說得最多的還是PHP的mail()函數(shù)中的CRLF注射。然而,這些文章直到現(xiàn)在僅對某些部位進行注射,如email頭部注射等。這種類型的注射允許一個人進行各種的操作(發(fā)送匿名電子郵件、垃圾郵件/轉(zhuǎn)發(fā)等等)。實際上,使用郵件億恩科技服務(wù)器注射技術(shù)也能達到這些目的,因為它們都是基于同種類型的弱點。與之相比,郵件億恩科技服務(wù)器注射技術(shù)的過人之處是能向受影響的郵件億恩科技服務(wù)器注射所有命令,而沒有任何限制。就是說,這種利用技術(shù)不僅允許對電子郵件頭部進行注入(“From :”、“Subject :”、“To :”等),而且還可以向跟webmail應用程序通信的郵件億恩科技服務(wù)器(IMAP/SMTP)注入任意的命令。 郵件億恩科技服務(wù)器注射遠勝過對webmail應用程序提供的功能的“簡單”濫用,例如發(fā)送大量電子郵件等。這種技術(shù)允許人們執(zhí)行webmail應用程序提供的常規(guī)動作之外的額外的動作,如通過IMAP命令引起郵件億恩科技服務(wù)器的緩沖區(qū)溢出等。對于滲透測試人員來說,注入任意的命令是他們夢寐以求的,因為這在某些情況下可以完全控制郵件億恩科技服務(wù)器,以便對其各種弱點進行測試。 五、發(fā)動攻擊 下面我們用實例來解釋不同類型的郵件億恩科技服務(wù)器攻擊方法,以及郵件億恩科技服務(wù)器注射技術(shù)示例。這樣的實例曾發(fā)生在SquirrelMail(1.2.7和1.4.5版本)和Hastymail(1.0.2和1.5版本)這兩種Webmail應用程序上。因為SquirrelMail團隊已經(jīng)廢止了SquirrelMail的1.2.7版本,而推薦的最低版本為1.4.6,因為之前的版本都有弱點。Hastymail在1.5之前的所有版本都容易受到SMTP和IMAP注射的影響,所以要經(jīng)常檢查最新的補丁。SquirrelMail和Hastymail團隊在收到這些問題的通知后,都迅速進行了修正。不久之后,Nessus發(fā)布了一個檢查這種弱點的插件。 實施攻擊時,必須經(jīng)過以下兩個步驟: 確定出一個有弱點的參數(shù); 了解它的作用范圍。 (一)發(fā)現(xiàn)有弱點的參數(shù) 識別有弱點的參數(shù)的方法可以采用其他類型注射所采用的方法:試探法。也就是說,要發(fā)送具有異常值(應用程序的非預期值)的請求給原始IMAP和SMTP命令所用到的每個可疑參數(shù),然后分析其行為,從而找出可以利用的參數(shù)。下面舉例說明。 當用戶要訪問SquirrelMail中的收件箱(INBOX)時,所用的請求如下所示: http: //src/right_main.php?PG_SHOWALL=0&sort=0&startMessage=1&mailbox=INBOX 如果用戶用下列方式修改參數(shù)“mailbox”的值: http:///src/right_main.php?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”正在被執(zhí)行。利用這個方法,我們可以推斷出參數(shù)“mailbox”具有郵件億恩科技服務(wù)器注射漏洞,準確來說是容易受到IMAP注射的攻擊。在其他情況下,有弱點的參數(shù)的檢測和利用沒有這么明顯。例如,當用戶訪問它們的Hastymail收件箱時,相應的請求如下所示: http:///html/mailbox.php?id=7944bf5a2e616484769472002f8c1&mailbox=INBOX 如果用戶用下列方式修改參數(shù)“mailbox”的值: http:///html/mailbox.php?id=7944bf5a2e616484769472002f8c1&mailbox=INBOX" 應用程序?qū)⒒貞铝邢ⅲ?/p> Could not access the following folders: INBOX\" To check for outside changes to the folder list go to the folders page 在此種情況下,添加引號并沒有改變應用程序的行為。結(jié)果跟用戶已經(jīng)注入其他任何字符時一樣: http:///html/mailbox.php?id=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:///html/mailbox.php?id=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,來替換上面的單字符形式: 本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |