
Laboratorio basado en Docker que demuestra la ejecución remota de código CVE-2020-7247 en OpenSMTPD 6.6.1p1 con un PoC en Python para pruebas de seguridad educativas.
WHS 4기 박솔민
Enlace original: https://github.com/vulhub/vulhub/blob/43eae7170d09e7748c3aac64cd6a8e5af508a8ef/opensmtpd/CVE-2020-7247/README.md
OpenSMTPD es un programa servidor SMTP utilizado en sistemas operativos tipo Unix. Está disponible para BSD, macOS, GNU/Linux, etc., y funciona basándose en el protocolo SMTP RFC 5321.
CVE-2020-7247 es una vulnerabilidad de ejecución remota de comandos en OpenSMTPD causada por una validación insuficiente de las direcciones de remitente o destinatario. Un atacante puede enviar una solicitud SMTP manipulada para ejecutar comandos arbitrarios en el servidor.
Esta vulnerabilidad fue parcheada en la versión 6.6.2p1 de OpenSMTPD.
| Elemento | Contenido |
|---|---|
| Número de vulnerabilidad | CVE-2020-7247 |
| Software vulnerable | OpenSMTPD |
| Versión vulnerable | OpenSMTPD 6.6.1p1 |
| Tipo de vulnerabilidad | Ejecución remota de código |
| Entorno de práctica | Docker / Vulhub |
| Puerto utilizado | 8825:25 |
Ejecute el entorno vulnerable de OpenSMTPD con el siguiente comando.
docker compose up -d
Verifique que el contenedor se haya iniciado correctamente.
docker compose ps
Para comprobar que el servicio SMTP funciona correctamente, conéctese al puerto 8825.
nc 127.0.0.1 8825 -v
Si la conexión es exitosa, se mostrará el banner de OpenSMTPD como sigue.
220 <container-id> ESMTP OpenSMTPD
Utilice el código PoC para enviar un comando al servidor objetivo. En la práctica, se usó un comando no peligroso para crear el archivo /tmp/proof.txt.
python3 poc.py 127.0.0.1 8825 'touch /tmp/proof.txt'
Después, verifique si el archivo se ha creado dentro del contenedor.
docker compose exec smtpd ls -l /tmp/proof.txt
Si se confirma la existencia del archivo /tmp/proof.txt, significa que el comando enviado desde el exterior se ejecutó dentro del contenedor.
Se ha demostrado que, si la validación de entrada durante el procesamiento de solicitudes SMTP en OpenSMTPD es insuficiente, un atacante puede ejecutar comandos arbitrarios en el servidor mediante una solicitud manipulada.
Esta práctica se realizó únicamente en un entorno Docker local y no debe ejecutarse contra servidores reales o sistemas no autorizados.