
L'injection de commandes dans rvia de Raynet permet à des adversaires d'exécuter des commandes via les options getconfig, upload, inventory et oracle.
Une validation n'est effectuée (si elle est configurée via la propriété de configuration ForbiddenCurlChars dans /etc/rvia_configuration) que lorsque l'URL est récupérée depuis le fichier de configuration /opt/rvia/rvia.cfg et non lorsqu'elle est directement transmise aux options getconfig ou upload.
/opt/rvia/rvia getconfig \;command\;

Sous le capot, la commande construite ressemble à ceci:

Via l'option oracle, il est également possible d'injecter des commandes.
Cette option peut échouer si
rviane trouve pas d'environnement Java (sous le capot, un appel à la commandefindest effectué) et que l'optionjavaPathsdans/opt/rvia/rvia.cfgn'est pas définie.
Dans ce cas, /opt/rvia/rvia.cfg est défini avec l'option javaPaths=/usr/lib/jvm/java-21-openjdk-amd64/.
/opt/rvia/rvia oracle \;command\;

La commande construite ressemble à ceci:

La même chose se produit dans le fichier de configuration (/opt/rvia/rvia.cfg) avec les options oracleUser et oraclePass.

Sous le capot, l'appel est le suivant:

La même chose s'applique à l'option upload en spécifiant une commande à exécuter après l'URL. Dans ce cas, un échappement préalable des guillemets doubles est nécessaire, ainsi qu'un hashtag à la fin de la commande pour ignorer les arguments suivants.
Cette option peut échouer s'il n'y a pas de fichiers d'inventaire à téléverser dans le répertoire
/opt/rvia/results(par défaut), fichiers créés par l'optioninventory.
/opt/rvia/rvia upload \"\;command\;#

Avec ltrace, nous voyons ce qui suit:

Enfin, l'option inventory est également vulnérable.
/opt/rvia/rvia inventory \;command\;

La commande construite sous le capot:
