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

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 人赞过
分享
夏柔 站长
文章 709评论 23
赞赏
夏柔
相关文章
  • 自定义onion域名
  • 宝塔linux面板一键工具箱
  • 7种提高代码阅读能力的方法
  • 保护你的WordPress,修改服务器默认用户名root
  • Python多线程扫描端口
  • ThnBo-一款针对WordPress开发的缩略图美化插件,为广大站长提供缩略图的美化便利
  • WordPress去除index.php的方法
  • WordPress美化-文字渐变特效
  • WordPress美化-抖动图片
  • 使用HBuilderX封装H5
17 4月, 2020
WordPress开发-建站基础篇
夏柔
站长
夏山如碧 - 怀柔天下
709文章
23评论
58144K获赞
版权声明

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

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

栏目推荐
Python基础入门30
WordPress技术教程265
前沿技术情报所7
城市创新——新消费8
最近有哪些不可错过的热文5
程序员的养生之道0
疫情实况
拜登公布战时抗疫计划
1月 22, 2021
31省区市新增确诊103例 本土94例
1月 22, 2021
科兴疫苗在智利获紧急使用许可
1月 21, 2021
更多
每日快讯
美共和党议员提交弹劾拜登条款
1月 22, 2021
江苏镇江一人核酸检测结果可疑
1月 22, 2021
美媒曝光特朗普离任后第一天动态
1月 22, 2021
男子骂防疫人员:我证件你敢看吗
1月 22, 2021
拜登公布战时抗疫计划
1月 22, 2021
31省区市新增确诊103例 本土94例
1月 22, 2021
巨大火球深夜划过日本上空
1月 21, 2021
科兴疫苗在智利获紧急使用许可
1月 21, 2021
更多
  • 新鲜事
  • 疫情实况
  • UI素材
  • 技术教程
  • 音乐分享
  • 专题
  • 友情
  • 隐私
  • 云优化
Copyright © 2019-2021 WordPress极简博客. Designed by 骚老板. 辽公网安备21010502000474号