wordpress SQL注入漏洞(CVE-2022–21661)

admin 2022年1月10日22:17:36wordpress SQL注入漏洞(CVE-2022–21661)已关闭评论1,840 views字数 2105阅读7分1秒阅读模式

Wordpress 核心中的 SQL 注入 (CVE-2022-21661)

恩戈布

介绍

2021年底,我们团队在Wordpress的核心发现了一个SQL Injection漏洞,最近Wordpress也发布了一个版本,针对这个bug,今天写这篇文章来分享一下这个漏洞。我是多心的。

让我们稍微谈谈 wordpress,它是世界上使用最多的开源 CMS 之一。在允许开发者自己构建插件和主题来管理网站时,使用我们的许多便捷功能,wordpress的核心会提供插件/主题调用和使用wordpress函数的功能,如数据格式、查询数据库等许多选项在提供的众多wordpress ma类中,我们经常可以在提供查询DB的WP服务器类中发现SQL Injection错误:WP_Query。

错误分析

在 5.8.3 版本中,wordpress 已经修复了这个错误,相比于 commit changes,可以在函数中clean_query看到有$query['field']处理变量前检查的部分
$query['terms']

函数clean_query从 调用get_sql_for_clause阅读ham的代码会发现这个ham的工作是为SQL查询中的条件创建子句,具体来说,他的工作是对接收到的数据进行处理,将测量数据合并为SQL查询中的一个条件,并返回给火腿爸爸。所以我们可以控制这个函数的返回数据,也就是说我们可以控制SQL查询和执行SQL注入。

回到 ham clean_query,当 this 没有被改变时,默认情况下 in 的值$query['terms']只会被擦除然后调用 to
$this->transform_query( $query, 'term_taxonomy_id' );

为避免掉入if比赛,$query['taxonomy']必须为空或la 1 Valid 才能is_taxonomy_hierarchical返回false。

函数transform_query会检查$query['field'] ==
$resulting_field
,如果是,则返回,不做进一步处理,所以如果变量
$query['field']是,那么term_taxonomy_id我们可以在不改变变量值的情况下退出函数$query['terms']

(这里的比较是使用==松散比较,在某些情况下可以使用此错误来创建所需的条件)。

退出ham后,代码流会回到调用ham clean_query
la ham
的位置,
get_sql_for_clause变量中的值$query['terms']会直接作为SQL查询的条件,导致SQL注入。

所以tom再次,为了发生SQL Injection,需要满足以下2个条件:

  • $query['field']term_taxonomy_id
  • $query['taxonomy'] 空的或 is_taxonomy_hierarchical($query['taxonomy']) === false

流导致以下错误:

剥削

虽然这是wordpress核心的bug,但是wordpress核心的复用方式并不能触发错误,在插件和主题中会自动转向错误方向。WP_Query当你要查询数据库时,插件/主题会调用该类,从源代码中识别错误的方法是在使用时WP_Query($data)和 $data 是可控的。

例如,new WP_Query(json_decode($_POST['query_vars']))有效载荷将采用以下形式:

query_vars={"tax_query":{"0":{"field":"term_taxonomy_id","terms":["<inject>"]}}} 
hoặc
query_vars={"tax_query":{"0":{"taxonomy":"nav_menu","field":true,"terms":["<inject>"]}}}

在构建错误测试环境时,启用 DEBUG 功能将可以通过基于错误的方式检测 SQL 注入:

得出结论

最新版本的wordpress中,增加了$query['field']校验,否则会转$query['terms']成整数,所以SQLI不能发生。

Do số lượng plugin va theme của wordpress kha nhiều, nen team minh mới chỉ tập
trung tim kiếm những cai co lượt download > 100k (bản miễn phi), ngoai ra
những plugin/theme bản trả phi hoặc < 100k lượt download thi chung minh chưa
co thời gian để tiếp tục lam.

Kết quả la đa tim được kha nhiều plugin va theme bị ảnh hưởng bởi lỗ hổng (cả
authen va unauthen).

Team minh đa report lỗ hổng nay cho ZDI vao cuối thang 9 va sau 3 thang lỗi đa
được Wordpress fix trong core của họ. Cụ thể timeline như sau:

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月10日22:17:36
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   wordpress SQL注入漏洞(CVE-2022–21661)https://cn-sec.com/archives/731231.html