2016-07-06 39 views
3

我們有這被標記爲這個忘記密碼頁面上的安全問題,用戶名:防止攻擊者獲得系統

ISS-0003938的Web檢查中打開可疑文件發現在 遞歸目錄*** ***從網絡中刪除任何不必要的頁面 服務器如果需要任何文件限制訪問那些不應該公開訪問的文件 刪除任何備份文件和 在服務器上進行開發測試的臨時文件請 刪除備份文件備用登錄文件,包含 功能的文件調整和任何開發人員使用的簡短文件。

被標記的文件是/js/pmailer_minimal.js原因,因爲在.js文件中有以下內容。

url: URL + '/login/forgot-password/request/'+ username, 

通過使用信息攻擊者就能夠開始列舉的用戶名,直到他們得到的響應成功消息。

該問題的最佳解決方案是什麼?我們會改變我們的迴應嗎?我們是否限制重試次數?還有什麼其他解決方案?

還應該考慮的是,如果攻擊者擁有用戶名,他可以嘗試進行暴力攻擊。

我在尋找儘可能多的建議來解決這個威脅。

回答

2

我會爲此添加一個pentester透視圖。

找到公司的人員列表非常簡單。只是谷歌LinkedIn等我甚至有一些潛在的密碼(密碼轉儲,愚蠢的密碼,如Pa $$ w0rd,公司名稱或其他常見模式)。

問題是將這些應用程序應用於隨機暴露的web應用程序。用戶名格式是first.lastname,email,firstinitiallastname還是別的。我將採取這些措施,並嘗試使用一些潛在的密碼的所有用戶。目標是獲得一個有效的登錄。然後,很容易從應用程序本身提取真實用戶的完整列表。

在登錄頁面上給出一個通用答案確實使我們的努力受挫。如果我可以得到正確的用戶名,我可以每個用戶嘗試多達24個密碼(每個用戶每個小時一個密碼,以避免鎖定)。沒有太多的機構在我嘗試的一天內沒有成功登錄。

如果我無法確定用戶名是否正確,那麼我必須爲每個潛在的密碼嘗試每個用戶名組合。所以我可能只能在每個潛在用戶嘗試3-4次密碼之後才付出太多努力。所以除非用戶選擇真正愚蠢的密碼,否則我可能不會進入應用程序。

有時你可以根據應用程序的其他部分檢查用戶名,尤其是密碼重置功能。有用的現場檢查,但不bruteforcing,因爲它通常發送電子郵件給用戶,並可能鎖定該帳戶,直到密碼重置。太多人通常會警告IT部門正在發生某些事情。

像其他人提到的那樣,我會把它列爲漏洞。如果我開始使用它,它會出現在報告中。如果沒有,我會告訴IT人員,但不要將它從報告中刪除。一些嘗試找到任何東西添加到報告中的筆試者確實會將其標記爲關鍵性的,並使其不成比例。

我通常建議的解決方案是爲總失敗登錄添加閾值。鎖定在每個用戶的基礎上都很好,在一段時間內很多登錄失敗。爲所有用戶嘗試密碼的人添加其他內容,例如在某段時間內XX獨特失敗的用戶登錄。總是有一些基本的噪音水平,但暴力攻擊很快就會變得非常明顯。

1

這是一個常見的已知問題。防止這種情況的最佳方式是顯示一條常規消息,如:

如果輸入的用戶名在我們的數據庫中是已知的,您將在幾分鐘內收到新密碼。

這樣,如果輸入的用戶名是 - 確實在您的數據庫中,'黑客'不知道。

+0

這是提出的建議之一,我只是想對此事做更多的研究。任何其他想法? – Albert

+0

那麼,用戶名是公共部分,所以我不會太擔心。另一種選擇是使用簡單的驗證碼和不使用JavaScript的系統。例如,可以使用PHP提供的表單處理程序,使用表單驗證碼,並檢查引用者是否爲有效的「忘記密碼」頁面。 –

+0

這是糟糕的用戶體驗,因爲許多用戶會錯誤輸入或誤解用戶名。然後,他們面臨着無限期地等待郵件發送失敗或被垃圾郵件過濾器捕獲的問題。由於您的電子郵件地址是有記錄的,因此可以選擇提供其電子郵件地址而不是用戶名。然後,您可以向他們發送一封電子郵件,通知他們未註冊該電子郵件地址,以便他們可以採取進一步措施解決問題。 – Jim

0

消息的推廣是Jan最好的選擇。

如果信息由您提供我們的記錄相匹配,您將在@收到 電子郵件恢復信息BC

你可以做的另一件事是計算請求恢復密碼生成來自相同的IP /會話等,如果頻繁出現,您可以阻止幾分鐘或幾小時。您也可以使用驗證碼選項來降低請求率。

1

我認爲,當筆測試人員渴望儘可能多地向其報告添加項目時,無論這些測試人員對業務有多大用處,這種風險都會被誇大。用戶名不是傳統上被認爲是祕密的,因此列舉它們並不是什麼大不了的事情。

我發現通常情況下,聲稱這是一個嚴重風險的人並沒有真正考慮過所有的後果。他們爲簡單的案例提供了一些建議,比如在最終用戶登錄失敗時向他們提供一個不太有用的錯誤消息,但他們錯過了需要對應用程序進行重大更改的更困難的情況。例如註冊 - 嘗試使用用戶名註冊,您可以確定它是否已經註冊。沒有快速簡單的解決方案,不會大幅改變用戶體驗(儘管在this question中列出了一些緩解措施)。

在這種特殊情況下,本具體一塊的功能,你可以要求他們的電子郵件地址,並在未註冊他們發送「未找到」的電子郵件。這可以防止枚舉通過此功能,同時仍然對忘記用戶名或註冊的電子郵件地址的用戶友好。但是,你可能會漏掉各地的用戶名(例如通過註冊),這只是冰山一角。我認爲風險/回報足夠低,這是在大多數情況下應該推遲的問題類型。用戶名不是祕密信息 - 您已經爲此獲得了密碼。

+0

感謝您的意見。給我更多的想法。 – Albert