背景

SQL注入漏洞是用来构建SQL查询的用户输入未经适当处理导致的漏洞。比如:

图1: 使用WordPress的SQL查询示例

从上面的代码来看,其中存在SQL注入攻击漏洞,因为从$_GET中提取的$_id在传递给SQL查询时没有经过任何处理。在最新的WordPress版本中,默认会在$_POST/$_GET/$_REQUEST/$_COOKIE中加入了magic quotes。这可以帮助WordPress维护,并提供最佳的安全能力。因此,上面的代码其实是没有漏洞的。

除了给所有输入值加斜杠(slash)外,WordPress会提供许多内置的处理函数来对输入进行处理,以确保输出的安全。开发者可以使用sanitize_email()来处理邮件地址,或用sanitize_text_field()来清除文本域的值,或用sanitize_sql_orderby()来验证SQL ORDER BY clauses。用户输入最常见的类型是由WordPress sanitize_*()的类来涵盖的。

虽然WordPress核心是尽最大可能来帮助开发者来防止恶意伪造的用户输入、不好的编码实践、误用逃逸函数会导致简单或关键的漏洞。

漏洞分析

FG-VD-19-092 – SQL Injection in AdRotate Plugin through 5.2 for WordPress

该漏洞是一个经典SQL注入漏洞,存在于 AdRotate插件5.2版本中。漏洞位于dashboard/publisher/adverts-edit.php文件的第25行。

图2: adverts-edit.php中的SELECT statement用于从数据库中获取广告

变量$ad_edit_id用于构建SQL查询。该变量是从函数adrotate_manage的变量$_GET中提取的。

图3: 用户控制的变量$ad_edit_id

因为esc_attr变量只能逃逸HTML属性,在SQL查询中$ad_edit_id变量无法用双引号逃逸,因此可以注入payload到$ad_edit_id中来执行任意的SQL语句。

图4: AdRotate插件5.2泄漏的数据库版本

因为管理接口只对管理员角色可用,缺乏CSRF token使非认证的攻击者可以远程窃取信息,包括session token,可以通过SQL注入漏洞以最小的用户交互来引发XSS:

图5: SQL注入引发的XSS

开发者的补丁中只是对查询中的$ad_edit_id变量加了引号。

图6: AdRotate 5.3版本中的SQL注入漏洞补丁

FG-VD-19-099 – SQL Injection in NextGEN Gallery Plugin through 3.2.10 for WordPress

NextGEN Gallery 插件提供了很完美的照片管理方法,操作也不复杂,从2007年开始就成为标准的WordPress照片管理插件,每年新下载量超过150万。截止目前,NextGEN Gallery 插件的活跃安装超过90万,是照片管理插件中使用最多的之一。

该插件的AJAX API中存在漏洞,用户可以在发布文章时从图片库中附件照片。

图7: 用户提供的输入在get_displayed_gallery_entities_action中处理

modules/attach_to_post/package.module.attach_to_post.php中的函数get_displayed_gallery_entities_action是负责在特定的图片库中显示图片的。数组参数 displayed_gallery是通过POST方法提取的以创建gallery对象,如第119行代码所示。对象的属性可以通过esc_sql帮助函数逃逸。然后调用第130行的get_entities,指向modules/nextgen_gallery_display/package.module.nextgen_gallery_display.php中的函数get_entities。

图8: get_entities根据返回的请求调用对应的函数

因为返回请求有both值,因此第832行的_get_image_entities会被调用。

图9:_get_image_entities获取gallery中的所有图像

该函数会准备一个查询来返回展示的gallery中的所有图像。如第1041行所示,会使用一个基于来自创建的gallery对象的$sort_by和$sort_direction的排序过程。任意有权限使用NextGEN Gallery 的经过认证的用户都可以操作params来创建gallery对象。虽然该对象的所有属性都可以用esc_sql逃逸,但攻击者并不需要逃逸引号就可以在ORDER BY语句中执行SQL注入攻击。因此,esc_sql无法预防NextGEN Gallery 被攻击者利用的情况。

图10: NextGEN Gallery中的SQL盲注

图11: NextGEN Gallery中的SQL盲注2,false会返回空结果

发布的补丁中只允许ORDER BY语句中出现特定的值,因此查询就是安全的。

图12: Imagely通过白名单修复安全漏洞

FG-VD-19-098 – SQL Injection in Impress Give Plugin through 2.5.0 for WordPress

Give 是评分最高、下载量最多的wordpress插件。该插件的漏洞代码位于includes/donors/class-give-donors-query.php的get_order_query函数中。

图13: Give插件中的漏洞代码

如注释所示,get_order_query尝试移除ORDER BY语句中不存在的列,通过使用esc_sql帮助函数来过滤排序的值。因为467行中销毁不存在的行后,会在第470行中重插入一个逃逸值,因此移除并不会如研究人员所想。许多人都知道esc_sql函数在预防ORDER BY语句中的SQL注入攻击中是没有用处的。因此,构建的查询中是有漏洞的。相同的SQL盲注技术可以用来利用该漏洞。

Impress 团队发布的1行补丁允许过滤器正常工作,因此查询是安全的。

图14: Give插件补丁

建议

为了预防开发WordPress插件过程中的SQL注入攻击。研究人员建议开发者遵循WordPress编码规范和安全编码最佳实践。研究人员建议:

· 不要信任任何用户输入。对用户提供的所有数据执行有效性检查和处理。

· 如果不确定数据是不是安全的,应用内置的处理函数来适配数据。比如,sanitize_sql_orderby()就修复了所有发现的漏洞。

· 除了使用esc_sql,99%的case可以用预先准备好的语句。

· 如果无法使用预先准备好的语句,可以使用esc_sql和引号内的逃逸值。

wordpress漏洞_多个WordPress插件SQL注入漏洞分析相关推荐

  1. CVE-2022-20261 Wordpress的插件SQL注入漏洞分析及修补

    简介 wordpress是世界上使用最多的开源 CMS 之一.在允许开发者自己构建插件和主题来管理网站时,使用我们的许多便捷功能,wordpress的核心会提供插件/主题调用和使用wordpress函 ...

  2. /plus/recommend.php sql注入漏洞,DedeCMS 全版本通杀SQL注入漏洞利用代码及工具 -

    DedeCMS 全版本通杀SQL注入漏洞利用代码及工具 目前官方最新版已修复该漏洞 V5.7.37 GBK正式版20140228常规更新补丁 http://www.dedecms.com/pl/ ht ...

  3. php100漏洞,phpyun人才管理系统V5.0 SQL注入漏洞分析

    *世界上最愚蠢的事莫过于我们无比狂热地做一件事,到最后却不知道为什么要做* cms背景介绍 PHP云人才管理系统(phpyun)是国内主流人才管理CMS系统之一!PHP云专为中文用户设计和开发,采用: ...

  4. mysql sql注入漏洞修复_从Java角度修复SQL注入漏洞

    很多情况因为过滤不严导致很多网站存在sql注入,这里以用户登陆为例,简单举例 首先创建一个测试的数据库 比较基础,不写创建过程了 java代码如下: packagecn.basic.jdbc;impo ...

  5. 最新dotCMS SQL注入漏洞 攻击者可获得敏感数据 绿盟科技发布安全威胁通告

    dotCMS 3.6.2以下版本可能存在SQL注入漏洞 ,绿盟科技发布<dotCMS SQL注入漏洞安全威胁通告>,通告全文如下 2017年2月15日,seclists.org网站发布了关 ...

  6. SQL 登录注入脚本_vBulletin再修复高危RCE和SQL注入漏洞

    上个月末,vBulletin刚发布了一个针对高危远程代码执行漏洞的补丁,又在最近发布了一个全新安全补丁,针对了软件中的另外3个严重漏洞. 此次牵涉的漏洞影响vBulletin 5.5.4及以前的版本, ...

  7. 拿到一个网站,怎么判断该网站是否存在sql注入漏洞?

    漏洞挖掘 漏洞利用 修复漏洞 sql注入漏洞.文件操作漏洞.xss.rce.逻辑漏洞 反序列化.... sql注入漏洞: 网站的数据库 脱裤 拖取网站数据库 数据库基础: 数据库基本结构:数据库 -- ...

  8. 宏景eHR SQL注入漏洞复现(CNVD-2023-08743)

    0x01 产品简介 宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化.协同化.流程化.战略化需求的软件. 0x02 漏洞概述 宏景eHR 存在SQL注入漏洞,未经过身份认证的 ...

  9. WordPress ProPlayer插件‘id’参数SQL注入漏洞

    漏洞名称: WordPress ProPlayer插件'id'参数SQL注入漏洞 CNNVD编号: CNNVD-201305-468 发布时间: 2013-05-22 更新时间: 2013-05-22 ...

最新文章

  1. UA OPTI570 量子力学21 Atom Trapping
  2. ambari hive mysql_ambari方式安装hadoop的hive组件遇到的问题
  3. java泛型bean copy list
  4. GC垃圾回收的三色标记算法
  5. 查看win10版本方法,及win10升级方法
  6. windows 常用系统变量
  7. 动态调整canvas时的问题
  8. Linux网络参数设置
  9. 在Ubuntu 16.04下安装nodejs
  10. 苹果电风扇软件Macs Fan Control Pro安装教程
  11. Packet Tracer 思科模拟器入门教程 之九 路由器的基本配置
  12. web打印实现几种方法
  13. 经纬度 度分秒转换为小数
  14. 无线PLC专用数据终端应用方案
  15. python中pip作用_python中的pip有什么作用
  16. trivial、standard layout、POD和literal类型解析
  17. 英文视频添加中英双语字幕(基于Whisper语音识别和Google翻译)
  18. 2019-9-29 opencv摄像机标定与三维重构4-Depth Map from Stereo Images立体图像中的深度图(视差图)
  19. Salesforce-Apex基础
  20. 支付宝快捷登录相关事宜

热门文章

  1. 日志中的秘密 Windows登录类型知多少?
  2. Java NIO:IO与NIO的区别
  3. 韩顺平循序渐进学java 第19讲 多维数组
  4. magento 修改产品类型的方法 change product type
  5. iOS - UITableViewCell Custom Selection Style Color
  6. TWaver html5 + NodeJS + express + websocket.io + redis 快速搭建项目(一)
  7. (转帖)数据库时代的终结
  8. 使用LogKit进行日志操作
  9. android 六边形简书,深入理解六边形架构
  10. python调用api应用接口_第三方免费快递物流查询接口平台(快递鸟)api接口调用...