【漏洞分析】CVE-2022–21661 WordPress核心框架WP_Query SQL注入漏洞原理分析与复现
1|0影响版本
wordpress < 5.8.3
2|0分析
参考:https://blog.csdn.net/qq_46717339/article/details/122431779
在 5.8.3 版本中,wordpress 已经修复了这个错误,比较[提交更改][Link 1]可以在处理变量之前clean_query
添加检查的函数中看到。$query['field']``$query['terms']
函数clean_query
是从 调用的get_sql_for_clause
。阅读该函数的代码会发现,该函数的工作是为 SQL 查询中的条件创建子句,具体来说,它的工作是处理接收到的数据,将这些数据组合成 SQL 查询中的条件。将其返回给父函数。所以我们可以控制这个函数的返回数据,也就是说我们可以控制SQL查询,进行SQL注入。
回到函数clean_query
,当这个改动没有做的时候,默认情况下$query['terms']
只会删除in的值,然后再调用到$this->transform_query( $query, 'term_taxonomy_id' );
。
为了避免下降if
,它$query['taxonomy']
需要为空或is_taxonomy_hierarchical
返回false的值。
该函数transform_query
将检查$query['field'] == $resulting_field
,如果为真,则返回并且不做进一步处理,因此如果变量$query['field']
为term_taxonomy_id
,我们可以退出函数而不更改变量值$query['terms']
。
(这里的比较是使用==
并且存在Loose比较的漏洞,在某些情况下这个错误可以用来随意创建条件句)。
函数逃逸后,返回原位的代码流会调用clean_query
函数get_sql_for_clause
,变量的值$query['terms']
会直接作为SQL查询条件,导致SQL注入。
利用链
主要参数$query
只需要满足以下2个条件,就可以触发SQL注入漏洞:
$query['include_children']
取值为false
(或者is_taxonomy_hierarchical($query['taxonomy'])
取值为false
);$query['field']
取值为term_taxonomy_id
虽然这是wordpress核心的bug,但是wordpress核心的复用方式并不能触发错误,在插件和主题中会自动转向错误方向。WP_Query
当你要查询数据库时,插件/主题会调用该类,从源代码中识别错误的方法是在使用时WP_Query($data)
和 $data 是可控的。
例如,new WP_Query(json_decode($_POST['query_vars']))
有效载荷将采用以下形式:
3|0环境搭建
0 本地下载wordpress 5.8.2
1 首先自己建一个数据库,供wordpress使用。
注意 自己先建一下数据库,wordpress无权建立数据库,否则会安装不成功。
2 phpstudy 把wordpress放进去就可以
3 访问http://127.0.0.1/wordpress-5-8-2/wordpress/开始安装,选择自己刚才创建的数据库即可。
4 搭建完成。登录后台的记得要注销退出,否则无法复现。
4|0修改配置
为了看到报错信息,可以将debug打开,如果不打开只能盲注,延时或者外带
5|0复现
5|1检查是否修复
首先看下wp-includes/class-wp-tax-query.php 559行是否变化,我下载的5.8.2 已经修补了,需要注释掉。
然后疯狂打断点
5|2打断点
我在默认主题的位置新添加了一个函数,并加入到action
断点如下,不会的照着打就可以了。
functions.php 640行开始
需要加下如下函数,默认主题没有触发点,其他主题应该有,想搞的懂了原理,可以自己去挖掘哟
wp-includes/class-wp-tax-query.php
5|3打完开始请求
5|4构造报错请求
构造请求如图所示
5|5构造延时请求
报错需要开启debug,但是debug默认关闭,所以盲注
5|6构造外带请求
6|0注意点
6|1当登录之后,这个点就不能利用了
6|2默认只能盲注
默认wordpress不开启debug所以不会报错回显,所以只能盲注,外带
7|0z2o安全攻防交流群
加入星球不定时分享最新漏洞复现,POC,渗透测试新工具,内外网渗透测试骚操作。
关注公众号 公众号不定时分享 最新漏洞复现,POC,内外网渗透测试骚操作。(~ ̄▽ ̄)~
加群不定时分享 最新漏洞复现,POC,内外网渗透测试骚操作。(~ ̄▽ ̄)~ , 加不进去的小伙伴可以公众号回复 “加群”,添加Z2OBot 小K 自动拉入交流群
__EOF__

本文链接:https://www.cnblogs.com/forforever/p/15799392.html
关于博主:喜欢读书、旅行、爬山。评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架