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

LearnPress中修补的高严重性漏洞

夏柔 5月 1, 2020

2020年3月16日,LearnPress – WordPress LMS插件(一个具有80,000多个安装的WordPress插件)修复了一个严重性漏洞,该漏洞使订户级用户可以将其权限提升为“ LP Instructor”(具有功能的自定义角色)的权限与WordPress的“作者”角色相似,包括能够上传文件和创建包含未过滤HTML的帖子,这两种功能都可以用作允许站点接管的漏洞利用链的一部分。

我们的威胁情报团队分析了该漏洞,以创建防火墙规则来保护Wordfence客户。在此过程中,我们发现了另外两个漏洞。这些漏洞之一与原始漏洞的后果几乎相同,因为它允许攻击者将任何用户的权限提升为“ LP Instructor”。另一个允许具有最小权限的登录用户(例如订户)在网站上创建具有任意标题的新页面,并更改任何现有帖子或页面的状态。

我们于2020年3月17日第二天向插件作者私下披露了这些漏洞,并迅速收到了回复。但是,不幸的是,超过一个月没有发布任何补丁。我们在2020年4月16日跟进了该插件的作者,在未收到任何回复后,与WordPress插件团队联系。几个小时后,插件开发者重新联系并通知我们补丁正在开发中。经过充分修补的版本最终于2020年4月22日发布。

我们强烈建议立即更新到3.2.6.9版,因为这些安全问题已在该版本中得到了全面修补。

Wordfence Premium用户于2020年3月16日收到一条新的防火墙规则,以防止针对原始漏洞和新发现的漏洞的攻击。免费Wordfence用户于2020年4月15日收到此规则。


说明:
受影响的特权升级插件:LearnPress 
插件插件:学习的
受影响版本:<3.2.6.9 
CVE ID:CVE-2020-11511 
CVSS Vecto:CVSS:3.0 / AV:N / AC:L / PR:N / UI:N / S:U / C:H / I:L / A:L / E:P / RL:O / RC:C 
CVSS得分:8.6(高)补丁
版本:3.2.6.9

LearnPress是一个WordPress插件,允许站点所有者创建一个在线学习门户,其中包括将用户分配为能够向站点添加自己的课程资料的“ LP讲师”的功能。每当用户请求成为一名讲师时,该插件的一项功能便会向管理员发送电子邮件,从而允许该管理员通过单击链接批准请求。处理此请求的功能会在插件加载后自动运行,因此始终会“监听”特定参数:

function learn_press_accept_become_a_teacher() {
   $action  = ! empty( $_REQUEST['action'] ) ? $_REQUEST['action'] : '';
   $user_id = ! empty( $_REQUEST['user_id'] ) ? $_REQUEST['user_id'] : '';
   if ( ! $action || ! $user_id || ( $action != 'accept-to-be-teacher' ) ) {
       return;
   }

   if ( ! learn_press_user_maybe_is_a_teacher( $user_id ) ) {
       $be_teacher = new WP_User( $user_id );
       $be_teacher->set_role( LP_TEACHER_ROLE );
       delete_transient( 'learn_press_become_teacher_sent_' . $user_id );
       do_action( 'learn_press_user_become_a_teacher', $user_id );
       $redirect = add_query_arg( 'become-a-teacher-accepted', 'yes' );
       $redirect = remove_query_arg( 'action', $redirect );
       wp_redirect( $redirect );
   }
}

add_action( 'plugins_loaded', 'learn_press_accept_become_a_teacher' );

由于添加了此功能的方式,攻击者可能会将action参数设置为accept-to-be-teacher,将user_id参数设置为用户的ID的请求发送到wp-admin中的任何有效位置,以授予教师特权。这意味着即使未经身份验证的攻击者也可以发送wp-admin/admin-post.php包含这些参数的请求,并提升他们选择的用户的权限,尽管他们需要自己的用户ID才能充分利用此漏洞。

授予用户LP Instructor角色后,他们就可以创建新的帖子,课程,课程和测验。此外,LP Instructor还授予用户通常仅保留给编辑者和管理员的unfiltered_html功能:该功能允许他们将自定义代码插入他们创建的任何页面中。借助此功能,攻击者可以轻松地将恶意JavaScript插入他们创建的任何帖子中,然后如果登录的管理员查看了其中一个帖子,则可以将其用于将访客重定向到恶意网站,甚至可以用于站点接管。


说明:
受认证的页面创建和状态修改受影响的插件:LearnPress 
插件插件:learningpress 
受影响的版本:<3.2.6.9 
CVE ID:CVE-2020-11510 
CVSS矢量:CVSS:3.0 / AV:N / AC:L / PR:L / UI:N / S:U / C:N / I:L / A:H / E:F / RL:U / RC:C 
CVSS评分:7.1(高)
修补版本:3.2.6.9

LearnPress插件还通过AJAX操作处理了多个任务,这些任务缺少随机数检查和功能检查。它会循环注册AJAX动作,尽管其中许多功能至少使用了功能检查:

			$ajaxEvents = array(
				'create_page'             => false,
				'plugin_action'           => false,
				'modal_search_items'      => false,
				'dismiss_notice'          => false,
				'search_users'            => false,
				'load_chart'              => false,
				'search_course_category'  => false,
				/////////////
				//'be_teacher'              => false,
				'custom_stats'            => false,
				'ignore_setting_up'       => false,
				'get_page_permalink'      => false,
				'dummy_image'             => false,
				'update_add_on_status'    => false,
				//'plugin_install'          => false,
				'bundle_activate_add_ons' => false,
				'install_sample_data'     => false,

				// Remove Notice
				'remove_notice_popup'     => false,
				// Update order status
				'update_order_status'     => false,
			);
			foreach ( $ajaxEvents as $ajaxEvent => $nopriv ) {
				add_action( 'wp_ajax_learnpress_' . $ajaxEvent, array( __CLASS__, $ajaxEvent ) );

一种操作update_order_status旨在允许管理员将LearnPress订单标记为已付款或已退款。不幸的是,该功能接受了任何帖子ID和任何状态,甚至不存在任何ID。因此,它是可能的攻击者将请求发送到wp-admin/admin-ajax.php与所述action参数集learnpress_update_order_status,所述order_id集到邮政ID来修改,并且value参数设置为所期望的后状态。这将使攻击者可以发布或删除任何现有的帖子或页面,甚至将其设置为不存在的状态,此时,该帖子或页面将不再出现在网站上,也无法通过wp-admin访问,并且只能通过修改它在数据库中的状态。

       public static function update_order_status() {

           $order_id = learn_press_get_request( 'order_id' );
           $value    = learn_press_get_request( 'value' );

           $order = array(
               'ID'          => $order_id,
               'post_status' => $value,
           );

           wp_update_post( $order ) ? $response['success'] = true : $response['success'] = false;

           learn_press_send_json( $response );

           die();
       }

另一个易受攻击的操作称为函数,create_page该函数旨在在设置向导中使用,以便创建LearnPress需要起作用的默认页面。这意味着攻击者可以发送请求wp-admin/admin-ajax.php与action参数集learnpress_create_page和page_name参数设置为自己选择的值。

		public static function create_page() {
			$page_name = ! empty( $_REQUEST['page_name'] ) ? $_REQUEST['page_name'] : '';
			$response  = array();
			if ( $page_name ) {

				if ( $page_id = LP_Helper::create_page( $page_name ) ) {
					$response['page'] = get_post( $page_id );
					$html             = learn_press_pages_dropdown( '', '', array( 'echo' => false ) );
					preg_match_all( '!value=\"([0-9]+)\"!', $html, $matches );
					$response['positions'] = $matches[1];
					$response['html']      = '<a href="' . get_edit_post_link( $page_id ) . '" target="_blank">' . __( 'Edit Page', 'learnpress' ) . '</a>&nbsp;';
					$response['html']      .= '<a href="' . get_permalink( $page_id ) . '" target="_blank">' . __( 'View Page', 'learnpress' ) . '</a>';
				} else {
					$response['error'] = __( 'Error! Page creation failed. Please try again.', 'learnpress' );
				}
			} else {
				$response['error'] = __( 'Empty page name!', 'learnpress' );
			}
			learn_press_send_json( $response );
		}

尽管不那么严重,但此漏洞仍将允许攻击者发布标题中带有垃圾邮件链接的页面,并将其用作恶意SEO活动的一部分。

披露时间表

2020年3月16日 – Wordfence威胁情报在分析最近修补的漏洞时,在LearnPress插件中发现了未修补的漏洞。为Wordfence Premium用户发布的防火墙规则。最初与插件开发人员联系。
2020年3月17日 –插件开发人员确认适当的收件箱以进行讨论。已发送漏洞的完整披露。
2020年4月15日 –免费Wordfence用户可以使用防火墙规则。
2020年4月16日 –插件开发者的后续行动(尚未解决的问题)。
2020年4月20日 –我们就此问题与WordPress插件小组联系,并在不久后收到了插件开发人员的回复。
2020年4月22日 –已发布足够补丁的版本。

结论

在本文中,我们详细介绍了LearnPress插件中的两个漏洞,其中包括特权提升漏洞以及帖子创建和修改漏洞。这些缺陷已在3.2.6.9版中完全修复,我们敦促用户尽快更新到最新的可用版本。自2020年3月16日起,运行Wordfence Premium的网站已受到保护,免受这些漏洞的侵害;自2020年4月15日以来,仍处于免费版本的Wordfence中的网站已受到保护。如果您当前以学生身份使用运行LearnPress的网站,请转发此信息向网站管理员咨询。

#LearnPress漏洞
1
等 1 人赞过
J2dcg1.png
猜你喜欢
  • Nginx添加跨域限制规则
  • 使用测速脚本对国内Linux服务器进行测速
  • 域名爆破之自动化信息收集脚本
  • 利用免费接口实现国家开放大学刷网课脚本
  • RiProV2定制导航条
  • 判断是否在微信浏览器打开
  • 微信内自动播放音频非百度方案
  • 利用veImageX加速您的网站,想不快都难!
  • SWAPIDC减少注册信息及防刷注册量教学
  • Python实现定时发送每日早报及生活指数
27 5月, 2020
补壹刀:在中美最敏感的这件事上,安倍到底啥意思?
夏柔
站长
夏山如碧 - 怀柔天下
1725
文章
25
评论
58145K
获赞
版权声明

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

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

栏目推荐
Python基础入门33
WordPress技术教程267
前沿技术情报所22
城市创新——新消费11
最近有哪些不可错过的热文23
程序员的养生之道0
节
春
  • 新鲜事
  • 疫情实况
  • UI素材
  • 技术教程
  • 音乐分享
  • 专题
  • 友情
  • 隐私
  • 云优化
Copyright © 2019-2025 WordPress极简博客. Designed by 夏柔. 辽公网安备21010502000474号 辽ICP备19017037号-2