龔老師的數理教室 未經授權查看使用者資料漏洞 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2024-00453
  •  發信 Vendor: 龔老師的數理教室
  • Title: 龔老師的數理教室 未經授權查看使用者資料漏洞
  • Introduction: 攻擊者可在未經授權情況下,透過枚舉登入他人使用者並查看該使用者之資料。

處理狀態

目前狀態

公開
Last Update : 2024/06/25
  • 新提交
  • 已審核
  • 已通報
  • 未回報修補狀況
  • 未複測
  • 公開

處理歷程

  • 2024/04/25 19:57:40 : 新提交 (由 Ping 更新此狀態)
  • 2024/04/25 19:58:14 : 新提交 (由 Ping 更新此狀態)
  • 2024/05/05 13:38:01 : 新提交 (由 Ping 更新此狀態)
  • 2024/05/05 13:38:20 : 新提交 (由 Ping 更新此狀態)
  • 2024/05/05 13:38:29 : 新提交 (由 Ping 更新此狀態)
  • 2024/05/05 13:38:47 : 新提交 (由 Ping 更新此狀態)
  • 2024/05/05 13:40:19 : 新提交 (由 Ping 更新此狀態)
  • 2024/05/05 13:45:45 : 新提交 (由 Ping 更新此狀態)
  • 2024/05/07 10:15:53 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/07 20:50:57 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/07 20:50:57 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/07 20:50:57 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/06/25 03:00:10 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2024-00453
  • 通報者:sun_yi_ping (Ping)
  • 風險:低
  • 類型:不安全的直接存取物件 (Insecure Direct Object References, IDOR)

參考資料

攻擊者可經由該漏洞取得系統中的其他使用者的資料或是系統檔案。

OWASP Top 10 - 2013 A4 - Insecure Direct Object References
https://www.owasp.org/index.php/Top_10_2013-A4-Insecure_Direct_Object_References

Insecure Direct Object Reference Prevention Cheat Sheet
https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Insecure_Direct_Object_Reference_Prevention_Cheat_Sheet.md

OWASP Top 10 - 2017 A5 - Broken Access Control
https://www.owasp.org/index.php/Top_10-2017_A5-Broken_Access_Control
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://gongclassroom.com/JustAsk/home/home.html
https://gongclassroom.com/htdocs/app_2.0_api/home/loginCheck.php

敘述

漏洞成因

網站使用使用者的姓氏、名字及 sID 進行登入驗證機制,並將其存放於 Cookie 中(見下圖),其中的 sID 為一個整數,代表使用者註冊序。

此驗證機制導致攻擊者在取得任一使用者的姓名後,可透過枚舉 sID 的值,在未經授權的情況下登入他人使用者帳號,並查看該使用者的資料。

圖片

漏洞前提

  • 取得使用者的姓名

攻擊步驟

  1. 打開 https://gongclassroom.com/JustAsk/home/home.html
  2. 此時網頁會對 https://gongclassroom.com/htdocs/app_2.0_api/home/loginCheck.php 發送 POST 請求封包。
  3. 修改 https://gongclassroom.com/htdocs/app_2.0_api/home/loginCheck.php 的 POST 封包。
    1. 將 Payload 中的 lastName(下圖第 28 行)及 firstName(下圖第 32 行)分別修改成使用者的姓氏及名字。
    2. 對 Payload 中的 sID 進行枚舉(下圖第 24 行),因目前該網站使用者未超過 1000 人,故僅需枚舉 1~1000 的整數即可。
  4. 比對不同 sID 的回應封包長度,即可得知該姓名使用者的 sID,並可成功在未經授權的情況下登入。
  5. 登入後攻擊者可任意的查看該姓名使用者的資料。

圖片

攻擊範例

為測試攻擊效果,故在此註冊了一個帳號,該帳號之姓氏為「王」,名字為「小白」,經查看 Cookie 後得知其 sID 為「713」。接著根據下方步驟進行攻擊,此攻擊可透過訪客身分,在無帳號密碼等正規授權方式下,爆破登入「王小白」的帳號:

  1. 打開 https://gongclassroom.com/JustAsk/home/home.html

  2. 此時網頁會對 https://gongclassroom.com/htdocs/app_2.0_api/home/loginCheck.php 發送 POST 請求封包。

  3. 修改 https://gongclassroom.com/htdocs/app_2.0_api/home/loginCheck.php 的 POST 封包。

    1. 將 Payload 中 lastName 的值(下圖第 27 行)修改成:
    2. 將 Payload 中 firstName 的值(下圖第 31 行)修改成:小白
    3. 將 Payload 中 sID 的值(下圖第 23 行)利用 Burp Suite 或 Python 等相關工具進行枚舉,因目前該網站使用者未超過 1000 人,故僅需枚舉 1~1000 的整數即可。直到 sID 之值為 713 時,其回應封包會顯示:

      {"success":true,"message":"\u767b\u5165\u6210\u529f","sID":"713","lastName":"\u738b","firstName":"\u5c0f\u767d"}

      若 sID 錯誤時,伺服器則會回傳:

      {"success":false,"message":"\u8acb\u91cd\u65b0\u767b\u5165","sID":"0","lastName":"","firstName":""}

      故可透過其回傳之封包內容或長度判斷是否成功登入。

      圖片

  4. 經過枚舉後得知 王小白 帳號的 sID713

  5. 將該網站的 Cookie 修改成以下內容:

    • lastName=王
    • firstName=小白
    • sID=713
  6. 重新打開連結:https://gongclassroom.com/JustAsk/home/home.html ,就成功在未經授權的情況下登入 王小白 的帳號,並查看該帳號使用者之資料。

圖片

修補建議

建議將 sID 使用 JWT 加密,以避免攻擊者透過枚舉爆破登入他人使用者帳號,並查看該使用者的資料。

CWE-284

擷圖

留言討論

聯絡組織

 發送私人訊息
您也可以透過私人訊息的方式與組織聯繫,討論有關於這個漏洞的相關資訊。
;