KKTV 網站可繞過付費牆漏洞 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2021-00116
  •  發信 Vendor: KKTV
  • Title: KKTV 網站可繞過付費牆漏洞
  • Introduction: 伺服器未確實驗證、可繞過付費牆取得付費內容

處理狀態

目前狀態

公開
Last Update : 2021/05/14
  • 新提交
  • 已審核
  • 已通報
  • 未回報修補狀況
  • 未複測
  • 公開

處理歷程

  • 2021/03/14 18:22:37 : 新提交 (由 鄉民 更新此狀態)
  • 2021/03/14 18:23:46 : 新提交 (由 鄉民 更新此狀態)
  • 2021/03/14 23:04:19 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2021/03/16 18:21:49 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2021/03/16 18:21:49 : 修補中 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2021/05/14 03:00:02 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2021-00116
  • 通報者:鄉民
  • 風險:低
  • 類型:存取控制缺陷 (Broken Access Control)

參考資料

攻擊者可經由該漏洞取得、修改、刪除系統中的其他使用者的資料,或連線至高權限使用者的頁面。

OWASP Top 10 - 2017 A5 - Broken Access Control
https://www.owasp.org/index.php/Top_10-2017_A5-Broken_Access_Control

CWE-284: Improper Access Control
https://cwe.mitre.org/data/definitions/284.html
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://www.kktv.me/play/01000425010003

敘述

POST https://api.kktv.me/v3/playback_tokens 取得的 playback_token 可用來向 https://license.kktv.com.tw/ 取得任意影片的 license 並播放該影片。

未付費使用者可透過 https://api.kktv.me/v3/titles/<title id>/episodes/<episode id>/mezzanine/manifests API 取得任意影片播放網址。其中 dash.url 雖然是有限制的低畫質網址,但可以透過將 .playback_p3.mpd 改成 .playback_p5.mpd 取得高畫質網址。

結合以上兩點,可以用下列方式繞過付費牆。

以觀看 我家女兒交不到男朋友!!第四集為例,此劇只有前三集提供免費觀看

  1. 使用 manifest API (https://api.kktv.me/v3/titles/<title id>/episodes/<episode id>/mezzanine/manifests) 取得欲觀看集數的 dash url
    • .data.episodes[0].dash.url: https://kktv-theater.kk.stream/25/01000425010004_dc565f05b80d8529940311bb5bc7cf59/161228680347ad915113_dash.playback_p3.mpd
  2. 將該 url 修改成可以取得高畫質影片的 url
    • https://kktv-theater.kk.stream/25/01000425010004_dc565f05b80d8529940311bb5bc7cf59/161228680347ad915113_dash.playback_p5.mpd
  3. 開啟任意免費內容網頁 (這邊用同劇第三集)
    • 透過 proxy 修改前述 manifest API 回傳內容、將 .data.episodes[0].dash.url 內容更換為步驟2. 取得的 url
  4. 即可觀看免費使用者應無法觀看的第四集,如下圖
    • 左上顯示需升級觀看完整集數(1-3以外)
    • 經過修改,實際播放內容為第四集,見影片截圖中右下的紅色愛心4

圖片

修補建議

提供 `playback_token` 的同時記錄該 `playback_token` 對應的 `episode_id`

license server 應檢查 client 提供的 `playback_token` 對應的 `episode_id` 是否與欲取得 license 的 `episode_id` 相同

擷圖

留言討論

聯絡組織

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