WordPress极简博客 WordPress极简博客
  • 新鲜事
  • 战疫情
  • UI素材
    • UI素材
    • 电商/节日
    • PPT
      • 节日庆典
      • 工作汇报
      • 商业计划书
    • word
      • 简历竞聘
      • 合同/公文
  • 创客头条
    • 音乐分享
    • 初创文章
    • 极客头条
    • 数码解说
    • 生活趣事
    • 生活日记
  • 全球科技
    • 新浪博客
    • A5资讯
    • 环球网新闻
  • 编程教学
    • Linux安全栏目
      • Linux运维安全汇总
      • DDOS攻击防护
      • XSS攻击防护
      • SQL安全防护
    • Python技术栏目
      • Python基础入门
      • Python基础结构
    • WordPress技术栏目
      • WP主题
      • WordPress技术教程
      • RIPRO主题美化
    • WordPress漏洞发布
    • 技术教程汇总
  • 专题
  • 基友
  • 隐私
  • 云优化
  • 注册
    登录
立即登录
  • 首页
  • 云优化
  • 新疫情
  • 新鲜事
    • 热文
    • 极客
    • 生活
  • 技术篇
    • WP主题
    • 技术教程
    • Python入门
    • Python基础
  • 专题篇
  • 友链君

PageLayer插件中的高严重性漏洞影响超过200,000个WordPress网站

夏柔6月 17, 2020

几周前,我们的威胁情报团队发现了Page Builder中存在的几个漏洞:PageLayer –拖放网站构建器,一个活跃安装在200,000多个站点上的WordPress插件。该插件与wpCentral来自同一创建者,wpCentral 是我们最近在其中发现特权提升漏洞的插件。

一个漏洞使具有订户级及以上权限的任何经过身份验证的用户都能够更新和修改带有恶意内容的帖子,以及其他许多功能。第二个漏洞使攻击者可以代表站点管理员伪造一个请求,以修改插件的设置,从而允许恶意Javascript注入。

我们最初于2020年4月30日与该插件的开发人员联系,并在建立了适当的沟通渠道后,于2020年5月1日提供了完整的披露信息。他们在2020年5月2日迅速做出回应,告知我们他们将开始工作修复。初始补丁发布于2020年5月2日,最佳补丁发布于2020年5月6日。

这些被认为是高级安全问题,可能会导致攻击者擦除您的网站内容或接管您的网站。我们强烈建议您立即将其发布为最新版本,即版本1.1.4。

Wordfence Premium客户于2020年4月30日收到一条新的防火墙规则,以防止针对此漏洞的攻击。免费Wordfence用户将在2020年5月30日的30天后收到此规则。描述:未受保护的AJAX和对存储的跨站点脚本的Nonce披露和恶意修改
受影响的插件:Page Builder:PageLayer –拖放网站构建器 Plugug 
Slug:Pagelayer 
受影响的版本:<= 1.1.1 
CVE ID:一旦标识符为,将更新提供。
CVSS得分:7.4(高)
CVSS向量:CVSS:3.1 / AV:N / AC:L / PR:L / UI:N / S:C / C:L / I:L / A:L 
完整版本:1.1 .2

PageLayer是一个非常易于使用的WordPress页面构建器插件,声称可与市场上和WordPress存储库中的几乎所有主题一起使用。它通过使用可添加页面元素(例如按钮,表格,摘录,产品等)的小部件来提供页面的扩展自定义。

我们发现,该插件中几乎所有AJAX操作端点均未包含权限检查。这意味着这些操作可以由网站上经过身份验证的任何人(包括订户级用户)执行。作为标准,这些AJAX端点仅检查是否通过经过身份验证的会话从/ wp-admin发送了请求,而不检查发送请求的用户的功能。

所有这些功能中都使用了随机数检查,但是如果随机数实现不正确,则很容易破坏随机数–例如,如果在站点输出的源代码中显示了可用的随机数。不幸的是,对于PageLayer插件,这正是发生的情况。在先前使用PageLayer插件编辑过的任何页面的源代码的标头部分中,都可以看到可用的随机数。无论是否已登录,任何站点访问者都可以找到此随机数,从而使任何未经身份验证的用户都能够为插件的AJAX操作获取合法的随机数。PageLayer插件中的高严重性漏洞影响超过200,000个WordPress网站-WordPress极简博客

可从页面源获取PageLayer随机数。

使用单个随机数作为授权控制机制会导致页面生成器的功能出现各种安全问题,因为这种随机数很容易获得。

WordPress随机数永远不应该用作授权手段,因为如果实施不当或发现漏洞,它们很容易受到损害。WordPress nonce旨在用于CSRF保护,而非授权控制。结合对敏感功能的CSRF保护实施功能检查以进行全面验证,可以提供保护以确保请求来自授权用户。

影响

如前所述,一些AJAX功能受到影响,造成了各种各样的潜在影响。一些最有影响力的行动是wp_ajax_pagelayer_save_content,wp_ajax_pagelayer_update_site_title和wp_ajax_pagelayer_save_template。

add_action('wp_ajax_pagelayer_save_content', 'pagelayer_save_content');
add_action('wp_ajax_pagelayer_update_site_title', 'pagelayer_update_site_title');
add_action('wp_ajax_pagelayer_save_template', 'pagelayer_save_template');

该pagelayer_save_content功能用于通过页面构建器保存页面数据。缺少此功能的权限检查,无论权限如何,经过身份验证的用户都可以更改使用PageLayer编辑的页面上的任何数据。

function pagelayer_save_content(){

	// Some AJAX security
	check_ajax_referer('pagelayer_ajax', 'pagelayer_nonce');

	$content = $_POST['pagelayer_update_content'];

	$postID = (int) $_GET['postID'];

	if(empty($postID)){
		$msg['error'] =  __pl('invalid_post_id');
	}

攻击者可能会完全擦除页面,也可能将其想要的任何内容注入网站的页面和帖子中。另外,一些小部件允许注入Javascript,包括“ Button”小部件。“按钮”窗口小部件的文本上没有进行清理,这允许将恶意Javascript用作文本。一旦任何用户浏览到包含该按钮的页面,该Javascript就会执行。PageLayer插件中的高严重性漏洞影响超过200,000个WordPress网站-WordPress极简博客

插入了警报JS的PageLayer按钮。

该pagelayer_update_site_title功能用于更新站点的标题。缺少此功能的权限检查,允许经过身份验证的用户将网站标题更改为他们选择的任何标题。尽管危害较小,但是如果长时间不引起注意,它仍然可能影响您网站的搜索引擎排名。

function pagelayer_update_site_title(){
	global $wpdb;

	// Some AJAX security
	check_ajax_referer('pagelayer_ajax', 'pagelayer_nonce');

	$site_title = $_POST['site_title'];

	update_option('blogname', $site_title);

	$wpdb->query("UPDATE `sm_sitemeta` 
				SET meta_value = '".$site_title."'
				WHERE meta_key = 'site_name'");
	wp_die();
}

该pagelayer_save_template功能用于保存PageLayer主题生成器的PageLayer模板。缺少对此功能的权限检查,使经过身份验证的用户能够创建另存为新帖子的新PageLayer模板。

function pagelayer_save_template() {
	
	// Some AJAX security
	check_ajax_referer('pagelayer_ajax', 'pagelayer_nonce');
	
	$done = [];
	
	$post_id = (int) $_GET['postID'];
	
	// We need to create the post
	if(empty($post_id)){
	
		// Get the template type
		if(empty($_POST['pagelayer_template_type'])){
			$done['error'] = __pl('temp_error_type');
			pagelayer_json_output($done);
		}
		
		$ret = wp_insert_post([
			'post_title' => $_POST['pagelayer_lib_title'],
			'post_type' => 'pagelayer-template',
			'post_status' => 'publish',
			'comment_status' => 'closed',
			'ping_status' => 'closed'
		]);

尽管此功能原打算在插件的PRO版本中使用,但该功能仍可以在免费版本中执行,从而影响PageLayer插件的所有200,000多名用户。攻击者可能会创建一个新模板,从而在站点上创建一个新页面,并以与该pagelayer_save_content功能相同的方式注入恶意Javascript 。

恶意Java脚本可用于注入新的管理用户,重定向站点访问者,甚至利用站点用户的浏览器来破坏其计算机。

补丁

在该插件的最新版本中,开发人员对可能更改站点的所有敏感功能实施了权限检查,并重新配置了该插件,以为WordPress站点的公共和管理区域创建单独的随机数。

	// Are you allowed to edit ?
	if(!pagelayer_user_can_edit($postID)){
		$msg['error'][] =  __pl('no_permission');
		pagelayer_json_output($msg);
	}

描述:跨站点请求伪造存储的跨站点脚本
受影响的插件:页面构建器:PageLayer –拖放网站构建器
插件Slug:pagelayer 
受影响的版本:<= 1.1.1 
CVE ID:一旦提供了标识符,将进行更新。
CVSS得分:8.8(高)
CVSS向量:CVSS:3.1 / AV:N / AC:L / PR:N / UI:R / S:U / C:H / I:H / A:H 
完整版本:1.1 .2

PageLayer插件注册了一个设置区域,可以在其中进行配置更改。这包括诸如启用编辑器的位置,基本内容设置,基本信息配置等功能。PageLayer插件中的高严重性漏洞影响超过200,000个WordPress网站-WordPress极简博客

PageLayer设置区域。

设置更新功能使用功能检查来验证尝试进行任何更改的用户是否具有适当的权限。但是,没有CSRF保护来验证任何尝试更新站点设置的请求的合法性。这使攻击者可以诱骗管理员发送更新任何PageLayer设置的请求。

function pagelayer_settings_page(){

	$option_name = 'pl_gen_setting' ;
	$new_value = '';

	if(isset($_REQUEST['pl_gen_setting'])){
		$new_value = $_REQUEST['pl_gen_setting'];
		
		if ( get_option( $option_name ) !== false ) {
	
			// The option already exists, so we just update it.
			update_option( $option_name, $new_value );

设置区域中的“信息”选项卡为网站所有者提供了一种设置默认地址,电话号码和联系电子邮件地址的方法,每当在页面上使用相应的窗口小部件时,这些地址就会显示。地址或电话号码设置上没有清理,由于管理员的使用能力unfiltered_html,可以将Javascript插入这些设置中。PageLayer插件中的高严重性漏洞影响超过200,000个WordPress网站-WordPress极简博客

PageLayer地址已使用警报JS更新。

影响

这使攻击者能够利用设置中的CSRF漏洞来注入恶意脚本。如果该小部件已经启用,则只要有人浏览到包含该小部件的页面,任何注入的恶意脚本都将执行。如果尚未启用该窗口小部件,则管理员开始编辑并将窗口小部件插入页面后,可执行恶意脚本。与往常一样,这些脚本可以执行诸如创建新的管理帐户并将用户重定向到恶意站点之类的操作。

补丁

在该修补程序的补丁版本中,开发人员实现了CSRF保护,包括WordPress随机数和更新设置时对该随机数的验证。

	if(isset($_REQUEST['submit'])){
		check_admin_referer('pagelayer-options');
	}

PoC演练:pagelayer_save_content

披露时间表

2020年4月24日至2020年4月30日 –初步发现较小的安全漏洞,并对插件进行更深入的安全性分析。
2020年4月30日 –为Wordfence Premium客户发布了防火墙规则。我们与插件的开发团队进行了初步接触。
2020年5月1日 –插件的开发团队确认了适当的收件箱以进行讨论。我们提供完整的披露。
2020年5月2日 –开发人员确认收到并确认他们已开始进行修复。当天发布更新。
2020年5月4日 –我们分析了修复程序,发现了一些未修补的安全问题,并负责地向开发人员披露了这些问题。
2020年5月6日–开发人员发布了最终的足够补丁。
2020年5月30日 –免费的Wordfence用户将收到防火墙规则。

结论

在今天的帖子中,我们详细介绍了与未受保护的AJAX动作和随机数披露相关的一些缺陷,这些缺陷除了使攻击者能够注入恶意Javascript之外,还允许攻击者对网站的页面和帖子进行一些恶意修改。这些漏洞已在1.1.2版中完全修复。我们建议用户立即更新到可用的最新版本,即本出版物发行时的版本1.1.4。

自2020年4月30日以来,运行Wordfence Premium的站点已受到保护,免受此漏洞的攻击。运行免费版本的Wordfence的站点将在2020年5月30日收到此防火墙规则的更新。如果您认识使用此插件的朋友或同事,他们的网站,我们强烈建议将此建议转发给他们,以帮助保护他们的网站。

上文由夏柔提供翻译,原文出自: https://www.wordfence.com/blog/2020/05/high-severity-vulnerabilities-in-pagelayer-plugin-affect-over-200000-wordpress-sites/

#wordpress#漏洞#跨站脚本
0
分享
夏柔 站长
文章 709评论 23
赞赏
夏柔
相关文章
  • WordPress去除index.php的方法
  • WordPress NAB Transact WooCommerce 2.1.0 Payment Bypass
  • WordPress quiz-master-next 安全漏洞
  • 关于WordPress 5.5 回复按钮失效问题回复
  • Nova Lite theme 跨站脚本漏洞
  • WordPress5.5版本正式发布
  • WordPress如何在多站点下判断是否开放用户注册
  • 使用Divi,Extra和Divi Builder的严重漏洞暴露了700,000多个站点
  • WordPress Email Subscribers & Newsletters 信息泄露漏洞
  • WordPress移除head头部js、css、feed等多余加载项
04 6月, 2020
美国白人警察暴力执法黑人丧命 愤怒民众连日抗议
夏柔
站长
夏山如碧 - 怀柔天下
709文章
23评论
58144K获赞
版权声明

文章采用创作共用版权 CC BY-NC-ND/2.5/CN 许可协议,与本站观点无关。

如果您认为本文侵犯了您的版权信息,请与我们联系修正或删除。
投诉邮箱wpsite@aliyun.com

栏目推荐
Python基础入门30
WordPress技术教程265
前沿技术情报所7
城市创新——新消费8
最近有哪些不可错过的热文5
程序员的养生之道0
疫情实况
深圳一隔离酒店服务人员核酸阳性
1月 24, 2021
黑龙江新增本土确诊病例29例
1月 24, 2021
北京新增2例本土确诊 均在大兴
1月 24, 2021
更多
每日快讯
美军"罗斯福"号航母23日进入南海
1月 24, 2021
张伯礼称今冬疫情有望3月初结束
1月 24, 2021
警方调查西藏冒险王网传视频
1月 23, 2021
北京新增3例本土确诊 均在大兴
1月 23, 2021
英国变异新冠病毒或致更高死亡率
1月 23, 2021
云南昭通市盐津县发生4.7级地震
1月 23, 2021
外媒:特朗普弹劾案审讯2月8日开始
1月 23, 2021
31省新增确诊107例 本土90例
1月 23, 2021
更多
  • 新鲜事
  • 疫情实况
  • UI素材
  • 技术教程
  • 音乐分享
  • 专题
  • 友情
  • 隐私
  • 云优化
Copyright © 2019-2021 WordPress极简博客. Designed by 骚老板. 辽公网安备21010502000474号