TryHackMe Writeup：RootMe


# 最初に
TryHackMeのRootMeに挑戦！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/72b3b18f-4034-3ad6-5d8d-d75557231257.png)


# 自分がためしたこと

まずはnamp。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/b6c0fc40-3e37-4727-0eac-66c6f0b53bbc.png)

2つのポートが開いていることと、Apacheのバージョンが確認できます


とりあえずHTTP接続してみると、以下のWebページがみれます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/13299c35-e858-9ca2-0235-673b07027cff.png)

ソースページも見てみましたが、特に何もなかったですね。。。

お題の以下の文章もあるみたいですし、隠しディレクトリを探していきます
>Find directories on the web server using the GoBuster tool.

（個人的にはgobusterよりもdirbの方が楽なので、こちらを使います）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/72aa7fee-da95-9e66-0dda-ec405186606e.png)

気になるものに、`panel`と`uploads`があっAたので、アクセスしてみる

/panel の画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/a4d8ed94-7d92-b05a-737e-85b84a43ebd2.png)

/uploads の画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/06fe6e2b-a119-c14b-c1a6-fce97e4a520d.png)


試しにtest.txtというテキストファイルを作成してアップロードしてみる

テキストファイルの中身
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/0338e657-e92e-854f-047e-b30aae7b6085.png)


ファイルを選択してアップロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/5af20f41-99a6-86f2-f74f-b4526725907f.png)


読めそうで読めない文章`O arquivo foi upado com sucesso!`が。。。
調べてみるとポルトガル語のようです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/df6747f7-e787-122c-e2b6-993b651011b0.png)

Google翻訳してみると`ファイルは正常にアップロードされました。`
とあったので、アップロードは成功したようです

`http://10.10.204.183/uploads/`を確認してみると、アップロードしたファイルがありました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/26765910-4a14-7045-8b97-c131e0f3405a.png)

クリックすると中身がみれますね
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/f48ce5b0-5bec-1793-052a-568c8c8d15f5.png)


ただ、ここからどうやってリバースシェルを張るのかがわからず、、、

あきらめてWriteupをみることにします。。。



# Writeupを見てやったこと

ここまでで、Task1, 2はできたので、Task3から見ていきたいと思います。

参考にしたの以下のWriteupです！
https://beginninghacking.net/2020/09/09/try-hack-me-rootme/


## Task3


リバースシェルをはる流れとしては以下になります
1. リバースシェルを張るためのスクリプトをアップロード
1. curlコマンドで、スクリプトをよびだして実行

curlコマンドで呼び出すと実行できるのか。。。初めて知った(;^ω^)

### リバースシェルを張るためのスクリプトをアップロード


Webページがindex.phpで作成されていたことから、Kali Linuxに事前に用意されているPHPのリバースシェルを使います
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/be9ebad2-2011-e42d-9483-1872bd4ae3c9.png)




これを作業用フォルダーにコピーした後にIPアドレスとポートをこちらの待ち受けているPCのものに変更します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/e0c10b02-ad7b-3c3b-9e94-b40ea45aefa5.png)



アップロードしてみるとエラーが。。。
多分、PHPはだめだよって書いてある気がする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/47242923-f756-8180-e530-43004f485ceb.png)

拡張子で判定されている可能性が高いため、内容は変えずにreverse_shell.php5と拡張子だけ変えてアップロードできた！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/ec351117-41ca-0d98-76f0-d2f3bff7f19b.png)


### curlコマンドで、スクリプトをよびだして実行



netcatを使って4444ポートで待ち受けておきます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/7366c304-9b76-55fa-bf24-3984c1b024d7.png)

以下のコマンドを実行
```
curl http://10.10.204.183/uploads/php-reverse-shell.php5
```


うまくいったみたい！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/c44784d4-5178-da0c-0154-987e24180487.png)


www-dataというユーザー名で、ルートディレクトリにいるようですね
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/073c108a-801c-93f8-ee5f-6efb2be9e929.png)


探すファイルはuser.txtなので、`find / -name user.txt`で全ディレクトリから検索したところ、以下のフォルダーにありそう

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/c0e2a822-f614-239b-0ceb-00b9d5e46658.png)

あとはcatしてあげれば答えがでてきます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/2f10b728-a690-ef85-d23a-bcf58add75a4.png)


## 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権限で実行されてしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2152468/3e1cef63-c2cc-54be-eb0b-5273abca4d7b.png)

本来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`の出力を確認するきっかけになった



# メモ


[リバースシェルのチートシート](https://swisskyrepo.github.io/InternalAllTheThings/cheatsheets/shell-reverse-cheatsheet/#php)のPHPのリバースシェルはうまく動かなかった、、、