当前位置: 首页 > news >正文

漏洞复现-Apache Commons Text远程代码执行漏洞(CVE-2022-42889)

1.漏洞描述

Apache Commons Text 是一个低级库,用于执行各种文本操作,例如转义、计算字符串差异以及用通过插值器查找的值替换文本中的占位符。

Apache Commons Text 是一个专注于字符串算法的库。Apache Commons Text 存在远程代码执行漏洞,Apache Commons Text 执行变量插值,允许动态评估和扩展属性。在1.5到1.9版本中,包括一些默认的插值器,如果使用不受信任的配置值,则在受影响版本中使用插值默认值的应用程序可能容易受到远程代码执行的攻击。

2.影响版本

1.5 <= Apache Commons Text <= 1.9

3.漏洞分析

StringSubstitutor.replace方法

调用了substitute解析传入的字符串

方法中解析了头部和尾部的${},把其中的值取出来进一步解析

这里获取的StringLookup就是之前使用StringSubstitutor.createInterpolator()创建实例化对象的地方

并在构造方法中调用了this.setVariableResolver(variableResolver)设置VariableResolver为InterpolatorStringLookup类,之后继续跟入InterpolatorStringLookup的lookup方法中。

方法截取了":"前面的script关键词,并以此为索引获取对应的StringLookup对象

可以看到系统支持的类型有18种操作方式

并在后续调用了ScriptStringLookup.lookup方法

之后的代码就是获取js脚本引擎,并通过ScriptEngine.eval的方法执行

4.修复建议

修复建议

升级版本到Apache Commons Text 1.10.0版本。

下载地址:https://commons.apache.org/proper/commons-text/download_text.cgi

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 使用 OpenAI Whisper v2 模型进行中英文混合语音识别
  • SpringBoot + Hadoop + HDFS + Vue 实现一个简单的文件管理系统
  • linux常用命令备忘录
  • Mapper使用记录
  • Java 并发编程:线程变量 ThreadLocal
  • OceanBase VS Doris 对比分析
  • Bio_ClinicalBERT 医疗临床领域大模型,参数里 0.11B【Hugging face 】
  • C语言 软件设计的七大原则,及其应用案例
  • labelme标注的图像分割json文件转图片格式
  • Flutter 学习 一部分注意点记录
  • css实现磨砂效果(filter 与 backdrop-filter 的对比分析)
  • Lambda 表达式:解锁编程世界的魔法之门
  • 「MyBatis」数据库相关操作2
  • 【论文】NCScope: Hardware-Assisted Analyzer for Native Code in Android Apps
  • vue手搓悬浮在线客服按钮
  • [译]前端离线指南(上)
  • crontab执行失败的多种原因
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • docker-consul
  • gulp 教程
  • IP路由与转发
  • java概述
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Mysql优化
  • REST架构的思考
  • vue 个人积累(使用工具,组件)
  • 从零开始的无人驾驶 1
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 全栈开发——Linux
  • 收藏好这篇,别再只说“数据劫持”了
  • 【干货分享】dos命令大全
  • const的用法,特别是用在函数前面与后面的区别
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • #每日一题合集#牛客JZ23-JZ33
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (pytorch进阶之路)扩散概率模型
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (solr系列:一)使用tomcat部署solr服务
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (四)JPA - JQPL 实现增删改查
  • (图)IntelliTrace Tools 跟踪云端程序
  • (转)jQuery 基础
  • .Net 8.0 新的变化
  • .net dataexcel 脚本公式 函数源码
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .sh
  • @font-face 用字体画图标
  • @JsonSerialize注解的使用
  • [AI资讯·0612] AI测试高考物理题,最高准确率100%,OpenAI与苹果合作,将ChatGPT融入系统中,大模型在物理领域应用潜力显现
  • [Android]使用Android打包Unity工程
  • [Android]使用Git将项目提交到GitHub