最初に
TryHackMeのRootMeに挑戦!
自分がためしたこと
まずはnamp。
2つのポートが開いていることと、Apacheのバージョンが確認できます
とりあえずHTTP接続してみると、以下のWebページがみれます
ソースページも見てみましたが、特に何もなかったですね。。。
お題の以下の文章もあるみたいですし、隠しディレクトリを探していきます
Find directories on the web server using the GoBuster tool.
(個人的にはgobusterよりもdirbの方が楽なので、こちらを使います)
気になるものに、panel
とuploads
があっAたので、アクセスしてみる
試しにtest.txtというテキストファイルを作成してアップロードしてみる
読めそうで読めない文章O arquivo foi upado com sucesso!
が。。。
調べてみるとポルトガル語のようです
Google翻訳してみるとファイルは正常にアップロードされました。
とあったので、アップロードは成功したようです
http://10.10.204.183/uploads/
を確認してみると、アップロードしたファイルがありました
ただ、ここからどうやってリバースシェルを張るのかがわからず、、、
あきらめてWriteupをみることにします。。。
Writeupを見てやったこと
ここまでで、Task1, 2はできたので、Task3から見ていきたいと思います。
参考にしたの以下のWriteupです!
https://beginninghacking.net/2020/09/09/try-hack-me-rootme/
Task3
リバースシェルをはる流れとしては以下になります
- リバースシェルを張るためのスクリプトをアップロード
- curlコマンドで、スクリプトをよびだして実行
curlコマンドで呼び出すと実行できるのか。。。初めて知った(;^ω^)
リバースシェルを張るためのスクリプトをアップロード
Webページがindex.phpで作成されていたことから、Kali Linuxに事前に用意されているPHPのリバースシェルを使います
これを作業用フォルダーにコピーした後にIPアドレスとポートをこちらの待ち受けているPCのものに変更します
アップロードしてみるとエラーが。。。
多分、PHPはだめだよって書いてある気がする
拡張子で判定されている可能性が高いため、内容は変えずにreverse_shell.php5と拡張子だけ変えてアップロードできた!
curlコマンドで、スクリプトをよびだして実行
以下のコマンドを実行
curl http://10.10.204.183/uploads/php-reverse-shell.php5
www-dataというユーザー名で、ルートディレクトリにいるようですね
探すファイルはuser.txtなので、find / -name user.txt
で全ディレクトリから検索したところ、以下のフォルダーにありそう
あとはcatしてあげれば答えがでてきます
Task4
Search for files with SUID permission, which file is weird?
まずSUIDってなに?となったので、調べてみた内容を別の記事にまとめました!
https://qiita.com/kgtakm/items/8f5e0f6666c0f471b294
ここでは簡単に下図で出力結果をもとに説明すると、usr/bin/python
にSUIDがセットされているので、コマンドでpython hoge.py
を実行するとroot権限で実行されてしまいます。
本来pythonはそんなことない(はず)なので、これが解答になります!
root.txt
探すファイル名はroot.txtでおそらく/root/root.txt
になっているだろうと思い、以下のコマンドを実行したところ、フラグが確認できました!
python -c "with open('../../root/root.txt', 'r') as file: print(file.read())"
最後に
今回学んだことは以下2つです!
- curlコマンドを使うことで、ファイルを実行できる
- SUIDやそもそも
ls -la
の出力を確認するきっかけになった
メモ
リバースシェルのチートシートのPHPのリバースシェルはうまく動かなかった、、、