Raynet 的 rvia 中的命令注入允许攻击者通过 getconfig、upload、inventory 和 oracle 选项执行命令。
只有当从 /opt/rvia/rvia.cfg 配置文件获取 URL 时(如果在 /etc/rvia_configuration 中通过配置属性 ForbiddenCurlChars 配置了验证),才会执行验证;而当 URL 直接传递给 getconfig 或 upload 选项时,不会执行验证。
/opt/rvia/rvia getconfig \;command\;

在底层,构造的命令如下所示:

通过 oracle 选项也可以注入命令。
如果
rvia找不到 Java 环境(底层会调用find命令),并且没有在/opt/rvia/rvia.cfg中设置javaPaths选项,此选项可能会失败
在这种情况下,/opt/rvia/rvia.cfg 中定义了选项 javaPaths=/usr/lib/jvm/java-21-openjdk-amd64/。
/opt/rvia/rvia oracle \;command\;

构造出的命令如下所示:

同样的情况也出现在配置文件(/opt/rvia/rvia.cfg)中的 oracleUser 和 oraclePass 选项上。

底层调用如下:

upload 选项也同理,可以在指定 URL 之后附带要执行的命令。在这种情况下,需要事先转义双引号,并在命令末尾添加一个井号(#)以忽略后续参数。
如果
/opt/rvia/results(默认目录)中没有可供上传的 inventory 文件(这些文件由inventory选项生成),此选项可能会失败
/opt/rvia/rvia upload \"\;command\;#

通过 ltrace 可以看到以下内容:

最后,inventory 选项也存在漏洞。
/opt/rvia/rvia inventory \;command\;

底层构造出的命令:
