所有分类
  • 所有分类
  • WP插件Pro
  • HTML模板
  • 微信小程序模板
  • 源码

WordPress 插件Advanced Custom Fields插件存在XSS漏洞,200+万站点收到影响

如果你正在使用Advanced Custom Fields(ACF )高级自定义字段插件的免费版和专业版,请将该插件至少更新到6.1.6版本。

高级自定义中的安全漏洞

此插件该版本中存在反射式 XSS 漏洞。

此漏洞允许任何未经身份验证的用户窃取敏感信息,在本例中,通过诱骗特权用户访问构建的 URL 路径,在 WordPress 网站上提升权限。

所描述的漏洞已在版本 6.1.6 中修复,也在版本 5.12.6 中修复,请尽快更新

正版Advanced Custom Fields Pro (ACF pro) wordpress高级自定字段插件专业版(汉化)正版Advanced Custom Fields Pro (ACF pro) wordpress高级自定字段插件专业版(汉化)
2023-05-22

关于更新

2023年5 月更新时,注意到媒体上流传着声称本文中的示例 PoC URL 能被大规模的利用网站。我们认为这不太可能,因为XSS只能由有访问权高级自定义字段功能的登录用户(主要是管理员)触发。假如攻击者确实直接利用了示例 PoC URL,但这并不能表示该操作使网站被黑客利用。这种情况主要适用于需要用户交互的漏洞,例如CSRF和Reflect XSS。在此更新发布之前,我们的监控系统没有收到任何针对客户的网站被入侵和黑客利用的情况。

关于WordPress高级自定义字段插件(ACF)

高级自定义字段插件和高级自定义字段插件专业版(版本 6.1.5 及更低版本,免费版和专业版)拥有超过 2 万个激活安装。ACF被称为WordPress中最受欢迎的自定义字段插件。这个插件是一个WordPress插件,我们可以在WordPress编辑器中添加自定义的内容字段。这些自定义的内容字段通常称为自定义字段,可以让网站使用更多可用字段更快地构建网站。

底层漏洞位于函数处理程序上:admin_body_class

includes/admin/admin-internal-post-type-list.php
public function admin_body_class( $classes ) {
$classes .= " acf-admin-page acf-internal-post-type {$this->admin_body_class}";

if ( $this->view ) {
$classes .= " view-{$this->view}";
}

return $classes;
}

配置为WordPress自己的钩子的额外处理程序,该钩子也被命名为。此钩子控制和过滤管理区域中主体标签的 CSS 类。admin_body_classadmin_body_class

includes/admin/admin-internal-post-type-list.php
// Add hooks. 
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); 
add_action( 'admin_body_class', array( $this, 'admin_body_class' ) );

如果我们更深入地查看 WordPress 核心的实现过程,我们可以看到钩子的输出值没有经过适当的清理并直接在 HTML 页面上构造:admin_body_class

https://github.com/WordPress/wordpress-develop/blob/trunk/src/wp-admin/admin-header.php#L245
$admin_body_classes = apply_filters( 'admin_body_class', '' );
$admin_body_classes = ltrim( $admin_body_classes . ' ' . $admin_body_class );
?>
<body class="wp-admin wp-core-ui no-js <?php echo $admin_body_classes; ?>">
<script type="text/javascript">
document.body.className = document.body.className.replace('no-js','js');
</script>

由于这种情况,如果挂钩函数处理程序未正确清理返回的类字符串,则存在潜在的 XSS 漏洞。admin_body_class

让我们回到钩子函数处理程序,代码将直接将变量连接到将作为类字符串返回的变量。我们实际上可以从函数中完全控制变量:$this->view$classes$this->viewcurrent_screen

includes/admin/admin-internal-post-type-list.php
public function current_screen() {
// Bail early if not the list admin page.
if ( ! acf_is_screen( "edit-{$this->post_type}" ) ) {
return;
}

// Get the current view.
$this->view = isset( $_GET['post_status'] ) ? sanitize_text_field( $_GET['post_status'] ) : ''; //
-------------------------------------

使用函数进行清理不足以防止 XSS,因为我们仍然可以使用 DOM XSS 有效负载。结合所有这些,可以使用以下示例有效负载实现XSS:sanitize_text_field

http://<WORDPRESS_SITE>/wp-admin/edit.php?post_type=acf-field-group&post_status=xxxxxxx" onload=alert(document.domain) xxx="

前端显示的反射HTML结构可能是这样的:

<body class="wp-admin wp-core-ui no-js acf-admin-5-3 acf-browser-chrome acf-admin-page acf-internal-post-type acf-admin-field-groups view-xxxxxxx\" onload=alert(document.domain) xxx=\" edit-php auto-fold admin-bar post-type-acf-field-group branch-6-2 version-6-2 admin-color-fresh locale-en-us no-customize-support no-svg">

请注意,此漏洞可能在高级自定义字段插件的默认安装或配置上触发。XSS 也只能由有权访问高级自定义字段插件的登录用户触发。

高级自定义字段中的修补程序

由于此问题主要是因为代码在没有适当清理的情况下,直接构造了 HTML 的变量,因此实现函数应该足以修补该问题。补丁可以在下面找到:esc_attr

有许多WordPress钩子函数用于插件和主题代码。其中之一是钩子。确保清理使用钩子时输出的类字符串,例如 清理函数。admin_body_classesc_attr

帮助我们让互联网更安全

原文链接:https://www.itaoda.cn/blog/12486.html,转载请注明出处。

0
使用和安装有任何问题
请加客服QQ:1442071397 或wechat:pufei889


免责声明

本站所发布的部分内容自网络,该部分内容限用于学习和研究目,有版权问题的,下载后的24个小时之内,从您的电脑中彻底删除。且不得将用于商业或者非法用途,否则,一切后果请用户自负,与本站无关。

评论0

请先
没有账号?注册  忘记密码?

社交账号快速登录

温性提示

演示站服务器在国外,网站打开速度有点慢,请耐心等待

多功能、多行业外贸商城 wordpress商城WOOCOMMERCE

23+
行业模板