任意密碼重置漏洞

文章目錄

  • 1. 任意密碼重置漏洞原理
  • 2. 任意密碼重置漏洞產生原因
  • 3. 任意密碼重置漏洞場景
    • 3.1 驗證碼爆破
    • 3.2 驗證憑證回傳
    • 3.3 驗證憑證未綁是用戶
    • 3.4 跳過驗證步驟
    • 3.5 憑證可預測
    • 3.6 同時向多個賬戶發送憑證
  • 4. 任意密碼重置經典案例
    • 4.1 中國人壽某重要系統任意賬戶密碼重置
    • 4.2 米鼠網設計邏輯的缺陷可重置任意用戶密碼
  • 5. 權限繞過漏洞
    • 5.1 水平越權
    • 5.2 垂直越權

1. 任意密碼重置漏洞原理

廠商在對密碼修改功能設計的時候,未對修改密碼的憑證做嚴格的限制,導致可以被繞過進行任意的密碼修改。

2. 任意密碼重置漏洞產生原因

在這里插入圖片描述

3. 任意密碼重置漏洞場景

3.1 驗證碼爆破

表現:

  • 驗證碼四位,服務端未對驗證時間次數進行限制(出現次數比較多的地方);
  • 驗證碼六位,但是不過期(時間很久),并且沒有對驗證的次數進行限制;
  • 驗證碼可以發送多次,而且每次都不會過期。

利用:使用burp的爆破模塊即可,或者自己編寫腳本。

修復:使用六位驗證碼限制驗證碼認證次數

案例流程:

  • 重置密碼發送手機驗證碼
  • 發現驗證碼只有四位
  • 利用burp進行爆破
  • 爆破成功
  • 重置密碼

3.2 驗證憑證回傳

重置密碼時,憑證為發送到手機上的驗證碼,但是通過攔截發送驗證碼請求對應的Response包時,發現驗證碼在Response包中。

重點:注意是憑證,有時候可能返回包里面憑證可能在cookie里面或者也有可能在其他地方。

解決方案:修改包的返回規則

案例:DeDecms任意密碼重置

  • DeDecms是用戶使用最多的PHP類cms系統,CMS 系統,即內容管理系統(Content Management System),此次該CMS的任意密碼重置漏洞,通過遍歷UID的方式獲取返回的靜態gourl跳轉地址,而CMS未對更改密碼的跳轉地址進行參數隱藏導致更改密碼的臨時密碼被泄露,泄露以后構造URL傳入臨時密碼,可以不需要任何驗證即可更改任意用戶密碼。

3.3 驗證憑證未綁是用戶

輸入手機號和驗證碼進行重置密碼的時候,僅對驗證碼是否正確進行了判斷,未對該驗證碼是否與手機號匹配做驗證。

表現:

  • 1.任意賬號都能夠接收到驗證碼并能夠使用A手機的驗證碼,B可以拿來用
  • 2.A賬號的修改密碼連接,B賬號可以拿來用

修復:

  • 1.在服務器進行有效驗證,手機號和驗證碼在服務器進行唯─性綁定驗證。
  • 2.在服務端限制驗證碼發送周期,設置時效,限制次數

常見案例:

  • 首次登錄賬號之后需要你綁定郵箱、手機號等情況。
  • 在綁定的時候修改綁定的賬號id即可把自己的手機號等綁定到別人的賬號上面。

3.4 跳過驗證步驟

成因:對修改密碼的步驟,沒有做校驗,導致可以輸入最終修改密碼的網址,直接跳轉到該頁面,然后輸入新密碼達到重置密碼的目的。

測試:首先使用自己的賬號走一次流程,獲取每個步驟的頁面鏈接,然后記錄輸入新密碼的對應鏈接。重置他人用戶時,獲取驗證碼后,直接進入輸入新密碼對應鏈接到新密碼的界面,輸入密碼重置成功。

3.5 憑證可預測

token可預測:使用郵件接受重置密碼的鏈接時,一般都會帶有一個token用于判斷鏈接是否被修改過。如果token可以預測,那么攻擊者可以通過構造鏈接來重置任意的用戶密碼。

表現:

  • 1.基于時間戳生成的Token
  • 2.基于遞增序號生成的token
  • 3.基于關鍵字段生成的token
  • 4.token有規律
  • 5.驗證規則過于簡單

3.6 同時向多個賬戶發送憑證

將發送驗證碼的包截獲,修改字段添加多個賬戶,再發包。發現所寫的有效字段均發送了憑證。

4. 任意密碼重置經典案例

4.1 中國人壽某重要系統任意賬戶密碼重置

直接修改驗證返回包即可重置密碼,鏈接地址:https://cn-sec.com/archives/1557.html

其他相關案例:

  • 中國人壽任意用戶密碼重置二
  • 中國人壽任意用戶密碼重置(秒改)用戶保單信息全部泄漏

4.2 米鼠網設計邏輯的缺陷可重置任意用戶密碼

手機號沒有經過處理直接在請求包里看到,并且在源碼里找到重置密碼鏈接即可直接重置密碼。鏈接地址:http://cn-sec.com/archives/724.html

5. 權限繞過漏洞

越權漏洞的成因主要是因為開發人員在對數據進行增、刪、改、查詢時對客戶端請求的數據過分相信而遺漏了權限的判定。越權又可以分為兩種:水平越權垂直越權

5.1 水平越權

水平越權就是相同級別(權限)的用戶或者同一角色的不同用戶之間,可以越權訪問、修改或者刪除的非法操作。如果出現此類漏洞,那么將可能會造成大批量數據泄露,嚴重的甚至會造成用戶信息被惡意篡改。

比如同一公司的員工 A 和 B,分別只能查看自己的一些個人資料,但是如果系統存在水平越權漏洞,則 A 可以通過這樣個漏洞查看到 B 的資料。

水平權限漏洞一般出現在一個用戶對象關聯多個其他對象(個人資料、修改密碼,訂單信息,等)、并且要實現對關聯對象的 CRUD 的時候。開發容易習慣性的在生成 CRUD 表單(或 AJAX 請求)的時候根據認證過的用戶身份來找出其有權限的被操作對象 ID,提供入口,然后讓用戶提交請求,并根據這個 id 來操作相關對象。在處理 CRUD 請求時,往往默認只有有權限的用戶才能得到入口,進而才能操作相關對象,因此就不再校驗權限了。可悲劇的是大多數對象的 ID 都被設置為自增整型,所以攻擊者只要對相關 id 加 1、減 1、直至遍歷,就可以操作其他用戶所關聯的對象了。

案例:

  • 一次水平越權,導致平臺兩萬人被修改密碼
  • 小天才電話手表官網存在水平越權操作漏洞(影響用戶積分安全)

5.2 垂直越權

水平越權是相同級別的用戶之間的越權操作,而垂直越權則恰恰相反,是不同級別之間或不同角色之間的越權。

垂直越權又被分為向上越權向下越權。比如,某些網站,像發布文章、刪除文章等操作是屬于管理員做的事情,假設一個低權限用戶或者根本沒權限也可以做相同的事情,這就叫作向上越權,

向下越權與向上越權恰恰相反,向下越權是一個高級別用戶可以訪問一個低級別的用戶信息。這樣做似乎沒錯,而且很多網站都是這么做的,包括低級別密碼也可以被高級別用戶掌控,但這樣做可以說是完全錯誤!因為即使權限再低的用戶都有他自己的隱私,可能用戶為了更方便,會將自己的銀行卡號與密碼記錄在網站中,這些信息都屬于用戶的隱私。

案例:

  • Couchdb垂直權限繞過到命令執行

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/37800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/37800.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/37800.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【單元測試】Controller、Service、Repository 層的單元測試

Controller、Service、Repository 層的單元測試 1.Controller 層的單元測試1.1 創建一個用于測試的控制器1.2 編寫測試 2.Service 層的單元測試2.1 創建一個實體類2.2 創建服務類2.3 編寫測試 3.Repository 1.Controller 層的單元測試 下面通過實例演示如何在控制器中使用 Moc…

什么是死鎖以及如何避免

什么是死鎖? 死鎖是指兩個或兩個以上的進程在執行過程中,由于競爭資源或者由于彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。此時稱系統處于死鎖狀態或系統產生了死鎖,這些永遠在互相等待的進…

關于配置webpack eslint插件版本問題說明

webpack相關版本說明 按照當前情況下,以及eslint-webpack-plugin的官方版本使用的是8.x版本的eslint,我們進行如下依賴安裝 npm i -D eslint8 eslint-webpack-plugin "devDependencies": {"eslint": "^8.57.0","eslint-webpac…

簡單了解下Java中鎖的概念和原理

你好,這里是codetrend專欄“高并發編程基礎”。 Java提供了很多種鎖的接口和實現,通過對各種鎖的使用發現理解鎖的概念是很重要的。 Java的鎖通過java代碼實現,go語言的鎖通過go實現,python語言的鎖通過python實現。它們都實現的…

Apache Calcite Linq4j學習

Lin4j簡介 Linq4j是Apache Calcite項目中的一個模塊,它提供了類似于LINQ(Language-Integrated Query)的功能,用于在Java中進行數據查詢和操作。Linq4j可以將邏輯查詢轉換為物理查詢,支持對集合進行篩選、映射、分組等…

python自動例化verilog

python自動例化verilog 使用方法&#xff1a;在gvim頁面&#xff0c;使用命令自動例化 :r !AUTO_inst xxx.v #python import re import sysmdl_re r"\s*module\s*(?P<mname>\w) *" port_re r"\s*(?P<dir>input|output)\s(?P<typ>wire|re…

API-節點操作

學習目標&#xff1a; 掌握節點操作 學習內容&#xff1a; DOM節點查找節點增加節點刪除節點 DOM節點&#xff1a; DOM樹里每一個內容都稱之為節點。 節點類型 元素節點所有的標簽比如body、div&#xff1b;html是根節點屬性節點所有的屬性&#xff0c;比如href文本節點所有…

FastAPI-Cookie

fastapi-learning-notes/codes/ch01/main.py at master Relph1119/fastapi-learning-notes GitHub 1、Cookie的作用 Cookie可以充當用戶認證的令牌&#xff0c;使得用戶在首次登錄后無需每次手動輸入用戶名和密碼&#xff0c;即可訪問受限資源&#xff0c;直到Cookie過期或…

《PyTorch計算機視覺實戰》:一、二章

目錄 第一章&#xff1a;人工神經網絡基礎 比較人工智能和傳統機器學習 人工神經網絡&#xff08;Artificial Neural Network&#xff0c;ANN&#xff09; 是一種受人類大腦運作方式啟發而構建的監督學習算法。神經網絡與人類大腦中神經元連接和激活的方式比較類似&#xff0…

mysql查看用戶的過期時間

1. mysql查看用戶的過期時間的方法 在MySQL中&#xff0c;用戶的過期時間&#xff08;也稱為賬戶過期日期&#xff09;是一個可選項&#xff0c;用于確定某個MySQL用戶賬戶何時到期。但是&#xff0c;值得注意的是&#xff0c;并非所有的MySQL安裝或版本都支持直接設置用戶賬戶…

GoLang語言

基礎 安裝Go擴展 go build 在項目目錄下執行go build go run 像執行腳本文件一樣執行Go代碼 go install go install分為兩步&#xff1a; 1、 先編譯得到一個可執行文件 2、將可執行文件拷貝到GOPATH/bin Go 命令 go build :編譯Go程序 go build -o "xx.exe"…

CSS元素之間的空白問題:原因與解決方案

在網頁設計中&#xff0c;CSS元素之間的空白是一個常見但往往不易察覺的問題。空白不僅影響布局的準確性&#xff0c;還可能破壞設計的整體美感。本文將探討元素之間空白的產生原因&#xff0c;并提供有效的解決方案。 空白產生的根源 空白問題主要發生在行內元素和行內塊元素…

4.x86游戲實戰-人物狀態標志位

免責聲明&#xff1a;內容僅供學習參考&#xff0c;請合法利用知識&#xff0c;禁止進行違法犯罪活動&#xff01; 本次游戲沒法給 內容參考于&#xff1a;微塵網絡安全 上一個內容&#xff1a;3.x86游戲實戰-寄存器 人物狀態標志位&#xff1a; 什么叫人物狀態標志位&…

力扣刷題--3168. 候診室中的最少椅子數【簡單】

題目描述 給你一個字符串 s&#xff0c;模擬每秒鐘的事件 i&#xff1a; 如果 s[i] ‘E’&#xff0c;表示有一位顧客進入候診室并占用一把椅子。 如果 s[i] ‘L’&#xff0c;表示有一位顧客離開候診室&#xff0c;從而釋放一把椅子。 返回保證每位進入候診室的顧客都能有…

Leetcode[反轉鏈表]

LCR 024. 反轉鏈表 給定單鏈表的頭節點 head &#xff0c;請反轉鏈表&#xff0c;并返回反轉后的鏈表的頭節點。 示例 1&#xff1a; 輸入&#xff1a;head [1,2,3,4,5] 輸出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 輸入&#xff1a;head [1,2] 輸出&#xff1a;[2,1]示…

Go使用Gin框架開發的Web程序部署在Linux時,無法綁定監聽Ipv4端口

最近有寫一部分go語言開發的程序&#xff0c;在部署程序時發現&#xff0c;程序在啟動后并沒有綁定ipv4的端口&#xff0c;而是直接監聽綁定ipv6的端口。 當我用netstat -antup | grep 3601查找我的gin服務啟動的端口占用情況的時候發現&#xff0c;我的服務直接綁定了tcp6 &a…

240629_昇思學習打卡-Day11-Vision Transformer中的self-Attention

240629_昇思學習打卡-Day11-Transformer中的self-Attention 根據昇思課程順序來看呢&#xff0c;今兒應該看Vision Transformer圖像分類這里了&#xff0c;但是大概看了一下官方api&#xff0c;發現我還是太笨了&#xff0c;看不太明白。正巧昨天學SSD的時候不是參考了太陽花的…

LeetCode.30 串聯所有單詞的子串

問題描述 給定一個字符串 s 和一個字符串數組 words。 words 中所有字符串 長度相同。 s 中的 串聯子串 是指一個包含 words 中所有字符串以任意順序排列連接起來的子串。 例如&#xff0c;如果 words ["ab","cd","ef"]&#xff0c; 那么 &q…

MySQL Workbench支持哪些數據庫版本的連接?

MySQL Workbench支持哪些數據庫版本的連接&#xff1f; MySQL Workbench 是一款強大的數據庫管理和設計工具&#xff0c;它支持連接多種版本的 MySQL 數據庫。包括但不限于&#xff1a; MySQL 官方發行的所有版本&#xff0c;從 MySQL 5.0 到最新的 MySQL 8.x 和更高版本。 M…

Linux - 札記 - W10: Warning: Changing a readonly file

Linux - 札記 - W10: Warning: Changing a readonly file 這里寫目錄標題 一、問題描述1. 現象2. 原因 二、解決方案 一、問題描述 1. 現象 在使用 vim 編輯文件時&#xff08;我這里是要編輯 /root/.ssh/authorized_keys&#xff09;提示&#xff1a;W10: Warning: Changing…