PHPMailer远程代码执行漏洞(CVE-2021-3603)

发布时间 2021-06-21

0x00 漏洞概述

CVE     ID

CVE-2021-3603

时      间

2021-06-21

类      型

RCE

等      级

高危

远程利用

影响范围

PHPMailer <= 6.4.1  

攻击复杂度

可用性

用户交互

所需权限

PoC/EXP

已公开

在野利用

 

0x01 漏洞详情

image.png

PHPMailer是一个用于发送电子邮件的开源PHP库,可以设定发送邮件地址、回复地址、邮件主题、html网页及上传附件,使用起来非常方便,目前已被全球超过900万的用户使用。

2021年06月16日,PHPMaile发布安全公告,修复了PHPMailer中的2个远程代码执行漏洞(CVE-2021-3603和CVE-2021-34551),远程攻击者可以利用这些漏洞在系统上执行任意代码。

PHPMailer远程代码执行漏洞(CVE-2021-3603)

该漏洞的CVSSv3评分为8.1。validateAddress()函数用于验证电子邮件地址,如果validateAddress()的$patternselect参数被设置为'php'(默认值,由PHPMailer::$validator定义),并且全局命名空间包含一个名为php的函数,它将优先于同名的内置验证器被调用。远程攻击者可以通过构造恶意请求来利用此漏洞,从而可以在目标系统上执行任意代码。该漏洞已经在PHPMailer 6.5.0中通过拒绝使用简单字符串作为验证器函数名称来缓解。

 

PHPMailer远程代码执行漏洞(CVE-2021-34551)

如果setLanguage()方法的$lang_path参数未过滤用户输入且被设置为UNC路径,攻击者可以通过从该UNC路径加载文件来远程执行脚本或代码。此漏洞仅存在于可解析 UNC 路径的系统,通常仅适用于 Microsoft Windows。

 

影响范围

PHPMailer <= 6.4.1

 

0x02 处置建议

目前此漏洞已经修复,建议及时升级更新至PHPMailer 6.5.0。

下载链接:

https://github.com/PHPMailer/PHPMailer

 

通用安全建议

对代码进行安全审计,尽早检测潜在的安全漏洞,并增强代码逻辑性。

对用户的输入进行过滤或转义,避免参数可控。

用户应定期更新软件、程序和应用程序,确保应用程序是最新的,以保护系统免受漏洞利用。

 

0x03 参考链接

https://github.com/PHPMailer/PHPMailer/blob/master/SECURITY.md

https://github.com/PHPMailer/PHPMailer/commit/45f3c18dc6a2de1cb1bf49b9b249a9ee36a5f7f3

https://www.huntr.dev/bounties/1-PHPMailer/PHPMailer/

https://nvd.nist.gov/vuln/detail/CVE-2021-3603

 

0x04 时间线

2021-06-16  PHPMailer发布安全公告

2021-06-21  VSRC发布安全通告

 

0x05 附录

 

CVSS评分标准官网:http://www.first.org/cvss/

image.png