SMTP协议的漏洞分析

前言

SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是互联网中用来发送电子邮件的标准通信协议。

SMTP 的作用

SMTP 是电子邮件从客户端发往邮件服务器,以及邮件服务器之间转发邮件时使用的协议。例如:

  1. 当你在邮箱客户端(如 Outlook、Foxmail 或手机邮箱 App)写好邮件并点击“发送”时,SMTP 会把邮件发送到收件人的邮件服务器;

  2. 然后,接收方的邮件服务器再通过 IMAP 或 POP3 协议将邮件提供给收件人读取。


SMTP 的关键特点

特点 说明
协议类型 应用层协议
端口号(常见) 默认使用 TCP 的 25 端口;加密传输通常使用 465(SSL)或 587(STARTTLS)端口
数据格式 纯文本(包括邮件头和正文)
传输方向 主要负责“发送”而非“接收”

SMTP 发送流程示意:

[发件人客户端] --SMTP--> [发件人邮件服务器] --SMTP--> [收件人邮件服务器] --IMAP/POP3--> [收件人客户端]

常见的 SMTP 应用场景

  • 网站发送注册验证邮件

  • 应用程序发送告警邮件

  • 企业自动化报告邮件发送


1. CVE-2025-3434

漏洞描述:

由于 1.8 之前(包括 1.8)的所有版本,适用于 WordPress 的 SMTP 插件都容易受到通过电子邮件日志存储的跨站点脚本的攻击,这是由于输入清理和输出转义不充分。这使得未经身份验证的攻击者能够在页面中注入任意 Web 脚本,这些脚本将在用户访问注入的页面时执行。

WordPress 是一个开源的内容管理系统(CMS),最初是为博客设计,但现已发展成为功能强大的网站构建平台。

漏洞类型:

CWE-79: Improper Neutralization of Input During Web Page Generation (‘Cross-site Scripting’)

描述:

在网页生成期间不正确地中和输入(“跨站点脚本”),在将用户可控制的输入放入用作提供给其他用户的网页的输出之前,该铲平不会中和或错误地中和用户可控的输入。

Diagram for CWE-79


2. CVE-2025-22800

漏洞描述:

Post SMTP中缺少授权漏洞Post SMTP 允许利用错误配置的访问控制安全级别。此问题影响到Post SMTP:n/a 到2.9.11。

Post SMTP 简介

Post SMTP 是一款流行的 WordPress 插件,专门用于改善和替代 WordPress 默认的邮件发送功能。以下是关于它的详细介绍:

基本功能

  1. SMTP 邮件发送:通过外部 SMTP 服务器发送 WordPress 邮件,替代 PHP 的 mail() 函数
  2. 邮件投递可靠性:提供比 WordPress 默认邮件系统更可靠的邮件发送机制
  3. 邮件日志:记录所有外发邮件的状态和详细信息
  4. 失败通知:当邮件发送失败时向管理员发送警报

漏洞类型:

CWE-862: Missing Authorization

描述:

缺少授权,当参与者尝试访问资源或执行操作时,产品不糊执行授权检查。

Diagram for CWE-862


3. CVE-2024-9511

漏洞描述:

FluentSMTP – WP SMTP 插件与 Amazon SES、SendGrid、MailGun、Postmark、Google 和任何适用于 WordPress 的 SMTP 提供程序插件在所有版本(包括 2.2.82)中都容易受到 PHP 对象注入的攻击,方法是在“formatResult”函数中反序列化不受信任的输入。这使得未经身份验证的攻击者可以注入 PHP 对象。易受攻击的软件中不存在已知的 POP 链。如果 POP 链通过目标系统上安装的附加插件或主题存在,则可能允许攻击者删除任意文件、检索敏感数据或执行代码。该漏洞已在版本 2.2.82 中部分修补。

POP链(Property-Oriented Programming Chain,面向属性编程链)是一种利用PHP对象反序列化漏洞进行攻击的技术,通常与反序列化漏洞结合使用,以实现任意代码执行、文件操作或敏感数据泄露。

formatResult 是 FluentSMTP 插件中用于格式化 SMTP 邮件发送结果的函数,主要功能包括:

  • 解析邮件服务商(如 Amazon SES、SendGrid)返回的响应数据
  • 将原始响应转换为 WordPress 可处理的格式(如成功/失败状态、错误消息)
  • 记录日志或返回给调用者

漏洞类型:

CWE-502: Deserialization of Untrusted Data

描述:

不受信任数据的反序列化,该产品反序列化不受信任的数据,但未充分确保生成的数据有效。

img