CVE-2020-35489 WP插件Contact Form 7任意文件上传

  • A+
所属分类:安全文章


        CVE-2020-35489。在Contact Form 7插件中发现不受限制的文件上传漏洞,影响5M+网站。


在一个名为Contact Form 7的流行WordPress插件中发现了一个高严重性的不受限制的文件上传漏洞,跟踪为CVE-2020-35489,目前安装在500万+网站上,使他们容易受到攻击,如网络钓鱼,完全接管网站,数据泄露,网络钓鱼和信用卡欺诈。


在这篇博文中,我们将介绍造成该漏洞的原因、在沙箱环境下的概念验证(PoC)示例以及缓解步骤。



WordPress 5.3.2之前的contact-form-7(又名Contact Form 7)插件允许不受限制的文件上传和远程代码执行,因为文件名可能包含特殊字符。


我将用4个简单的步骤来解释这个问题。


该插件允许WP管理员在他们的网站上创建联系表格,访客可以在其中输入联系信息,如反馈或支持。

如果一个恶意用户上传了一个文件,文件名包含双扩展名,用不可打印或特殊字符分隔,例如一个名为test.php.jpg的文件(/t字符是分隔符)。

那么联系表格7不会从上传的文件名中删除特殊字符,并解析文件名直到第一个扩展名,但由于分隔符的存在,会丢弃第二个扩展名。因此,最终的文件名会变成test.php (见下图).

这个文件可以通过远程代码执行来访问或在服务器上执行。


CVE-2020-35489 WP插件Contact Form 7任意文件上传





在这里,我将做一个WordPress的本地设置来展示概念验证的开发。我将使用联系表格7 v5.3.1来展示这个漏洞,因为这个漏洞已经在2020年12月17日的5.3.2版本中被修复。


设置

1. 我们下载、导入、安装,然后激活插件。


联系表格7插件安装并激活

2. 现在我们从侧边栏进入 "联系 "选项卡,点击 "添加新的 "按钮,创建一个新的表单。


3. 在本演示中,我们将创建一个 "工作申请表",其中有一个文件上传栏,用于申请人的简历。


4. 最后将这个表单添加到一个页面中,并发布。


攻击场景


现在我们访问新创建的页面,并在文件上传字段中提交一个文件名为exploit.php.jpg的表单。


CVE-2020-35489 WP插件Contact Form 7任意文件上传


我们的恶意文件成功上传到了服务器上

点击 "提交",我们会收到来自网络服务器的肯定答复,表明该文件已成功上传为 exploit.php。这个文件可以通过任意代码执行在服务器上被访问或执行。


默认的上传路径是wp-content/uploads,但是可以通过定义WPCF7_UPLOADS_TMP_DIR来改变,比如这样。


define( 'WPCF7_UPLOADS_TMP_DIR', '/your/file/path' )。


影响


通过利用这个漏洞,攻击者可以简单地上传任何类型的文件,绕过网站上允许上传的文件类型的所有限制。其后果可能是:


    接管整个网站

    恶意软件注入,窃取信用卡信息,将访问者重定向到恶意网页。

    通过网络钓鱼破坏网站

    文件系统或数据库超载

    插入类似Phpsploit的后门。

    


参考献文:https://blog.wpsec.com/contact-form-7-vulnerability/



本文始发于微信公众号(Khan安全团队):CVE-2020-35489 WP插件Contact Form 7任意文件上传

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: