Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
jellyfin-ffmpeg-colonslash — Jellyfin Server 12.2 - 높음 - .strm 배치 후 원격 - FFmpeg 인자 주입 - EncodingUtils -i GHSA-wwwm의 잔여물 | Kitploit
도구/GitHubGitHub/abraxas/jellyfin-ffmpeg-colonslash
Vulnerability AnalysisExploitationWeb Application ExploitationSecurity VirtualizationPenetration TestingLabs & Practice
GitHubabraxas/jellyfin-ffmpeg-colonslash

jellyfin-ffmpeg-colonslash

Jellyfin Server 12.2 - 높음 - .strm 배치 후 원격 - FFmpeg 인자 주입 - EncodingUtils -i GHSA-wwwm의 잔여물

저장소 보기
11일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - jellyfin-ffmpeg-colonslash

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  jellyfin-ffmpeg-colonslash

jellyfin-ffmpeg-colonslash

분류: FFmpeg 인자 주입 도달 범위: 라이브러리 .strm 심기 이후 원격 (스캔된 미디어 폴더의 작성자, 이후 비인증 스트림)

Jellyfin Server v12.2 (ca0f16eb7c195f720a1493ed469a27c4657db0c6) - Jellyfin. 이미지 jellyfin/jellyfin:12.2.

GHSA-wwwm-px48-fpvq / PR 17685는 변환 argv와 file: -i 분기에 EscapeProcessArgument를 추가했습니다. Non-File 프로토콜은 여전히 해당 이스케이프 없이 원시 경로를 따옴표로 감쌉니다 (EncodingUtils.cs:14-71). ManagedFileSystem.IsPathFile은 file://이 아닌 ://에 대해 false입니다. TranscodeManager는 여전히 ProcessStartInfo.Arguments를 하나의 문자열로 구성합니다.

첫 줄이 "를 포함하는 http URL인 스캔된 라이브러리 .strm은 Http로 분류됩니다. Uri.TryCreate는 해당 URL을 허용합니다. 비인증 GET /Videos/{id}/stream (static 없음)이 ffmpeg를 시작합니다. 실험실 로그는 다음과 같습니다:

-i "http://127.0.0.1/a" JELLYFIN-FFMPEG-COLONSLASH-WITNESS "x"

LabControl.mkv 제어는 하나의 인수로 유지됩니다: -i file:"/media/movies/LabControl.mkv".

://가 포함된 POSIX 파일명은 이 싱크에 도달하지 않습니다. 슬래시는 파일명이 될 수 없습니다. 랩에서 심은 a://b"…"x.mkv는 /media/movies/a:/b"…"x.mkv로 저장되며 이스케이프된 File 분기를 탑니다. 콜론슬래시가 포함된 파일명 변형을 제출하지 마십시오. 플러그인-DLL RCE를 주장하는 것이 아닙니다. 랩은 argv 분할만을 입증합니다.

Jellyfin 12.2 leftovers 시리즈의 남은 #4.

ID아직 CVE 없음
분류FFmpeg 인수 주입 (CWE-88)
도달라이브러리 .strm 심기 후 원격, 이어서 비인증 스트림
CWECWE-88
CVSS높음: 7.1 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N
제품Jellyfin Server
영향받음v12.2 (ca0f16eb) 이미지 jellyfin/jellyfin:12.2
인증심기에는 라이브러리 작성자; 스트림은 비인증
라이선스GNU Affero GPL v3.0
랩127.0.0.1 전용

공격자가 할 수 있는 일

GHSA-wwwm과 동일한 심기 모델: 스캔되는 미디어 폴더(NAS / Samba / 게스트 공유)에 .strm을 작성합니다. 그런 다음 서버에 TCP로 접속할 수 있는 누구나 Authorization도 static도 없이 GET /Videos/{id}/stream을 호출할 수 있습니다. 이것이 전체 권한 집합입니다. 이 목록의 어느 것도 셸이나 플러그인-DLL RCE가 아닙니다.

축메서드 + 경로부여출처
무결성 / argv라이브러리 .strm 심기 후 비인증 GET /Videos/{id}/stream-i 따옴표 밖의 추가 ffmpeg 인수랩 입증. TranscodeManager 로그
정찰동일 + -vf drawtext=textfile=트랜스코드 내 호스트 파일 바이트추론된 가젯; 실행되지 않음
무결성-attach / -dump_attachmentjellyfin-UID 쓰기추론됨; 플러그인 로드 미입증
RCE주장하지 않음--

이 남은 항목이 부여하지 않는 것

  • 셸 없음. ProcessBuilder 없음. 플러그인-DLL RCE 없음. 과거 GHSA-866x 체인은 역사적이며 여기서 입증되지 않습니다.
  • 따옴표만 있는 File 경로는 File 분기에서 이스케이프된 상태로 유지됩니다.
  • ://가 포함된 POSIX 파일명은 디렉터리(a:)와 파일이 됩니다. 정규 Path에는 ://가 없으므로 이스케이프된 file: -i 분기를 탑니다.
  • GHSA-jh22 level TryParse는 종료되었습니다.
  • 코덱 쿼리 문자열은 여전히 정규식과 일치합니다.
  • .strm 로컬 / file:// 경로는 삭제됩니다(ProbeProvider는 http / https / rtsp / rtp만 유지).
  • EncoderAppPath는 인코딩 구성 API를 통해 설정할 수 없습니다.
  • 자막 업로드 .strm(GHSA-j2hf)은 종료된 상태로 유지됩니다.

발견 방법

jellyfin/jellyfin v12.2를 고정했습니다. 스무 번의 소스 탐색 후, 네 번의 독립적인 루프백 랩을 진행했습니다. PR 17685는 변환 argv와 file: -i를 이스케이프했습니다. Http / rtsp 래퍼는 "%s"로 남겨졌습니다. 처음 시도한 심기는 ://가 포함된 POSIX 파일명이었습니다. 그 심기는 디렉터리입니다. 실제로 발동하는 남은 항목은 URL에 이미 ://와 "가 포함된 .strm입니다.

잘못된 방향, 그 순서대로: GetFileInputArgument의 path.Contains("://") 단축을 파일명 버그로 취급한 것. 슬래시는 구분자입니다. File 분기는 이미 이스케이프합니다. 비-File 분기는 그렇지 않습니다.

이 고정 버전의 형제 항목들: jellyfin-suggestions-idor, jellyfin-svg-gzip, jellyfin-playlist-itemids.

랩

루프백 클라이언트: jellyfin-ffmpeg-colonslash-Abraxas-Labs.py. 스택: lab/ (docker-compose.yml, poc.py, run.sh). 승인된 랩 전용. 루프백과 통신합니다.

python3 jellyfin-ffmpeg-colonslash-Abraxas-Labs.py

또는:

cd lab
./run.sh

오직 http://127.0.0.1:18810만 대상으로 합니다. 이미지 jellyfin/jellyfin:12.2. Compose 프로젝트 jellyfin-ffmpeg-colonslash. Witness JELLYFIN-FFMPEG-COLONSLASH-WITNESS.

poc.py는 LabControl.mkv(대조군, 하나의 -i file:"...")와 URL이 http://127.0.0.1/a" JELLYFIN-FFMPEG-COLONSLASH-WITNESS "x인 LabPlant.strm을 작성합니다. 인증 없는 GET /Videos/{id}/stream(static 없음)은 따옴표 분리(quote-break)를 기록합니다. 마지막 줄:

SUCCESS jellyfin-ffmpeg-colonslash argv-split=yes plant-i=quote-break control-id=f603a52f649bcf822b333c4d5f21cc86 plant-id=d7aabf0935bb524e1667b1ff9bb945d9 JELLYFIN-FFMPEG-COLONSLASH-WITNESS

수정

Http 및 rtsp를 포함한 모든 GetInputArgument 분기에서 EscapeProcessArgument를 호출하세요. 래핑은 유지하되, file: 분기가 이미 하는 방식대로 내부 문자열을 따옴표 이스케이프하세요.

출처

  • MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs:14-71
  • Emby.Server.Implementations/IO/ManagedFileSystem.cs:533-541
  • MediaBrowser.MediaEncoding/Transcoding/TranscodeManager.cs:417-431
  • Jellyfin.Api/Controllers/VideosController.cs:314-318, 483-486
  • 관련된 형제 항목: GHSA-wwwm-px48-fpvq / PR 17685

연락처

Abraxas Labs - abraxaslabs.tech - github.com/abraxas - @abraxas_null - [email protected]

라이선스

GNU Affero GPL v3.0. LICENSE를 참조하세요. 루프백 실험실 전용입니다. 보증은 없습니다.

도구 다운로드