臺中市臨床心理師公會SQL注入與任意檔案下載 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2024-01109
  •  發信 Vendor: 臺中市臨床心理師公會
  • Title: 臺中市臨床心理師公會SQL注入與任意檔案下載
  • Introduction: SQL注入與任意檔案下載

處理狀態

目前狀態

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

處理歷程

  • 2024/09/15 05:52:53 : 新提交 (由 {{萌新}} 更新此狀態)
  • 2024/09/15 06:06:00 : 新提交 (由 {{萌新}} 更新此狀態)
  • 2024/09/15 13:30:55 : 新提交 (由 {{萌新}} 更新此狀態)
  • 2024/09/15 15:48:46 : 新提交 (由 {{萌新}} 更新此狀態)
  • 2024/09/15 15:50:52 : 新提交 (由 {{萌新}} 更新此狀態)
  • 2024/09/15 15:52:59 : 新提交 (由 {{萌新}} 更新此狀態)
  • 2024/09/16 14:35:06 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/10/04 18:08:39 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/10/04 18:08:39 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/10/04 18:08:39 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2024/11/15 03:00:02 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2024-01109
  • 通報者:nhd1261 ({{萌新}})
  • 風險:嚴重
  • 類型:任意檔案下載 (Arbitrary File Download)

參考資料

攻擊者可經由該漏洞取得後端系統中的任意資料(包含主機之敏感檔案)。

OWASP Top 10 - 2017 A5 - Broken Access Control
https://www.owasp.org/index.php/Top_10-2017_A5-Broken_Access_Control

OWASP Top 10 - 2013 A4 - Insecure Direct Object References
https://www.owasp.org/index.php/Top_10_2013-A4-Insecure_Direct_Object_References

CWE-284: Improper Access Control
https://cwe.mitre.org/data/definitions/284.html

OWASP - Path Traversal 及防禦方式
https://www.owasp.org/index.php/Path_Traversal

CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')
https://cwe.mitre.org/data/definitions/22.html
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://www.tcpsy.org.tw/newsInside.php?blogID=441
https://www.tcpsy.org.tw/downloadfile.php?file=&name=

敘述

可以透過修改file與name參數下載網站原始碼與系統文件,包括含有資料庫帳密的腳本。
https://www.tcpsy.org.tw/downloadfile.php?file=downloadfile.php&name=downloadfile.php
圖片
審計網頁代碼後發現整個網頁的SQL查詢語句都沒有在程式碼中對SQL注入做防護,嘗試注入成功,可獲得會員個資、帳號、md5加密密碼與對應鹽值,以及管理員帳號與md5加密密碼與對應鹽值。
Payload:
python sqlmap.py "https://www.tcpsy.org.tw/newsInside.php?blogID=441" --dbms=mysql --time-sec=10 --threads 10 --random-agent --dbs --batch
圖片

以下漏洞通過代碼審計推測,若是測試會造成會員密碼變更,對網站造成實際危害,故未進行測試。
1.密碼重製漏洞
通過代碼審計,得知密碼重製是根據帳號與e-mail確認身分,這兩者可透過SQL注入獲得,而以此發送密碼重置請求並確認身分後,網站會隨機產生一組新密碼並通過e-mail發送給會員,但根據程式內的新密碼產生規則,此新密碼為弱密碼,加上網頁未對登入次數做限制,可以對此進行爆破,或是透過SQL注入查詢到新的鹽值與md5加密密碼,再根據新密碼的產生規則進行比對,也能破解新密碼。
2.劫持密碼重置郵件(未實際操作,我也不確定可不可行)
透過審計的代碼發現密碼重製驗證身分時的程式碼也並未對注入做防護,攻擊者可能能夠利用SQL注入或HPP來修改目標帳戶的電子郵件地址,將目標使用者的郵件更改為攻擊者控制的電子郵件,以此獲得系統產生的新密碼。
3.郵件轟炸
密碼重置未設置次數或頻率上限,攻擊者可以利用此對會員e-mail進行郵件轟炸,若是劫持密碼重置郵件可以實現,甚至能對非會員的e-mail進行轟炸。

修補建議

禁止直接傳入檔案路徑: 應避免將使用者提供的檔名或路徑直接用於檔案系統操作。你可以設置一個安全的下載目錄,並限制只能從該目錄中下載檔案。
使用白名單機制: 建立一個允許下載的檔案白名單,僅允許特定類型的檔案(例如 .pdf, .docx)被下載,並且檔案名稱應在後端進行驗證。
防止目錄遍歷攻擊: 要過濾並拒絕任何包含相對路徑符號(如 ../ 或 ..\)的檔案請求,這些符號會使攻擊者能夠跳出指定的安全目錄。

使用準備語句 (Prepared Statements): 這是防止SQL注入的最佳方法。使用參數化查詢(Prepared Statements)可確保傳入的數據不會被解釋為SQL語句的一部分,從而有效防範SQL注入攻擊。
數據過濾與驗證: 對所有用戶輸入的數據進行嚴格的過濾和驗證,確保只接受符合預期格式的數據。
使用ORM(對象關聯映射): 可以考慮使用ORM框架(如Laravel、Django等),這些框架內建了防範SQL注入的機制,能夠自動處理SQL查詢中的特殊字符。

強化身份驗證: 建議加入多重身份驗證機制,不僅僅依賴帳號與電子郵件來驗證用戶身分,可以考慮加入驗證碼發送到預先綁定的手機號碼或e-mail等額外的驗證手段,成功驗證身份後再進行密碼重置。
增設登陸次數限制:對登陸次數進行限制,避免暴力破解。
增強隨機密碼生成: 使用更強的密碼生成器來創建重置密碼,並確保密碼符合安全要求(例如至少包含大小寫字母、數字及特殊字符,並具有一定長度)。
限制密碼重置請求次數: 在短時間內限制同一帳戶或IP地址的密碼重置請求數量,避免郵件轟炸攻擊。

修改可能已經洩漏的資料庫帳密、管理員帳密,並升級加密方式,使用更安全的hash算法。

擷圖

留言討論

聯絡組織

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