悟空科技股份有限公司-誠和證件快照*水啦!* 照片上傳流程存在反射型 XSS - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2026-00955
  •  發信 Vendor: 悟空科技股份有限公司
  • Title: 悟空科技股份有限公司-誠和證件快照*水啦!* 照片上傳流程存在反射型 XSS
  • Introduction: 照片上傳流程中的參數存在反射型 XSS,攻擊者可構造惡意網址,在使用者瀏覽器中執行 JavaScript。

處理狀態

目前狀態

公開
Last Update : 2026/09/27
  • 新提交
  • 已審核
  • 已通報
  • 未回報修補狀況
  • 未複測
  • 公開

處理歷程

  • 2026/07/28 10:23:31 : 新提交 (由 更新此狀態)
  • 2026/08/03 12:19:51 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/08/05 18:56:19 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/08/05 18:56:19 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/08/05 18:56:19 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/09/27 03:00:03 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2026-00955
  • 通報者:S_Cyrus ()
  • 風險:中
  • 類型:反射型跨站腳本攻擊 (Reflected Cross-Site Scripting)

參考資料

攻擊者可經由該漏洞竊取使用者身份,或進行掛碼、轉址等攻擊行為。

漏洞說明: OWASP - Cross-site Scripting (XSS)
https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

防護原則: OWASP - XSS (Cross Site Scripting) Prevention Cheat Sheet
https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet

防禦繞過方式: OWASP - XSS Filter Evasion Cheat Sheet
https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://diy.goqoo.com.tw/QKPhoto/Chi/MainMenu.php
https://diy.goqoo.com.tw/QKPhoto/Chi/UploadFile6.php?ano=...
https://diy.goqoo.com.tw/QKPhoto/Chi/UploadFile7.php?ano=...

敘述

0. 摘要(Summary)

網站照片上傳流程存在反射型 XSS,受影響頁面包含:

  • /QKPhoto/Chi/UploadFile6.php?ano=...
  • /QKPhoto/Chi/UploadFile7.php?ano=...

在 ano 參數後加入:

"><script>alert(1)</script>

頁面載入後會連續顯示三次內容為 1 的彈窗,表示相同 Payload 在頁面中被執行三次。

經 Burp Suite 檢視回應內容,可確認同一個 ano 會被輸出至兩個 AlbumNo 隱藏欄位與一個上一頁連結,因此注入的 <script> 被反射三次。

使用:

"><script>alert(document.cookie)</script>

也會連續顯示三次目前 JavaScript 可存取的 Cookie,且可存取的值包含 PHPSESSID,表示其未設定 HttpOnly。


1. 受影響功能(Affected Feature)

  • 功能:照片上傳頁面
  • 受影響參數:ano
  • 受影響頁面:

    • UploadFile6.php
    • UploadFile7.php
  • 存取條件:無需登入
  • 反射位置:

    • 兩個 AlbumNo 隱藏欄位
    • 上一頁連結

2. 漏洞驗證之前置條件(Preconditions for Verification)

  • 修改網址列中的 ano 參數即可驗證
  • 無需登入帳號與特殊權限

3. 重現步驟(Steps to Reproduce)與概念驗證(Proof of Concept)

以下操作主要使用瀏覽器驗證,並使用 Burp Suite 確認參數在 HTML 回應中的反射位置。


步驟 1:進入照片上傳頁面

  1. 使用瀏覽器進入【誠和證件快照*水啦!*】網站首頁:
   https://diy.goqoo.com.tw/QKPhoto/Chi/MainMenu.php
  1. 點選【沖印生活照】或【加印證件照】,並任意選擇一種照片版型或規格後進入下一步。

  2. 頁面跳轉後,可觀察到網址類似:

   /QKPhoto/Chi/UploadFile6.php?ano=...

或:

   /QKPhoto/Chi/UploadFile7.php?ano=...

步驟 2:於 UploadFile6.php 執行 JavaScript

在網址列中的 ano 數值後加入:

"><script>alert(1)</script>

例如:

https://diy.goqoo.com.tw/QKPhoto/Chi/UploadFile6.php?ano=38097"><script>alert(1)</script>

送出後,頁面會顯示內容為 1 的對話框。

URL Encoding 版本:

https://diy.goqoo.com.tw/QKPhoto/Chi/UploadFile6.php?ano=38097%22%3E%3Cscript%3Ealert%281%29%3C%2Fscript%3E

圖片


步驟 3:於 UploadFile6.php 讀取 Cookie

將 Payload 改為:

"><script>alert(document.cookie)</script>

例如:

https://diy.goqoo.com.tw/QKPhoto/Chi/UploadFile6.php?ano=38097"><script>alert(document.cookie)</script>

頁面載入後,對話框會顯示目前 JavaScript 可存取的 Cookie,且包含 PHPSESSID 及其值,表示其未設定 HttpOnly。

圖片


步驟 4:於 UploadFile7.php 執行 JavaScript

在網址列中的 ano 數值後加入:

"><script>alert(1)</script>

例如:

https://diy.goqoo.com.tw/QKPhoto/Chi/UploadFile7.php?ano=38100"><script>alert(1)</script>

送出後,頁面同樣會顯示內容為 1 的對話框。

URL Encoding 版本:

https://diy.goqoo.com.tw/QKPhoto/Chi/UploadFile7.php?ano=38100%22%3E%3Cscript%3Ealert%281%29%3C%2Fscript%3E

圖片


步驟 5:於 UploadFile7.php 讀取 Cookie

將 Payload 改為:

"><script>alert(document.cookie)</script>

例如:

https://diy.goqoo.com.tw/QKPhoto/Chi/UploadFile7.php?ano=38100"><script>alert(document.cookie)</script>

頁面載入後,同樣可顯示包含 PHPSESSID 在內的 Cookie。

圖片


步驟 6:確認同一 Payload 會被反射至三個位置

使用 Burp Suite 檢視 HTTP Response,可看到 ano 中的 Payload 被伺服器直接輸出至 HTML。

在 UploadFile6.php 中,已確認三個反射位置:

  1. frmEdit 表單中的 AlbumNo:
   <input type="hidden" name="AlbumNo" value="...">
  1. frmUpload 表單中的 AlbumNo:
   <input type="hidden" name="AlbumNo" value="...">
  1. 上一頁連結:
   <a href="SelectLayout.php?ano=...">

圖片

在 UploadFile7.php 中,亦確認三個反射位置:

  1. frmEdit 表單中的 AlbumNo
  2. frmUpload 表單中的 AlbumNo
  3. 上一頁連結:
   <a href="SelectPhotoKind.php?ano=...">

圖片

這表示修補時應處理所有 ano 的輸出位置,而非只修補其中一處。


4. 預期行為(Expected Behavior)

ano 預期為數字,伺服器應拒絕包含其它字元的輸入。

即使參數被輸出至 HTML,也應經過適當編碼,不得改變原本的 HTML 結構或執行 JavaScript。


5. 實際行為(Actual Behavior)

伺服器會將 ano 未經適當編碼地輸出至 HTML。

攻擊者可使用 "> 結束原本的 HTML 屬性,並插入 <script> 執行 JavaScript。


6. 影響(Impact)

攻擊者可構造惡意網址並誘導使用者開啟,使 JavaScript 在 diy.goqoo.com.tw 網域下執行。

可能造成:

  • 讀取頁面內容
  • 讀取未設定 HttpOnly 的 Cookie
  • 修改頁面內容或顯示釣魚介面
  • 代替使用者送出同源請求

實測已確認 PHPSESSID 可由 document.cookie 讀取,但未進一步測試是否可用於 Session 冒用。


7. 可能的根本原因(Likely Root Cause)

後端將 ano 直接輸出至 HTML 屬性及連結,未進行格式驗證與適當的輸出編碼。


8. 嚴重性評估(Severity Assessment)

中風險(Medium)

理由:

  • 無需登入即可建立惡意網址
  • 可執行任意 JavaScript
  • 可讀取包含 PHPSESSID 在內的非 HttpOnly Cookie
  • 實際攻擊通常需要誘導使用者開啟網址
  • 尚未確認可直接接管 Session 或執行敏感操作

9. 補充說明(Researcher Note)

  1. 測試僅使用:
   alert(1)

與:

   alert(document.cookie)

且未將 Cookie 傳送至外部伺服器,亦未嘗試冒用 Session。

  1. 由於此系統與技術牽涉到兩家公司-誠和國際股份有限公司(https://www.seiwainc.com.tw/)與悟空科技股份有限公司(https://www.goqoo.com/)。就可見資料顯示(https://twincn.com/84108618與https://www.twincn.com/80682392),兩間公司經營者高度相關。但目前無法確定哪間公司統籌系統、技術與網站走向,因此建議同時聯絡兩間公司。

以下是兩間公司之相關信箱:

誠和國際:[email protected]
悟空科技:[email protected]
DIY證件照-台灣站(悟空科技):[email protected]

修補建議

## 修補建議(Remediation Suggestions)

1. 若 `ano` 只允許數字,應於伺服器端限制格式:

```regex
^[0-9]+$
```

2. 對所有輸出至 HTML 的 `ano` 進行適當編碼。

3. 全面修補兩個 `AlbumNo` 隱藏欄位及上一頁連結,不應只處理其中一處。

4. 檢查其它使用 `ano` 的頁面是否存在相同問題。

5. 為 `PHPSESSID` 設定:

```text
HttpOnly
Secure
SameSite
```

6. 修補後新增 XSS 回歸測試,確認特殊字元不會改變 HTML 結構或執行 JavaScript。

擷圖

留言討論

聯絡組織

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