WHS 第4期 朴率民
OpenSMTPD 是一款用于 Unix 类操作系统的 SMTP 服务器程序。可在 BSD、macOS、GNU/Linux 等系统中使用,基于 RFC 5321 SMTP 协议运行。
CVE-2020-7247 是 OpenSMTPD 因对发件人或收件人地址的验证不充分而导致的远程命令执行漏洞。攻击者可发送精心构造的 SMTP 请求,在服务器上执行任意命令。
该漏洞已在 OpenSMTPD 6.6.2p1 版本中修复。
| 项目 | 内容 |
|---|---|
| 漏洞编号 | CVE-2020-7247 |
| 受影响软件 | OpenSMTPD |
| 受影响版本 | OpenSMTPD 6.6.1p1 |
| 漏洞类型 | Remote Code Execution |
| 实验环境 | Docker / Vulhub |
| 使用端口 | 8825:25 |
使用以下命令启动存在漏洞的 OpenSMTPD 环境。
docker compose up -d
确认容器是否正常运行。
docker compose ps
为了确认 SMTP 服务是否正常运行,连接 8825 端口。
nc 127.0.0.1 8825 -v
连接成功后,会输出如下 OpenSMTPD banner 信息。
220 <container-id> ESMTP OpenSMTPD
使用 PoC 代码向目标服务器传递命令。本次实验中使用了创建 /tmp/proof.txt 文件的命令,而非危险命令。
python3 poc.py 127.0.0.1 8825 'touch /tmp/proof.txt'
随后确认容器内是否生成了该文件。
docker compose exec smtpd ls -l /tmp/proof.txt
若能看到 /tmp/proof.txt 文件,则说明外部传入的命令已在容器内成功执行。
本实验确认,当 OpenSMTPD 在处理 SMTP 请求时输入验证不足,攻击者可通过精心构造的请求在服务器上执行任意命令。
本实验仅在本地 Docker 环境中进行,不得针对真实服务器或未经授权的系统实施。