91网首页-91网页版-91网在线观看-91网站免费观看-91网站永久视频-91网站在线播放

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

OAuth2.0第三方賬號登錄原理及常見漏洞

admin
2025年5月13日 23:35 本文熱度 232

前言

目前,很多的系統在登錄的時候都支持通過第三方賬號登錄,如通過微信,qq,微博掃描登錄。這種一般都是通過OAuth2.0搭建完成的。

有一個問題需要思考:通過第三方應用登錄的過程是否存在一些安全問題?

本篇文章就來看看OAuth2.0的登錄原理以及可能存在的安全問題。

OAuth2.0登錄原理

Oauth2.0具有多種授權許可機制協議:授權碼許可機制、客戶端憑據機制、資源擁有者憑據機制(密碼模式)和隱式許可機制。

在了解授權許可機制協議之前,我們得需要了解在OAuth 2.0 的體系里面有 4 種角色,按照官方的稱呼它們分別是資源擁有者、客戶端、授權服務和受保護資源。

資源擁有者(可以指擁有資源的用戶)

客戶端(可以理解為第三方系統/軟件)

授權服務(權限校驗和授權系統(認證服務中心))

受保護資源(用戶在系統上所具有的資源/或者能夠訪問的資源)

授權碼許可機制

授權碼許可機制的參與者:資源擁有者、客戶端、授權服務、受保護資源

授權碼模式這種場景下的授權,第三方軟件可以通過拿到資源擁有者授權后的授權碼,以及注冊時的 client_id 和 client_secret 來換回訪問令牌 token 的值。

時序圖

?

下面以一個網站來看一下具體流程

1)打開網站,選擇使用微信登錄頁面

發送了下面的請求

每個參數的含義如下

  • appid:客戶端應用程序的唯一標識符的強制參數,此值是在客戶端應用程序向OAuth服務注冊時生成的。此值唯一,表示來自于那個客戶端。

用微信掃描登錄時需要再微信開放平臺(https://open.weixin.qq.com/)進行注冊,注冊完成以后可以拿到AppID和AppSecret兩個。

  • redirect_uri:向客戶端應用程序發送授權代碼時用戶瀏覽器應重定向到的URI,這也被稱為"回調URI"或回調端點"。在微信開放平臺填寫。
  • response_type:確定客戶端應用程序期望的響應類型以及它想要啟動的流,對于授權代碼授予類型,值應為代碼
  • scope:用于指定客戶端應用程序要訪問用戶數據的哪個子集,這些可能是由OAuth提供程序設置的自定義作用域,也可能是由OpenIDConnect規范定義的標準化作用域
  • state:用于存儲與客戶端應用程序上的當前會話綁定的唯一、不可更改的值,OAuth服務應該在響應中返回這個確切的值以及授權代碼,通過確保對其/callback端點的請求來自發起OAuth流的同一個人,此參數可作為客戶端應用程序的CSRF令牌形式

這里面可能存在的問題:

  • 沒有state參數,可能造成什么危害
  • redirect_uri是否可以偽造

2)跳轉到授權頁面,用戶手機上掃描二維碼

3)手機上確認以后,會返回一個授權碼(問題:掃描后看是否需要人工確認

返回授權碼

4)返回授權碼以后,前端攜帶這個授權碼到后端,后端就可以與微信端進行交互獲取運行的數據


資源擁有者憑據機制(密碼模式)

資源擁有者憑據,顧名思義就是資源擁有者的憑據(賬號,密碼)。在這場景里面就不存在第三方軟件這概念,相當于就是訪問系統中的一個子系統,他們之間互相信任。舉個例子來說就是,騰訊有許多的游戲,你只需要用qq賬號密碼就可以登錄游戲玩,不需要進行騰訊授權。因為該游戲是騰訊旗下的,他們相互信任的,所以不存在第三方的說法。

客戶端憑據機制的參與者:資源擁有者、客戶端、授權服務、受保護資源

時序圖

客戶端憑據機制

相當于就是第三方軟件訪問不需要資源擁有者授權的資源和數據,換句話說在這里客戶端也可以看作是資源擁有者。舉個例子來說就是第三方軟件訪問一些公共的服務,譬如說一些地圖信息,logo圖標等。

這種場景下的授權,便是客戶端憑據許可,第三方軟件可以直接使用注冊時的 client_id 和 client_secret 來換回訪問令牌 token 的值。

客戶端憑據機制的參與者:客戶端、授權服務、受保護資源

時序圖

隱式許可機制

隱式許可機制的場景適用于沒有后端服務的應用,舉個例子來說的話就是在瀏覽器中執行,譬如說JavaScript應用。

在這種情況下,第三方軟件對于瀏覽器就沒有任何保密的數據可以隱藏了,也不再需要應用密鑰 app_secret 的值了,也不用再通過授權碼 code 來換取訪問令牌 access_token 的值了。因此,隱式許可授權流程的安全性會降低很多。

這種場景下的授權,第三方軟件可以直接使用注冊時的 client_id來換回訪問令牌 token 的值。

時序圖

隱式授權類型要簡單得多。客戶端應用程序無需先獲取授權碼,然后再將其換成訪問令牌,而是在用戶同意后立即收到訪問令牌。

您可能想知道為什么客戶端應用程序并不總是使用隱式授權類型。答案相對簡單 - 它的安全性要低得多。使用隱式授權類型時,所有通信都通過瀏覽器重定向進行 - 沒有像授權代碼流中那樣的安全反向通道。這意味著敏感的訪問令牌和用戶數據更容易受到潛在攻擊。

OAuth 2.0的安全性考慮

1)重定向URI的安全性

重定向URI是客戶端接收授權碼和訪問令牌的地址。為了防止攻擊者攔截這些敏感信息,重定向URI應該使用HTTPS協議。此外,授權服務器應該只接受預先注冊的重定向URI,以防止攻擊者將用戶重定向到惡意網站。

2)訪問令牌的保護

訪問令牌是一個敏感的憑證,如果被攻擊者獲取,他們就可以訪問用戶的資源。因此,訪問令牌應該在所有傳輸過程中使用HTTPS協議進行加密,防止被竊聽。在存儲訪問令牌時,也應該使用適當的加密措施進行保護。

3)刷新令牌的使用和保護

刷新令牌通常有較長的有效期,甚至可以設置為永不過期。因此,如果刷新令牌被攻擊者獲取,他們就可以持續訪問用戶的資源。為了防止這種情況,刷新令牌應該只在后端服務中使用,不應該暴露給前端應用。此外,刷新令牌也應該在所有傳輸和存儲過程中進行加密保護。

4)CSRF攻擊和防范

CSRF(跨站請求偽造)是一種常見的網絡攻擊,攻擊者通過偽造用戶的請求來執行未經授權的操作。為了防止CSRF攻擊,OAuth 2.0的授權請求可以包含一個state參數,這是一個隨機生成的字符串,用于在授權服務器重定向回客戶端時驗證請求的合法性。客戶端在發送授權請求時生成state參數,并在接收授權響應時驗證它,如果不匹配,就拒絕響應。

OAuth常見漏洞

上面介紹了OAuth常見的一些模式,下面我們來分析一下,OAuth可能存在的問題。

1)CSRF攻擊

該攻擊一般出現的場景一般在登陸以后綁定微信的情況下。應用提供了用戶賬號和微信賬號做綁定的功能,也就是說用戶先用自己的賬號登錄,然后可以綁定微信賬號,以便后續可以使用微信賬號來登錄。

場景一:攻擊者首先通過自己的微信號獲取授權碼 code,然后偽造一個鏈接誘導受害者登錄以后點擊,那么受害者的賬號就會與攻擊者的微信號進行綁定,從而可以登錄受害者的賬號。


這個后果可想而知。那如何避免這種攻擊呢?方法也很簡單,實際上 OAuth 2.0 中也有這樣的建議,就是使用 state 參數,它是一個隨機值的參數。當應用請求授權碼的時候附帶一個自己生成 state 參數值,同時授權服務也要按照規則將這個隨機的 state 值跟授權碼 code 一起返回。這樣,當應用接收到授權碼的時候,就要在應用這一側做一個 state 參數值的比對校驗,如果相同就繼續流程,否則直接拒絕后續流程。

在這樣的情況下,軟件 A 要想再發起 CSRF 攻擊,就必須另外構造一個 state 值,而這個 state 沒那么容易被偽造。

這本就是一個隨機的數值,而且在生成時就遵從了被“猜中”的概率要極小的建議。

2)XSS攻擊

當請求抵達受保護資源服務時,系統需要做校驗,比如第三方軟件身份合法性校驗、訪問令牌 access_token 的校驗,如果這些信息都不能被校驗通過,受保護資源服務就會返回錯誤的信息。大多數情況下,受保護資源都是把輸入的內容,比如 app_id invalid、access_token invalid ,再回顯一遍,這時就會被 XSS 攻擊者捕獲到機會。

試想下,如果攻擊者傳入了一些惡意的、搜集用戶數據的 JavaScript 代碼,受保護資源服務直接原路返回到用戶的頁面上,那么當用戶觸發到這些代碼的時候就會遭受到攻擊。

因此,受保護資源服務就需要對這類 XSS 漏洞做修復,而具體的修復方法跟其它網站防御 XSS 類似,最簡單的方法就是對此類非法信息做轉義過濾

3)授權碼失竊

我們知道客戶端在獲取驗證碼后,會調用回調地址,然后客戶端服務器去獲取令牌。那么我們如果可以拿到別人的授權碼,是不是也可以偽造請求直接去獲取令牌了。

攻擊者劫持了授權碼之后,想要進一步獲取令牌,一般還需要請求上下文state:

  • 保證授權碼與請求上下文state一致

攻擊者只要想辦法實現上面兩點,就能輕松獲取令牌了。為了實現這一點,攻擊者攔截用戶授權請求,并將客戶端重定向uri指向自己的頁面,用戶完成身份認證和授權,如果授權服務器使用寬松的redirect_uri校驗,則會驗證通過生成一個授權碼,然后帶著授權碼和state信息重定向到攻擊者頁面,攻擊者拿到授權碼code和state后會偽造用戶向客戶端的請求(調用客戶端重定向地址),因為state和code都是受害用戶請求的,所以客戶端驗證通過并向授權服務器請求令牌,授權服務器接收到的請求會被認為是正常請求,校驗通過頒發token,客戶端獲取到token繼續請求受保護資源,資源服務器將返回請求資源,但是接收資源的人不是正常用戶,而是攻擊者!下面看一下這種攻擊的實現流程:

看到這里可能有一個疑問,我們如果去獲取授權code呢?


4)重定向URL被篡改

有的時候,授權服務提供方并沒有對第三方軟件的回調 URI 做完整性要求和完整性校驗。

比如,第三軟件 B 的詳細回調 URI 是https://app.org/callback,那么在完整性校驗缺失的情況下,只要以https://app.org開始或者其他域名的的回調 URI 地址,都會被認為是合法的。

那么我們就可以修改回調地址,然后誘導用戶去點擊這個鏈接,這樣當返回code的時候就會去回調我們修改后的地址,這樣就可以在服務器上看到其code。進而按照授權碼失竊來進行攻擊

問題:大部分的授權服務器都限制了url的host頭,如何進行利用?

第一種方式:結合任意url跳轉。如果驗證服務器沒有完全匹配,可以通過../這種方式改變路徑的。可以在頁面上找一個任意url跳轉漏洞,配合這種漏洞進行利用。

如下圖,通過../改變路徑,然后將跳轉的url指向我們的服務器,這樣就可以在服務器的日志上看到想要的內容

第二種方式:尋找可以留言的地方。然后將內容發送留言的內容中去獲取

5)登錄流程設計缺陷

登錄流程如果存在設計缺陷也可能會導致接管其它人的賬號。如掃描登錄時無需人員確認,那么就可以將二維碼發送給其他人誘導點擊。

portswigger案例

OAuth 隱式流程繞過身份驗證

https://portswigger.net/web-security/oauth/lab-oauth-authentication-bypass-via-oauth-implicit-flow

使用給的用戶名和密碼登錄

username=wiener&password=peter

這里只校驗了token,然后根據email判斷登錄用戶,我們替換email重放數據包就可以登錄到其它賬號

成功完成

其它的實驗內容可以看下面的鏈接

https://xz.aliyun.com/t/13349

總結

OAuth2.0的漏洞總體上來說就是下面的兩種

1)獲取到授權code,獲取授權code的方式就是未驗證回調url,這種方式比較困難

2)就是綁定微信時利用CSRF漏洞,將攻擊者的微信綁定到受害者的賬號上。這種需要與用戶有交互也比較困難。

一個安全的OAuth2.0認證應該做到下面的幾點

  • 授權碼使用一次之后將其銷毀
  • 授權服務器應該采用精確匹配的重定向URI校驗算法
  • 避免讓授權服務器成為開放重定向器,在非法的請求中直接返回錯誤而不是重定向


參考鏈接

https://blog.csdn.net/qq_43284469/article/details/132510807

https://blog.csdn.net/u010020088/article/details/143903471

https://cloud.tencent.com/developer/article/2418791

https://www.cnblogs.com/hellowhy/p/15533625.html

https://xz.aliyun.com/t/13349


閱讀原文:原文鏈接


該文章在 2025/5/14 9:24:58 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 国产精品178页 | 国产高清成人精品 | 国产精品桃花岛 | 国产欧美制服丝袜 | 国产亚洲人成a在 | 欧美性一区二区三区 | 91午夜在线观看 | 欧美日韩精品一 | 国产亚洲成a | 97青青| 每日更新国产 | 蜜桃传媒视频 | 欧美日韩每日更新 | 国内91精 | 国语国产自产精品 | 国产精品国语 | 国产午夜福利免 | 日本亚洲欧 | 国产激情中文在线 | 乱码女一区二区三区 | 精品精品| 91人成亚洲高清 | 国语自产偷拍精品视 | www.日本 | 人人草影院 | 中文字字幕 | 91碰碰视频 | 日韩成人激情影院 | 国产热女 | 国产在线拍揄拍无 | 成人精品一区二区三 | 蜜臀视频 | 福利导航网址在线 | 91精品国产区 | 国产天堂网在线视频 | 琪棋午夜理论免费 | 精品日韩| 亚洲无码午间福利小电影 | 日本中文在 | 国产中文字幕在 | 欧美亚洲综合视频 |