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