CVE-2022-42889 Apache Commons Text RCE漏洞分析

这篇具有很好参考价值的文章主要介绍了CVE-2022-42889 Apache Commons Text RCE漏洞分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近一直在对刚研发出来的自动化Web/API漏洞Fuzz的命令行扫描工具进行维护更新(工具地址:https://github.com/StarCrossPortal/scalpel),目前扫描工具已更新至第三个版本,新增了5条2022年CVE漏洞POC,修复了例如Content-
Type和body类型不一致等问题。最新版本测试稳定,满足Web/API的漏洞Fuzz和多场景的漏洞检测,欢迎大家试用。

在维护更新扫描器POC库时,笔者看到了这个被称为“Textshell”的CVE漏洞,决定学习分析一波。

项目介绍

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

漏洞描述

2022年10月13号,官方发布了Apache Commons Text的漏洞通告,漏洞编号:CVE-2022-42889。Apache Commons
Text
执行变量插值,允许动态评估和扩展属性。插值的标准格式是“${prefix:name}”,其中“prefix”用于定位执行插值的。org.apache.commons.text.lookup.StringLookup
的实例。从 1.5 版到 1.9 版,攻击者可构造恶意文本,使得Apache Commons Text 在解析时执行任意恶意代码。

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全

利用范围

1.5 <= Apache Commons Text <= 1.9

漏洞分析

环境搭建

IDEA 通过Maven导入依赖

pom.xml如下:

<dependencies>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-configuration2</artifactId>
        <version>2.7</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-text</artifactId>
        <version>1.9</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.12.0</version>
    </dependency>
</dependencies>

测试代码:

package org.text;

import org.apache.commons.text.StringSubstitutor;

public class Main {
    public static void main(String[] args) {

        StringSubstitutor interpolator = StringSubstitutor.createInterpolator();
//        String payload = interpolator.replace("${script:js:new java.lang.ProcessBuilder(\"calc\").start()}");
        String payload = "${script:js:new java.lang.ProcessBuilder(\"calc\").start()}";
        interpolator.replace(payload);
    }
}

JDK版本1.8

动态分析

在代码分析之前,我们先看看官方用户手册(https://commons.apache.org/proper/commons-
text/userguide.html)中的内容。

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全

这里演示了使用默认查找StringSubstitutor来构造复杂字符串的用法,而漏洞描述中的关键所在就是执行变量插值,其标准格式是${prefix:name}。

参考下 StringLookupFactory的文档(http://commons.apache.org/proper/commons-
text/apidocs/org/apache/commons/text/lookup/StringLookupFactory.html)

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全

自从1.5版本之后,可以满足script类型的字符串查找,但是并不是默认包括的。

将代码定位到

org.apache.commons.text.lookup.InterpolatorStringLookup#lookup

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全

这里lookup方法会提取”:“后的部分作为 prefix 值,然后根据 stringLookupMap 提取其对应的 lookup 实例化对象。

到org.apache.commons.text.lookup.ScriptStringLookup#lookup中。

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全

调用ScriptEngineManager执行代码。

了解了漏洞后半部分,打下断点,动态调试一下,看看如何调用lookup方法。

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全org.apache.commons.text.StringSubstitutor#createInterpolator

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全

这里就是实例化了StringSubstitutor 并向其中传入
StringLookupFactory.INSTANCE.interpolatorStringLookup()

org.apache.commons.text.StringSubstitutor#replace

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全对参数转换类型,然后传入
substitute 处理,后续将经过一系列判断检查。

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全

最后传入resolveVariable

org.apache.commons.text.StringSubstitutor#resolveVariable

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全在getStringLookup的值之后,就会直接到org.apache.commons.text.lookup.InterpolatorStringLookup中调用lookup方法。

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全到这里,正如开头所分析的那样lookup方法会提取”:“后的部分作为
prefix 值,然后根据 stringLookupMap 提取其对应的 lookup
实例化对象,最后通过调用ScriptEngineManager执行代码。

漏洞复现

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全
当然,网上已经有很多大佬对这个进行了分析,此漏洞与Log4Shell (CVE-2021-44228)其实是不同的,因为在 Log4Shell
中,可以从日志消息正文中进行字符串插值,该正文通常包含不受信任的输入。在 Apache Common Text issue
中,相关方法明确用于执行字符串插值并明确记录在案,因此应用程序不太可能在没有适当验证的情况下无意中传递不受信任的输入。

漏洞检测工具

工具地址: https://github.com/StarCrossPortal/scalpel

已更新:

目前扫描工具已更新至第三个版本,新增对CVE-2022-0885、CVE-2022-1054、CVE-2022-1392、CVE-2022-21500、CVE-2022-23854漏洞的检测,已内置100+漏洞POC,修复了例如Content-
Type和body类型不一致等问题。最新版本测试稳定,满足Web/API的漏洞Fuzz和多场景的漏洞检测。

持续更新:

漏洞POC、扫描工具漏洞检测优化(检测逻辑,满足对需要连续数据包关联操作漏洞场景的检测)

的检测,已内置100+漏洞POC,修复了例如Content-
Type和body类型不一致等问题。最新版本测试稳定,满足Web/API的漏洞Fuzz和多场景的漏洞检测。

持续更新:

漏洞POC、扫描工具漏洞检测优化(检测逻辑,满足对需要连续数据包关联操作漏洞场景的检测)

网络安全工程师企业级学习路线

这时候你当然需要一份系统性的学习路线

如图片过大被平台压缩导致看不清的话,可以在文末下载(无偿的),大家也可以一起学习交流一下。

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全

一些我收集的网络安全自学入门书籍

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全

一些我白嫖到的不错的视频教程:

CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全

上述资料【扫下方二维码】就可以领取了,无偿分享
CVE-2022-42889 Apache Commons Text RCE漏洞分析,apache,安全,web安全文章来源地址https://www.toymoban.com/news/detail-539707.html

到了这里,关于CVE-2022-42889 Apache Commons Text RCE漏洞分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [JAVA安全]CVE-2022-33980命令执行漏洞分析

    在 i春秋的漏洞靶标上看见了此漏洞,所以前来分析一下漏洞原理,比较也是去年 7月的漏洞。 漏洞描述:Apache官方发布安全公告,修复了一个存在于Apache Commons Configuration 组件的远程代码执行漏洞,漏洞编号:CVE-2022-33980,漏洞威胁等级:高危。恶意攻击者通过该漏洞,可在

    2024年02月15日
    浏览(13)
  • 网络靶场实战-RouterOS漏洞分析(CVE-2022-45315)

    本环境是蛇矛实验室基于\\\"火天网演攻防演训靶场\\\"进行搭建,通过火天网演中的环境构建模块,可以灵活的对目标网络进行设计和配置,并且可以快速进行场景搭建和复现验证工作。火天网演中,内置大量固件设备,包含大型网络设备及物联网设备,可以灵活选取进行测试验

    2024年02月11日
    浏览(14)
  • CVE-2020-11978 Apache Airflow 命令注入漏洞分析与利用

    漏洞软件:Apache Airflow 影响版本:= 1.10.10 Vulhub 漏洞测试靶场 进入 /root/vulhub/airflow/CVE-2020-11978/ 目录 运行以下命令启动环境 在客户端访问 server-ip:8080 找到 example_trigger_target_dag 开启 (有向无环图) 后变为 “On” 状态 在这一列的右侧点击如下按钮 输入以下字符后点击 Trigger 按钮

    2024年02月07日
    浏览(12)
  • CVE漏洞复现-CVE-2022-22965-Spring-RCE漏洞

    Spring framework 是Spring 里面的一个基础开源框架,其目的是用于简化 Java 企业级应用的开发难度和开发周期,2022年3月31日,VMware Tanzu发布漏洞报告,Spring Framework存在远程代码执行漏洞,在 JDK 9+ 上运行的 Spring MVC 或 Spring WebFlux 应用程序可能容易受到通过数据绑定的远程代码执行

    2023年04月21日
    浏览(27)
  • Docker Dirtypipe(CVE-2022-0847)漏洞复现与分析容器逃逸

    同脏牛,通过写只读内存,对映射的内存做篡改 GitHub - greenhandatsjtu/CVE-2022-0847-Container-Escape: CVE-2022-0847 used to achieve container escape 利用CVE-2022-0847 (Dirty Pipe) 实现容器逃逸 云原生之容器安全实践-安全客 - 安全资讯平台 (anquanke.com) 从脏管道(CVE-2022-0847)到docker逃逸 - 先知社区 (aliy

    2024年02月13日
    浏览(10)
  • CVE -2022-26134漏洞复现(Confluence OGNL 注入rce漏洞)

    0x01 Atlassian Confluence Atlassian Confluence是一个专业的企业知识管理与协同软件,主要用于公司内员工创建知识库并建立知识管理流程,也可以用于构建企业wiki。其使用简单,但它强大的编辑和站点管理特征能够帮助团队成员之间共享信息、文档协作、集体讨论,信息推送。因此

    2024年02月16日
    浏览(12)
  • CVE漏洞复现-CVE-2022-22947-Spring Cloud Gateway RCE

    微服务架构与Spring Cloud 最开始时,我们开发java项目时,所有的代码都在一个工程里,我们把它称为单体架构。当我们的项目的代码量越来越大时,开发的成员越来越多时,这时我们项目的性能以及我们开发的效率都会存在非常大的问题,所以对于这样的项目,我们需要把它

    2023年04月14日
    浏览(21)
  • Fortinet FortiNAC RCE漏洞复现(CVE-2022-39952)

          FortiNAC(Network Access Control) 是Fortinet的一种零信任网络访问控制解决方案,可增强用户对企业网络上的物联网 (IoT) 设备的监控。NAC 是零信任网络访问安全模型的重要组成部分,在该模型中,IT 团队可以轻松了解正在访问网络的人员和设备,以及如何保护网络内外的公司资

    2024年02月06日
    浏览(14)
  • CVE-2022-30190:Microsoft Office MSDT Rce漏洞

    读者需知 本文仅供学习使用,由于传播和利用此文所造成的损失均由使用者本人负责,文章作者不为此承担责任 目录 简介 影响版本 复现过程 风险危害 修复意见 MSDT(Microsoft Support Diagnostics Tool,微软支持诊断工具)是一个Windows实用程序,用于排除故障并收集诊断数据以供

    2024年02月05日
    浏览(34)
  • CVE-2022-30190分析以及复现和POC利用 //Microsoft Office MSDT 远程代码执行漏洞

    在微软官方的介绍里,是从 Word 等调用应用程序使用 URL 协议调用 MSDT 时存在远程执行代码漏洞。成功利用此漏洞的攻击者可以使用调用应用程序的权限运行任意代码。 意思是恶意 Word 文档可以使用远程模板功能从远程服务器获取 HTML 文件,并且 HTML 代码可以使用 Microsoft 的

    2024年02月04日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包