Room: Boiler CTF
Difficulty: Medium
Show: Free
CTF形式(一部walkthrough)でマシン攻略しフラグを取得するタイプのRoomになります。
初期シェルを取得するまでにかなり苦労しました。
rabbit holeがかなりあるので、丁寧に列挙していく必要があります。
Questions #1
nmapにてポートスキャンを行いました。
nmap -v -p- -A -sV -T4 10.10.10.178
結果、21/tcp(ftp)、80/tcp(http)、10000/tcp(tcp)、55007/tcp(ssh)がオープンしていることがわかりました。
walkthroughの通り、ftpの列挙から進めていきます。
①File extension after anon login
nmapの結果から、21/tcp(ftp)のanonymous loginが有効になっていることがわかっていますので、アクセスします。
ls -la
にて「.info.txt」というファイルの存在を確認できましたので、get
コマンドで取得します。
walkthroughの解答は「txt」になります。
.info.txtを確認したところ、不可解な文章を取得しました。
見た目上、rot13にて暗号化されているようですので、復号していきます。
echo "Whfg jnagrq gb frr vs lbh svaq vg. Yby. Erzrzore: Rahzrengvba vf gur xrl!" | tr '[A-Za-z]' '[N-ZA-Mn-za-m]'
上図結果、rabbit holeだということがわかりました。
また、その他ftpより取得できる情報も無いようです。
②What is on the highest port?
nmapの結果よりsshであることがわかっています。
sshは比較的exploitできる脆弱性や取得できる情報が少なく、認証情報を取得した後のシェル取得に使う場合が多いので、列挙は後回しにします。
③What's running on port 10000?
nmapの結果よりwebmin ver1.930が稼働していることがわかっています。
④Can you exploit the service running on that port? (yay/nay answer)
searchsploit
コマンドにて検出したwebmin ver1.930にexploitがないか確認します。
結果、exploitは無いようです。
念のため、google検索も行っていきます。
webmin < 1.930にはRCEの脆弱性があるようですが、本バージョンにはexploitに繋がる脆弱性は無いようです。
ブラウザアクセスをしていきます。
表示通り、webサーバが稼働しているようですが、SSLで接続する必要があるようです。
また、「http(s)://ip-ipaddress.eu-west-1.compute.internal:10000/」の形でアクセスする必要があるようなので、hostsファイルを書き換え、アクセスします。
結果、webminのログイン画面が出てきました。
現状はUsername,Password共に取得できていない状況なので、ひとまず後回しにします。
その他、隠しディレクトリなども取得できなかったため、本解答は「nay」となります。
⑤What's CMS can you access?
では、本命の80/tcp(http)の列挙をしていきます。
まず、ブラウザでのアクセスです。
Apache2 Ubuntu Default Pageが出てきました。
当該ページ上では特に有用な情報は得られませんでしたので、gobuster
コマンドにて隠しディレクトリの列挙を行っていきます。
obuster dir -u http://10.10.10.178/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt -r -t 50
いくつか怪しいディレクトリやファイルを検出しました。
まずは本解答ですが、/joomlaが該当しそうです。
⑥Keep enumerating, you'll know when you find it.
列挙を続けていきます。
次に怪しげな/robots.txtへアクセスしていきます。
またもrabbit hole臭のする内容が表示されました。
下部の数列は何かを意味しそうです。
https://www.dcode.fr/cipher-identifier
に入れて分析後、ASCII→Base64→MD5の順にdecodeすると、「kidding」の文字列だということがわかりました。
これは恐らくrabbit holeでしょう。
注:ここからマシンのIPアドレスが「10.10.10.178」から「10.10.143.203」へ変わります。
その他、現状はexploitに繋がる情報はありませんでしたのでさらに列挙を続けていきます。
gobuster
にてCMS(joomla)下の隠しディレクトリを列挙します。
gobuster dir -u http://10.10.143.203/joomla/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -r -t 50
いくつか興味深いディレクトリを検出しました。
特に「/_****」は通常のjoomlaのrootディレクトリには見られませんのでアクセスしていきます。
まずは「_archive」です。
どうやらrabbit holeのようです。
続いて「_database」です。
またもrabbit hole臭がしますが、念のためデコードしていきます。
https://www.dcode.fr/rot-cipher
に入れて「JUSTMESSINGAROUND」だということがわかりました。やはりrabbit holeです。
続いて「_files」です。
これまたrabbit holeっぽいですが、念のためデコードしていきます。
base64で2回デコードしたところ「Whopsie daisy」だということがわかりました。rabbit holeです。
最後に「_test」です。
sar2htmlの画面が出てきました。
sar2htmlはOSのシステム統計(sarデータ)をプロットするツールです。
また、画面上のsar2ascii.tarを取得し、中を確認したところ、sar2htmlのバージョンは3.2.1でした。
searchsploit
コマンドにて当該バージョンのsar2htmlにexploitがないか確認したところ、RCEのexploitがあるようです。
⑦The interesting file name in the folder?
RCE可能なexploitがありましたので、悪用してさらに探索していきます。
searchsploit
コマンドのmオプションにてexploitをコピーし、実行していきます。
ls
コマンドを実行したところ、「/joomla/_test/」下の一覧を取得できました。
ログファイル「log.txt」がありましたので確認します。
SSHの認証情報を取得することができました。これでユーザ権限のシェルが取得できそうです。
ssh basterd@10.10.143.203 -p 55007
にて接続していきます。
無事、シェルを取得することが出来ました。
また、本解答は「log.txt」となります。
Questions #2
Where was the other users pass stored(no extension, just the name)?
SSHでログイン後、ls -la
にてホームディレクトリを確認したところ、「backup.sh」なる怪しげなシェルスクリプトを発見しました。
cat
コマンドにて中を確認したところ、別のユーザ(stoner)の認証情報を取得することができました。
本解答は「backup」となります。
user.txt
改めて取得したユーザのシェルを取得します。
su stoner
stonerのホームディレクトリへ移動後、ls
コマンドにてディレクトリ内を確認したところ、「.secret」というファイルを取得しました。
cat
コマンドにて中を確認したところ、flagのようなものを取得しました。
What did you exploit to get the privileged user?
ここからroot権限のシェル取得に向けて権限昇格を行っていきます。
linpeasを使用して列挙します。
まずはpythonにて簡易的なwebサーバを起動し、curl
コマンドを使用してlinpeas.shを対象サーバへ移動させます。
移動後、実行権限を与えて実行します。
結果を確認したところ、find
コマンドにSUIDが有効になっていることがわかりました。
GTFOBinsにて権限昇格用のコマンドを確認し、権限昇格を行います。
/usr/bin/find . -exec /bin/sh -p \; -quit
無事、root権限のシェルを取得することが出来ました。
本解答はfind
となります。