|
| 1 | +# 身分驗證漏洞(Authentication Vulnerabilities) |
| 2 | + |
| 3 | +從概念上,身分驗證漏洞很好理解。但因為身分驗證和安全性直接存在明確的關係,因此相當重要。 |
| 4 | + |
| 5 | +身分驗證漏洞允許攻擊者取得敏感資料或敏感功能的權限。他們還公開了額外的攻擊面供利用,因此了解如何辨識和利用身分認證漏洞,並學習如何繞過常見的保護機制相當重要。 |
| 6 | + |
| 7 | +在這個章節中,將介紹: |
| 8 | + |
| 9 | +* 網站常見的身分驗證機制 |
| 10 | +* 這些驗證機制潛在的漏洞 |
| 11 | +* 不同驗證機制固有的漏洞 |
| 12 | +* 由於操作不適當造成的典型漏洞 |
| 13 | +* 如何使自己的驗證機制盡可能的強壯 |
| 14 | + |
| 15 | +## 什麼是身分驗證? |
| 16 | + |
| 17 | +身分驗證是一個驗證使用者或客戶端的過程。網站很有可能暴露給任何能夠連上網際網路的人。這使得強壯的身分驗證機制,成為網路安全不可或缺的元素。 |
| 18 | + |
| 19 | +以下有三種主要的身分驗證類型: |
| 20 | + |
| 21 | +* Something you **know**:例如密碼或回答安全問題。有時也稱為「knowledge factors」。 |
| 22 | +* Something you **have**:這是物理的物件,例如手機號碼或安全 Token。有時也稱為「prossession factors」。 |
| 23 | +* Something you **are** or do:例如你的生物特徵或行為模式。有時也稱為「inheerence factors」。 |
| 24 | + |
| 25 | +身分驗證透過一系列技術驗證上述其中一個或多個因子(factor)。 |
| 26 | + |
| 27 | +### 身分驗證(Authentication)與授權(Authorization)有什麼區別? |
| 28 | + |
| 29 | +身分驗證是驗證使用者是否是他們要求的身分的過程;授權涉及驗證使用者允許做哪些行為。 |
| 30 | + |
| 31 | +例如:身分驗證可以確定使用者 `Carlos123` 存取網頁時,存取者是否與創建此使用者為同一人。 |
| 32 | + |
| 33 | +一旦使用者 `Carlos123` 通過驗證,權限將決定他被授權可以做什麼。例如,他可能被授權可以存取其他使用者的個人資訊,或執行刪除其他使用者帳號等操作。 |
| 34 | + |
| 35 | +## 身分驗證漏洞是如何產生的? |
| 36 | + |
| 37 | +身分驗證機制中大多數的漏洞是以下兩種之一產生的: |
| 38 | + |
| 39 | +* 身分驗證機制脆弱,因為他無法充分的保護暴力攻擊。 |
| 40 | +* 邏輯缺陷或錯誤的程式撰寫允許攻擊者完全繞過身分驗證機制。有時也稱為「broken authentication」。 |
| 41 | + |
| 42 | +在許多 Web 開發領域,邏輯錯誤會導致網站出現意料之外的行為,這有可能導致安全問題。然而,身分驗證對安全相當重要,所以有缺陷的身分驗證邏輯會使安全問題暴露。 |
| 43 | + |
| 44 | +## 身分驗證漏洞會造成什麼影響? |
| 45 | + |
| 46 | +身分驗證漏洞會造成很多影響。如果攻擊者繞過驗證或暴力破解取得其他使用者帳號,就能夠擁有被盜帳號者的所有資料和功能。如果攻擊者能夠入侵高權限的帳號(例如系統管理者),他將能夠控制整個應用,並有可能取得內部架構的權限。 |
| 47 | + |
| 48 | +即使只破壞了低權限的帳號,也會使攻擊者能夠存取他不應該擁有的資料,例如敏感的商業資訊。即使該帳號沒有權限存取任何敏感資料,仍然可能允許攻擊者存取其他頁面,從而提供更多攻擊面。通常高嚴重性的攻擊不可能從公開存取的頁面,但可能來自內部的頁面。 |
| 49 | + |
| 50 | +## 身分驗證機制漏洞 |
| 51 | + |
| 52 | +網站的身分驗證系統通常由多個不同的機制組成,其中可能出現漏洞。有些漏洞在所有情況下都適用,其他的則是透過提供的特定功能。 |
| 53 | + |
| 54 | +我們將更仔細研究以下常見的一些漏洞領域: |
| 55 | + |
| 56 | +* 密碼登入的漏洞(password-based login) |
| 57 | +* 多重驗證的漏洞(muti-factor authentication) |
| 58 | +* 其他驗證機制的漏洞 |
| 59 | + |
| 60 | +很多 Labs 需要你列舉使用者名稱並暴力破解密碼。我們提供了[帳號](https://portswigger.net/web-security/authentication/auth-lab-usernames)及[密碼](https://portswigger.net/web-security/authentication/auth-lab-passwords)的字典檔,你需要使用這些字典檔來解決 Labs。 |
| 61 | + |
| 62 | +## 密碼登入的漏洞(password-based login) |
| 63 | + |
| 64 | + |
| 65 | + |
| 66 | +## 第三方身分驗證機制的漏洞 |
| 67 | + |
| 68 | +如果你很喜歡破解身分驗證機制並且已經完成所有身分驗證的題目,你可能會像嘗試 OAuth 身分驗證的 Labs。 |
| 69 | + |
| 70 | +> [!note] |
| 71 | +> |
| 72 | +> [OAuth authentication](https://portswigger.net/web-security/oauth) |
| 73 | +
|
| 74 | +## 防止對你自己的身分驗證機制的攻擊 |
| 75 | + |
| 76 | +我們已經展示了網站因實施身份驗證的方式而可能存在漏洞的幾種方式。為了降低你自己的網站遭受此類攻擊的風險,應該嘗試遵守幾項原則。 |
| 77 | + |
| 78 | +> [!note] |
| 79 | +> |
| 80 | +> [如何使身分驗證機制安全](https://portswigger.net/web-security/authentication/securing) |
0 commit comments