Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Contact Form 7插件中的不受限制文件上传漏洞

Contact Form 7插件中的不受限制文件上传漏洞

作者头像
FB客服
发布于 2021-02-08 01:53:51
发布于 2021-02-08 01:53:51
3.3K00
代码可运行
举报
文章被收录于专栏:FreeBufFreeBuf
运行总次数:0
代码可运行

漏洞概述

众所周知,Contact Form 7是一款非常受欢迎的WordPress插件。但是根据安全研究专家的最新发现,Contact Form 7中存在一个不受限制的文件上传漏洞。这个漏洞被标记为了高危漏洞,目前存在漏洞的Contact Form 7插件已经安装在了500多万个网站上,使得这些网站将成为攻击者严重的“香饽饽”。在该漏洞的帮助下,攻击者将能够对目标站点执行网络钓鱼、网站接管、数据窃取和Credit卡欺诈等攻击活动。

在这篇文章中,我们将介绍并分析该漏洞的成因,并给出针对该漏洞的概念验证PoC以及缓解方案。

Contact Form 7插件

关于该插件的信息,我们直接引用该插件官方文档给出的介绍:

Contact Form 7是一款免费的wordpress联系表单插件,简称CF7,在WP官方的插件排行榜里排名第一,也是表单插件里最受欢迎的插件之一。该插件可以管理多个联系人表单,并且可以通过简单的标记灵活地定制表单和邮件内容。

漏洞介绍

国家漏洞数据库(NVD)目前已将该漏洞标记为了CVE-2020-35489,相关漏洞描述如下:

WordPress的Contact Form 7插件(版本低于v5.3.2)将允许攻击者实现不受限制的文件上传和远程代码执行(由于文件名中可能包含特殊字符)。

  • 该插件允许WP管理员在自己的网站上创建联系人表单,网站用户可以在表单中输入相关联系信息以获取技术支持或获取反馈信息。
  • 恶意用户可以通过上传一个文件名中包含了双扩展名的文件来利用该漏洞,文件名由不可打印或特殊字符分隔,比如“说php .jpg”(\t字符是分隔符)。
  • 接下来,Contact Form 7并不会从上传文件的文件名中移除这些字符,并且会解析包含第一个扩展名在内的之前的文件名,而分隔符会导致Contact Form 7无法解析后续的扩展名。 因此,最后的文件名就变成了“php”。
  • 而攻击者将能够通过远程代码执行在服务器中访问或执行此文件。

关于Contact Form 7的源代码,感兴趣的同学可以点击【阅读原文】查看托管在GitHub上的源代码。

因此,攻击者将能够利用漏洞CVE-2020–35498对目标站点产生严重的安全影响。

漏洞利用PoC

注意,我们还不能公开披露该漏洞的相关技术和利用细节,因为官方的PoC尚未发布。而且在2020年12月31日之前,我们还要给供应商和广大用户一定的时间来进行更新。

在这里,我将在本地配置一个WordPress站点,并演示如何利用该漏洞。我将使用Contact Form 7 v5.3.1版本的插件来演示该漏洞的利用方法,因为这个漏洞已在2020年12月17日发布的5.3.2版本中进行了修复。

环境配置

首先,我们需要下载、导入、安装并激活该插件:

此时,Contact Form 7插件已经安装并激活陈公公了。

第二步,我们要在WordPress侧边栏中找到“Contact”标签,然后点击“Add New”按钮来创建一个新的表单。

接下来,为了进行漏洞演示,我创建了一个“Job Application Form”表单,这个表单提供了一个文件上传的功能支持。

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

攻击场景

我们访问这个新建的页面,然后在表单中文件上传部分上传一个文件名为“exploit.php .jpg”的文件。

我们的恶意文件此时将会被成功上传至服务器。

点击“Submit”按钮,我们将会收到服务器端返回的上传响应,表明我们的文件已经成功上传了,文件名为“exploit.php”。接下来,我们将能够通过任意代码执行在服务器中访问或执行此文件了。

文件的默认上传路径为“wp-content/uploads”,但是可以通过下列方式来修改文件上传路径(WPCF7_UPLOADS_TMP_DIR):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
define( 'WPCF7_UPLOADS_TMP_DIR', '/your/file/path' );

漏洞影响

通过利用该漏洞,攻击者可以直接上传任意类型的文件,并绕过目标站点部署的上传文件类型限制,其后果可能但不限于:

  • 接管整个网站;
  • 恶意软件感染,窃取Credit卡信息,将用户重定向至恶意页面;
  • 网络钓鱼攻击
  • 获取目标服务器文件系统和数据库信息;
  • 插入后门程序;
  • ……

漏洞缓解

进入WordPress插件功能页面中,将该插件版本更新至v5.3.2或更新版本。除此之外,我们还可以使用WordPress安全漏洞扫描器-WPSec来扫描和监控我们的WordPress站点。运行WPSec之后,我们将看到如下图所示的输出内容:

实际上,类似的漏洞经常都会常出现。因此我们建议广大用户尽量定期手动对插件进行更新。除此之外,我们还应该禁止uploads文件夹内的PHP代码执行功能。如果使用的是Nginx,可以在配置文件中添加下列内容来禁用PHP代码执行功能:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
location ^~ /wp-content/uploads/ {

}

对于Apache Web服务器,我们不建议通过在uploads文件夹中放置.htaccess文件来防止PHP代码执行,因为攻击者很可能会使用上述漏洞覆盖此文件。我们可以使用Apache配置文件来阻止执行,但这在共享宿主环境中可能是一个问题。同时,我们可以将AllowOverride设置为None以防止.htaccess文件覆盖设置。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在神经网络中提取知识:学习用较小的模型学得更好
在传统的机器学习中,为了获得最先进的(SOTA)性能,我们经常训练一系列整合模型来克服单个模型的弱点。但是,要获得SOTA性能,通常需要使用具有数百万个参数的大型模型进行大量计算。SOTA模型(例如VGG16 / 19,ResNet50)分别具有138+百万和23+百万个参数。在边缘设备部署这些模型是不可行的。
deephub
2020/11/09
8990
在神经网络中提取知识:学习用较小的模型学得更好
BERT 模型的知识蒸馏: DistilBERT 方法的理论和机制研究
如果你曾经训练过像 BERT 或 RoBERTa 这样的大型 NLP 模型,你就会知道这个过程是极其漫长的。由于其庞大的规模,训练此类模型可能会持续数天。当需要在小型设备上运行它们时,就会发现正在以巨大的内存和时间成本为日益增长的性能付出代价。
deephub
2021/12/15
1.9K0
BERT 模型的知识蒸馏: DistilBERT 方法的理论和机制研究
知识蒸馏,中文文本分类,教师模型BERT,学生模型biLSTM
虽然说做文本不像图像对gpu依赖这么高,但是当需要训练一个大模型或者拿这个模型做预测的时候,也是耗费相当多资源的,尤其是BERT出来以后,不管做什么用BERT效果都能提高,万物皆可BERT。
机器学习AI算法工程
2022/02/28
1K0
知识蒸馏,中文文本分类,教师模型BERT,学生模型biLSTM
CVPR2021目标检测:少见的知识蒸馏用于目标检测(附论文下载)
然而,以往的蒸馏检测方法对不同的检测框架具有较弱的泛化性,并且严重依赖于GT,忽略了实例之间有价值的关系信息。因此,研究者提出了一种新的基于鉴别实例的检测方法,而不考虑GT的正负区别,称为通用的实例蒸馏(GID)。
计算机视觉研究院
2021/07/09
1.8K0
【AI系统】知识蒸馏原理
本文将介绍知识蒸馏(Knowledge Distillation, KD)的原理,这是一种通过从大型的教师模型向小型的学生模型转移知识来实现模型压缩和优化的技术。知识蒸馏的核心思想是利用教师模型在大量数据上积累的丰富知识,通过特定的蒸馏算法,使学生模型能够学习并吸收这些知识,从而达到与教师模型相似的性能。
用户11307734
2024/12/05
3080
独家 | 基于知识蒸馏的BERT模型压缩
在过去一年里,语言模型的研究有了许多突破性的进展, 比如GPT用来生成的句子足够以假乱真[1];BERT, XLNet, RoBERTa [2,3,4]等等作为特征提取器更是横扫各大NLP榜单。但是,这些模型的参数量也相当惊人,比如BERT-base有一亿零九百万参数,BERT-large的参数量则高达三亿三千万,从而导致模型的运行速度过慢。为了提高模型的运行时间,本文率先提出了一种新的知识蒸馏 (Knowledge Distillation) [5] 方法来对模型进行压缩,从而在不损失太多精度的情况下,节省运行时间和内存。文章发表在EMNLP 2019。
数据派THU
2019/10/14
9890
独家 | 基于知识蒸馏的BERT模型压缩
【科普】联邦知识蒸馏概述与思考
随着深度学习与大数据的进一步发展,效果好的模型往往有着较大的规模和复杂的结构,往往计算效率与资源使用方面开销很大,无法部署到一些边缘设备、移动终端或者嵌入式设备上。因此,如何在保证模型性能的前提下减少模型的参数量以及加快模型前向传播效率,这是一个重要的问题,总的来说不同的模型压缩与加速技术具体可以分为以下四类:
CV君
2022/03/30
1.4K0
【科普】联邦知识蒸馏概述与思考
75岁Hinton中国大会最新演讲「通往智能的两种道路」,最后感慨:我已经老了,未来交给年轻人
「但我已经老了,我所希望的是像你们这样的年轻有为的研究人员,去想出我们如何能够拥有这些超级智能,使我们的生活变得更好,而不是被它们控制。」
机器之心
2023/08/07
2270
75岁Hinton中国大会最新演讲「通往智能的两种道路」,最后感慨:我已经老了,未来交给年轻人
ICCV 2019 提前看 | 三篇论文,解读神经网络压缩
神经网络压缩方向是目前深度学习研究的一个热门的方向,其主要的研究方向是压缩,蒸馏,网络架构搜索,量化等。在 ICCV2019 中,不少的研究单位和学者都发表了神经网络压缩方向的论文。本文主要以其中三篇论文来研究神经网络压缩的目前发展趋势。
机器之心
2019/10/24
7330
综述 | 知识蒸馏(1)
近年来,深度神经网络在工业和学术界都取得了较大成功,尤其是在计算机视觉任务方面:主要归因于其可扩展性以编码大规模数据(提取特征),并操纵数十亿个模型参数。然而,将这些繁琐的深度模型部署在资源有限的设备(例如,移动电话和嵌入式设备)上也是一个挑战:不仅计算复杂度高,且存储需求大。为此,多种模型压缩和加速技术被提出;其中,知识蒸馏可以有效地从大型“教师”模型学习小型的“学生”模型,迅速受到重视。本文从知识的类别、训练的策略、蒸馏的算法和应用等角度,对知识蒸馏进行了全面调研。此外,简述了知识蒸馏的挑战,并对未来研究进行讨论。
公众号机器学习与AI生成创作
2020/07/24
1.6K0
综述 | 知识蒸馏(1)
【深度学习】深度学习中的知识蒸馏技术(上)简介
在化学中,蒸馏是一种有效的分离不同沸点组分的方法,大致步骤是先升温使低沸点的组分汽化,然后降温冷凝,达到分离出目标物质的目的。化学蒸馏条件:(1)蒸馏的液体是混合物;(2)各组分沸点不同。
黄博的机器学习圈子
2021/04/16
6.4K0
【深度学习】深度学习中的知识蒸馏技术(上)简介
关于"知识蒸馏",你想知道的都在这里!
"蒸馏",一个化学用语,在不同的沸点下提取出不同的成分。知识蒸馏就是指一个很大很复杂的模型,有着非常好的效果和泛化能力,这是缺乏表达能力的小模型所不能拥有的。因此从大模型学到的知识用于指导小模型,使得小模型具有大模型的泛化能力,并且参数量显著降低,压缩了模型提升了性能,这就是知识蒸馏。<Distilling the Knowledge in a Neural Network>这篇论文首次提出了知识蒸馏的概念,核心思想就是训练一个复杂模型,把这个复杂模型的输出和有label的数据一并喂给了小网络,所以知识蒸馏一定会有个复杂的大模型(teacher model)和一个小模型(student model)。
炼丹笔记
2021/12/20
1.2K0
关于"知识蒸馏",你想知道的都在这里!
模型压缩 | 知识蒸馏经典解读
知识蒸馏是一种模型压缩方法,是一种基于“教师-学生网络思想”的训练方法,由于其简单,有效,在工业界被广泛应用。这一技术的理论来自于2015年Hinton发表的一篇神作:Distilling the Knowledge in a Neural Network[1]
NewBeeNLP
2020/08/26
3.4K0
模型压缩 | 知识蒸馏经典解读
知识蒸馏(Knowledge Distillation)
本文主要罗列与知识蒸馏相关的一些算法与应用。但首先需要明确的是,教师网络或给定的预训练模型中包含哪些可迁移的知识?基于常见的深度学习任务,可迁移知识列举为:
全栈程序员站长
2022/07/01
2.9K0
知识蒸馏(Knowledge Distillation)
BERT蒸馏完全指南|原理/技巧/代码
今天rumor就结合Distilled BiLSTM/BERT-PKD/DistillBERT/TinyBERT/MobileBERT/MiniLM六大经典模型,带大家把BERT蒸馏整到明明白白!
NewBeeNLP
2020/12/08
2.6K0
用了这个方法,两周没变过的模型精度居然提升了(附资源)
【导语】知识蒸馏是一种模型压缩技术,它利用训练好的大网络(教师网络)去教小网络(学生网络)。较小的网络经过训练后,可有类似于大网络的性能。这样就可以在诸如手机或其他移动端设备等小型设备上部署此类模型。在今天的文章中,将为大家介绍关于几个重要的知识蒸馏的工作进展。
AI科技大本营
2019/11/28
1.7K0
知识蒸馏——深度学习的简化之道 !!
在深度学习的世界里,大型神经网络因其出色的性能和准确性而备受青睐。然而,这些网络通常包含数百万甚至数十亿个参数,使得它们在资源受限的环境下(如移动设备和嵌入式系统)运行变得不切实际。知识蒸馏(Knowledge Distillation)技术应运而生,旨在解决这一挑战,通过将大型网络的知识“蒸馏”到更小、更高效的模型中,以实现类似的性能,但以更低的计算成本。
JOYCE_Leo16
2024/03/24
2.1K0
知识蒸馏——深度学习的简化之道 !!
模型压缩与蒸馏!BERT家族的瘦身之路
之前我们讨论了『模型压缩与蒸馏!BERT的忒修斯船』,算是一个开篇。本文继续讨论关于模型蒸馏(Distilling Knowledge)及关于BERT模型的知识蒸馏,分享针对具体任务时可行的简洁方案,同时在新的视角下探讨了知识蒸馏有效的一些原因,并通过实验进行验证。
NewBeeNLP
2021/03/03
9390
模型压缩与蒸馏!BERT家族的瘦身之路
小版BERT也能出奇迹:最火的预训练语言库探索小巧之路
近日,HuggingFace 发布了 NLP transformer 模型——DistilBERT,该模型与 BERT 的架构类似,不过它仅使用了 6600 万参数(区别于 BERT_base 的 1.1 亿参数),却在 GLUE 基准上实现了后者 95% 的性能。
机器之心
2019/09/10
1.1K0
小版BERT也能出奇迹:最火的预训练语言库探索小巧之路
深度学习实践篇[17]:模型压缩技术、模型蒸馏算法:Patient-KD、DistilBERT、DynaBERT、TinyBERT
理论上来说,深度神经网络模型越深,非线性程度也就越大,相应的对现实问题的表达能力越强,但相应的代价是,训练成本和模型大小的增加。同时,在部署时,大模型预测速度较低且需要更好的硬件支持。但随着深度学习越来越多的参与到产业中,很多情况下,需要将模型在手机端、IoT端部署,这种部署环境受到能耗和设备体积的限制,端侧硬件的计算能力和存储能力相对较弱,突出的诉求主要体现在以下三点:
汀丶人工智能
2023/10/11
1.7K0
深度学习实践篇[17]:模型压缩技术、模型蒸馏算法:Patient-KD、DistilBERT、DynaBERT、TinyBERT
推荐阅读
相关推荐
在神经网络中提取知识:学习用较小的模型学得更好
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验