Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2024-00452
- Vendor: 龔老師的數理教室
- Title: 龔老師的數理教室 未經授權登入使用者帳號漏洞
- Introduction: 攻擊者可在未經授權的情況下,透過枚舉法登入他人使用者帳號。
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
未回報修補狀況
-
未複測
-
公開
處理歷程
- 2024/04/25 19:52:00 : 新提交 (由 Ping 更新此狀態)
- 2024/04/25 19:52:41 : 新提交 (由 Ping 更新此狀態)
- 2024/04/25 19:53:50 : 新提交 (由 Ping 更新此狀態)
- 2024/05/05 13:32:24 : 新提交 (由 Ping 更新此狀態)
- 2024/05/05 13:33:14 : 新提交 (由 Ping 更新此狀態)
- 2024/05/05 13:40:03 : 新提交 (由 Ping 更新此狀態)
- 2024/05/05 13:46:37 : 新提交 (由 Ping 更新此狀態)
- 2024/05/07 19:10:12 : 新提交 (由 Ping 更新此狀態)
- 2024/05/07 19:11:28 : 新提交 (由 Ping 更新此狀態)
- 2024/05/07 19:11:55 : 新提交 (由 Ping 更新此狀態)
- 2024/05/07 19:13:30 : 新提交 (由 Ping 更新此狀態)
- 2024/05/07 19:14:17 : 新提交 (由 Ping 更新此狀態)
- 2024/05/07 19:16:13 : 新提交 (由 Ping 更新此狀態)
- 2024/05/10 16:16:55 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2024/05/29 17:10:15 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2024/05/29 17:10:15 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2024/06/25 03:00:08 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2024-00452
- 通報者: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/htdocs/app_2.0_api/home/loginCheck.php
敘述
漏洞成因
網站使用使用者的姓氏、名字及 sID 進行登入驗證機制,並將其存放於 Cookie 中(見下圖),其中的 sID 為一個整數,代表使用者註冊序。
此驗證機制導致攻擊者在取得任一使用者的姓名後,可透過枚舉 sID 的值,在未經授權的情況下登入他人使用者帳號。
漏洞前提
- 取得使用者的姓名
攻擊步驟
- 打開 https://gongclassroom.com/JustAsk/home/home.html。
- 此時網頁會對 https://gongclassroom.com/htdocs/app_2.0_api/home/loginCheck.php 發送 POST 請求封包。
- 修改 https://gongclassroom.com/htdocs/app_2.0_api/home/loginCheck.php 的 POST 封包。
- 將 Payload 中的
lastName(下圖第 28 行)及firstName(下圖第 32 行)分別修改成使用者的姓氏及名字。 - 對 Payload 中的
sID進行枚舉(下圖第 24 行),因目前該網站使用者未超過 1000 人,故僅需枚舉 1~1000 的整數即可。
- 將 Payload 中的
- 比對不同
sID的回應封包長度,即可得知該姓名使用者的sID,並可成功在未經授權的情況下登入。
攻擊範例
為測試攻擊效果,故在此註冊了一個帳號,該帳號之姓氏為「王」,名字為「小白」,經查看 Cookie 後得知其 sID 為「713」。接著根據下方步驟進行攻擊,此攻擊可透過訪客身分,在無帳號密碼等正規授權方式下,爆破登入「王小白」的帳號:
-
此時網頁會對 https://gongclassroom.com/htdocs/app_2.0_api/home/loginCheck.php 發送 POST 請求封包。
-
修改 https://gongclassroom.com/htdocs/app_2.0_api/home/loginCheck.php 的 POST 封包。
- 將 Payload 中
lastName的值(下圖第 27 行)修改成:王。 - 將 Payload 中
firstName的值(下圖第 31 行)修改成:小白。 -
將 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":""}故可透過其回傳之封包內容或長度判斷是否成功登入。
- 將 Payload 中
-
經過枚舉後得知
王小白帳號的sID為713。 -
將該網站的 Cookie 修改成以下內容:
- lastName=王
- firstName=小白
- sID=713
-
重新打開連結:https://gongclassroom.com/JustAsk/home/home.html ,就成功在未經授權的情況下登入
王小白的帳號了。
修補建議
建議將 sID 使用 JWT 加密,以避免攻擊者透過枚舉爆破登入他人使用者帳號。
CWE-284