编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

PHPMailer远程命令执行漏洞分析(phpmyadmin远程登录)

wxchong 2024-07-18 09:43:44 开源技术 8 ℃ 0 评论

摘要:PHPMailer是一个强大的PHP编写的邮件发送类,但近日被爆出远程命令执行漏洞,该漏洞实际上是什么,有何种影响,本文对该漏洞进行了分析及验证方法,并给出防护方案。

0x00 漏洞概要

PHPMailer是一个用于发送电子邮件的函数包,虽然php本身提供了邮件发送函数mail,可以在程序中直接发送电子邮件,不过该函数要求服务器支持sendmail或者必须设置一台不需要中继器的邮件发送服务器,使用起来及其繁琐。

0x01 漏洞分析

我们来看一下phpmailer在程序中是如何处理的:

首先,需要有一个接收输入的参数,这里可以是订阅、回复等:

这里接收了一个邮箱订阅的参数,我们来跟踪下看phpmailer在后端是如何处理的:

接下来phpmailer会调用html2text来进行处理,相关代码如下:

我们可以看到在发送前交给了html2text来处理,然后phpmailer进行发送,我们再去跟踪html2text这里,看看他是如何处理的:



可以看出来preg_replace使用了e参数,通过正则处理完的内容再发送出去。

通过以上代码我们从新再理一遍,email在拼接用户输入的字符串,尽管使用了mysql_real_escape_string,但是并不能证明这是安全的。然后进入了html2text的preg_replace,然后正则刚好带有/e的表现,从而导致了代码执行。

我们再去看官网提供最新版本看一下,通过github上,我们通过看changelog看到:

phpmailer因为兼容问题不再提供了html2text,需要用户自己写。事实上很多开发者仍然还在使用之前官网提供的html2text,我们搜索下相关CMS:

发现有很多仍然在使用。当然,实质上不仅仅影响phpmailer了,凡是使用了html2text都将会存在远程命令执行漏洞的可能性。

0x02 相关案例

邮箱订阅处,使用Burp Suite的中继器,修改email参数的内容:

成功执行了命令,尽管过滤了敏感的字符,但是通过ASCII码仍然可以进行绕过,比如反弹shell。

由于漏洞利用简单,攻击成本低,影响范围广,青藤云安全建议广大站长及厂商立即修复此漏洞。

0x03 修复方案

1.使用青藤云安全产品可以全面检测该漏洞。

2.修改html2text中的正则表达式,取消/e参数。

更多信息请关注微信公众号:qingtengyun

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表