龔老師的數理教室 訪客無需授權可使用他人配額漏洞 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2024-00454
  •  發信 Vendor: 龔老師的數理教室
  • Title: 龔老師的數理教室 訪客無需授權可使用他人配額漏洞
  • Introduction: 攻擊者可從訪客身分,繞過驗證取得使用者之權限,並任意使用他人配額。

處理狀態

目前狀態

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

處理歷程

  • 2024/04/25 20:03:21 : 新提交 (由 Ping 更新此狀態)
  • 2024/05/05 13:41:16 : 新提交 (由 Ping 更新此狀態)
  • 2024/05/05 13:42:54 : 新提交 (由 Ping 更新此狀態)
  • 2024/05/05 13:43:37 : 新提交 (由 Ping 更新此狀態)
  • 2024/05/05 13:44:20 : 新提交 (由 Ping 更新此狀態)
  • 2024/05/05 13:45:13 : 新提交 (由 Ping 更新此狀態)
  • 2024/05/07 10:17:05 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/07 20:51:07 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/07 20:51:08 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/07 20:51:08 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/06/25 03:00:11 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2024-00454
  • 通報者:sun_yi_ping (Ping)
  • 風險:低
  • 類型:存取控制缺陷 (Broken Access Control)

參考資料

攻擊者可經由該漏洞取得、修改、刪除系統中的其他使用者的資料,或連線至高權限使用者的頁面。

OWASP Top 10 - 2017 A5 - Broken Access Control
https://www.owasp.org/index.php/Top_10-2017_A5-Broken_Access_Control

CWE-284: Improper Access Control
https://cwe.mitre.org/data/definitions/284.html
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

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

擷圖

留言討論

聯絡組織

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