WordPress插件漏洞影响超过100万个网站

简介:

WordPress插件漏洞影响超过100万个网站

前言

作为我们Sucuri防火墙(WAF)漏洞研究项目的一部分,为了查找存在的安全问题,我们已经审计了多个开源项目。当审计WordPress的“NextGEN”相册插件时,我们发现了一个严重的SQL注入漏洞。该漏洞允许一个未经授权的用户从受害人网站的数据库中偷取数据,包括用户的敏感信息。目前,有超过100万个WordPress网站安装了这个易被攻击的插件。

WordPress插件漏洞

你处在危险中吗?

攻击者利用该漏洞需要至少两个条件:

  1. 在你的网站中是否使用了“NextGEN Basic TagCloud Gallery”?
  2. 你是否允许你网站的用户提交要审阅的文章(投稿人)?

如果你的网站符合这两种情况之一,那你已经处在危险之中了。

漏洞原因是NextGEN相册允许用户在WordPress执行一条SQL查询时输入未经过滤的数据,本质上就是将用户输入直接添加到了一条SQL查询中。使用该攻击方法,一个攻击者可以偷取到密码的HASH、和WordPress其它配置的秘密信息。

技术细节

永远不要相信输入数据---这是一条金科玉律。如果遵守这条规律,那将会很安全。在很多情况下,我们必须问自己几个简单的问题:

  1. 这条输入数据足够安全吗?
  2. 对它进行过滤了吗?
  3. 我们遵循任何具体框架的规则和最佳实践了吗?

WordPress使用了PHP的vsprintf函数,用于在$wpdb->prepare()函数中提前准备好SQL statement,这意味着SQL语句使用格式化字符串和输入值作为参数。这使我们得出结论:将用户的输入提供给格式化字符串从来不是一个好主意,因为它可能没有对字符串进行过滤,可能会包含有效的sprintf/printf指令。

这就是为什么这个方法,get_term_ids_for_tags()引起了我们的注意:

get_term_ids_for_tags()

上面的代码可以在下面的路径中发现:

nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/package.module.nextgen_gallery_display.php

在这个源代码中,我们注意到“$container_ids”字符串是由tag输入创建的,并且它的值并没有经过适当的过滤。对于SQL注入,它是安全的,但是,它不能阻止任意格式化字符串指令/输入的插入,在WordPress数据库的$wpdb->prepare()方法下会引起问题。

$wpdb->prepare和sprintf

$wpdb->prepare和sprintf

在prepare()方法的代码中,我们注意到原始SQL代码在执行前发生了一些变化,具体变化是:如果在语句中发现%s,会被替换成‘%s’。同样,我们看到在发生变化之后,它会被传递给vsprintf函数,这意味着我们注入的任何有效的格式化字符串将有可能被处理。从PHP的sprintf函数文档中我们知道可能会发生参数交换,当没有适当过滤的输入数据添加到格式化字符串时,有可能导致类似于下面的一些问题:

1.恶意用户将下面的输入注入到格式化字符串/查询中:

2.生成的查询有可能类似于这样:

3.当传递给prepare()方法时,有可能会被修改为:

(%s将会变成‘%s’)。

4.于是,当由此产生的格式化字符串传递给vsprintf函数后,产生的SQL查询语句具有以下格式:

如上所示,这意味着我们保留了一个额外的‘符号,这打破了我们字符串的单引号序列,并会将我们生成的[any_text2]字符串变成SQL查询的一部分。

利用方案

在插件的源代码中,我们发现有两个地方的函数会创建“$container_ids”字符串,分别是:

  • 当使用标签库的短码时。它需要一个特权认证用户来执行这个攻击。
  • 当从一个“NextGEN Basic TagCloud”相册访问标签时,恶意访问者可以通过稍微修改相册的URL(网站中存在的相册),去发起攻击。

有了这些知识,一个未经授权的攻击者可以向SQL查询中添加额外的sprintf/printf指令,并利用$wpdb->prepare()的行为向执行的语句中添加攻击者控制的代码。

最终的攻击载荷(使用了TagCloud方法)类似于下面这样:

攻击载荷(使用了TagCloud方法)

(http://target.url/2017/01/17/new-one/nggallery/tags/test%1$%s)) or 1=1#)

或者

(http://target.url/2017/01/17/new-one/nggallery/tags/test%1$%s)) or 1=2#)

结论

这是一个严重漏洞,如果你使用了该插件的一个有漏洞的版本,请尽可能快的对它进行升级。

参考链接

https://arstechnica.com/security/2017/02/severe-vulnerability-in-wordpress-plugin-could-affect-1-million-sites/?utm_source=tuicool&utm_medium=referral

作者:pwn_361
来源:51CTO


相关文章
|
1月前
|
缓存 应用服务中间件 PHP
WordPress提速指南:Memcached+Super Static Cache+CDN缓存网站内容
本文分享三大网站提速方案:启用Memcached减少数据库压力,使用Super Static Cache生成静态页面,结合CDN实现全球加速,全面提升WordPress加载速度与用户体验。
129 1
|
6月前
|
存储 SQL 编解码
WordPress插件:WPJAM Basic优化设置
WPJAM Basic插件的「优化设置」凝聚了我爱水煮鱼博客多年使用WordPress的经验,涵盖功能屏蔽与增强优化两大模块。功能屏蔽部分可关闭如文章修订、Trackbacks、XML-RPC服务等冗余或潜在风险功能;增强优化则包括Google字体与Gravatar加速、防止Frame嵌入等实用设置,大幅提升网站性能与安全性,同时简化分类链接、添加图片时间戳等功能进一步优化用户体验。该插件是WordPress用户不可或缺的高效工具。
181 2
|
4月前
|
安全 机器人 API
【转】WordPress防垃圾评论:Akismet插件安装教程
Akismet 是 WordPress 官方推荐的反垃圾评论插件,由 Automattic 开发,全球安装量超 500 万次。它能智能识别并拦截垃圾评论与恶意链接,保护网站整洁与 SEO 排名。本文详解其安装、注册与配置步骤,助你轻松启用这一强大工具,为网站安全保驾护航。
153 5
|
4月前
|
前端开发 UED
【转】WordPress 评论解锁插件开发教程
本文介绍如何开发一款WordPress评论解锁插件,实现“评论后查看隐藏内容”功能。通过短代码封装、Cookie识别评论状态、样式加载等核心逻辑,帮助网站提升互动性与内容价值。插件支持自定义提示语和样式,兼顾用户体验与安全性,适用于资源分享、文章互动等场景。
94 0
|
6月前
|
网络安全 开发者
如何解决HTTPS协议在WordPress升级后对网站不兼容的问题
以上就是解决WordPress升级后HTTPS协议对网站的不兼容问题的方法。希望能把这个棘手的问题看成是学校的管理问题一样来应对,将复杂的技术问题变得更加有趣和形象,并寻觅出解决问题的方式。希望你的网站能在新的学期得到更好的发展!
178 19
|
7月前
|
缓存 搜索推荐 数据库
使用SiteGround搭建WordPress网站的方法
以上就是在SiteGround上搭建WordPress网站的步骤。这个过程可能需要一些时间和耐心,但只要你按照步骤操作,你就可以成功搭建自己的WordPress网站。
263 23
|
7月前
|
存储 监控 安全
用户为啥跳出页面?装这个WordPress插件,直接看回放!
nicen-replay 是一款强大的用户行为监控与回放插件,可完整记录用户在网站上的操作,如点击、滚动、输入等,并以视频形式呈现,助您深度分析用户行为。支持表单填写回放(隐私脱敏)、轻量无感监控,且数据存储于本地服务器,安全合规。适用于电商、内容创作、企业官网等多种场景,帮助优化用户体验和提升转化率。
155 3
|
7月前
|
运维 网络安全 PHP
2025年面板安装 Wordpress 网站教程
本文对比了2025年国内主流服务器运维面板(宝塔、1Panel、Websoft9、AMH、旗鱼云梯)的核心特点与适用场景,并详细介绍了各面板安装WordPress的教程。内容涵盖环境配置、数据库创建及源码部署等步骤,同时提供了通用注意事项与选择建议。新手可优先考虑操作直观的宝塔面板或云端管理工具旗鱼云梯,技术爱好者和企业用户则可根据需求选择更专业或定制化的方案。
410 2
|
7月前
|
缓存 PHP 数据库
WordPress网站服务器性能优化方法,站长必备。
最后,当你将这些方法组合起来并实施时,您将发现你的WordPress网站性能有了显著的提高。别忘了,这不是一次性的任务,要定期执行,保持你的车(网站)始终在轨道上飞驰。
257 21
|
8月前
|
存储 自然语言处理 搜索推荐
WordPress网站配文(又名:大力出奇迹)插件
“网站配文”插件可大量生成原创性较高的文章,助力SEO收录。插件含标题与段落数据表,自带90万+标题、118万+段落数据,支持分类设置、发布状态管理、作者随机分配、定时发布等功能。通过组合标题和段落,轻松生成百万级文章,提升网站流量与权重。
146 1