標籤:釣魚 影響 car sub bsp ace 另一個 指令 否則
Mail Header Injection (SMTP)
本地沒有搭環境,沒法示範,附上轉載的
https://www.acunetix.com/blog/articles/email-header-injection/
什麼是電子郵件標題注入?發表於 2017年5月3日由伊恩·馬斯喀特
通常的做法是網站實施聯絡表單,反過來將合法使用者的電子郵件發送給訊息的預期收件者。大多數情況下,這樣的聯絡表單將設定SMTP標題From,Reply-to以便讓收件者輕鬆處理聯絡表單中的通訊,就像其他電子郵件一樣。
不幸的是,除非使用者的輸入在插入SMTP頭之前被驗證,否則聯絡表單可能容易受到電子郵件頭插入(也稱為SMTP頭注入)的攻擊。這是因為攻擊者可以將額外的頭部注入到訊息中,從而指示SMTP伺服器執行與預期不同的指令。
以下PHP代碼是一種易受電子郵件頭部注入攻擊的典型連絡人表單的樣本。以下代碼將由網站訪問者提供的名稱和電子郵件地址,並準備電子郵件的標題列表。
使用From標題,以便電子郵件的收件者(在本樣本中為root @ localhost)將知道電子郵件作者是誰。回複標題允許電子郵件的收件者通過他們的電子郵件用戶端中的回複按鈕回複寄送電子郵件的人。
<?phpif(isset($_POST[‘name‘])){$name = $_POST[‘name‘];$replyto = $_POST[‘replyTo‘];$message = $_POST[‘message‘];$to = ‘[email protected]‘;$subject = ‘My Subject‘;// Set SMTP headers$headers = "From: $name \n" ."Reply-To: $replyto";mail($to, $subject, $message, $headers);}?>
典型的正版POST請求如下。
POST /contact.php HTTP/1.1Host: www.example.comname=Joe Bloggs&[email protected]&message=Example message
攻擊者可以通過發送以下POST請求來濫用此聯絡表單。
POST /contact.php HTTP/1.1Host: www.example.comname=Attacker\nbcc: [email protected]&[email protected]&message=Attacker message
在此樣本中,攻擊者正在插入分行符號(\n在\r\nWindows系統上的大多數UNIX和Linux系統上),並附加一個包含附加電子郵件地址的密碼SMTP標題,SMTP伺服器將向BCC寄送電子郵件。
攻擊者可以使用這樣的策略匿名發送大量訊息,甚至發送網路釣魚電子郵件,其中接收者認為這些訊息源自可信來源。還值得注意的是,此漏洞不限於PHP; 它可能會影響任何基於任意使用者輸入寄送電子郵件的應用程式。
檢測電子郵件頭部注入漏洞
為了自動檢測電子郵件頭部注入,我們需要依賴中介服務,因為檢測到這樣一個漏洞需要帶外和時間延遲的向量。Acunetix 在自動掃描期間通過使用AcuMonitor作為其中介服務來解決此問題。
在掃描期間,Acunetix將找到聯絡表單,並注入指向AcuMonitor電子郵件地址的自訂BCC SMTP標題。如果有問題的應用程式導致SMTP伺服器寄送電子郵件到AcuMonitor,那麼AcuMonitor知道它是易受攻擊的,它會發送一個通知回到Acunetix,表明它應該提高電子郵件頭插入警報。
減輕
減少電子郵件標題注入涉及驗證使用者輸入,不允許輸入中的任何分行符號,這將導致添加另一個SMTP標題。一般來說,當驗證使用者輸入時,實現強輸入驗證的最簡單和最強勁的方法是通過白名單中允許的字元用於SMTP標題。
分享這篇文章
bWAPP----Mail Header Injection (SMTP)