RCE não autenticado no GeoNetwork através de um formatador XSLT carregado
Técnicas e Métodos de AtaqueOntem, 12:53
GeoNetwork é uma aplicação Java para publicar e pesquisar metadados geoespaciais. Usa formatadores baseados em XSLT para renderizar registos públicos. A principal descoberta transforma essa funcionalidade em execução de comandos não autenticada, encadeando uma verificação de autorização ausente na criação de formatadores com a capacidade do Saxon de chamar métodos Java. O artigo também documenta um SSRF independente e XSS refletido.
• Cadeia XSLT-para-RCE — A maioria dos métodos
FormatterAdminApi exigia @PreAuthorize, mas addFormatter não. Um utilizador anónimo podia carregar uma folha de estilos e invocá-la através do endpoint público de renderização usando qualquer UUID de registo devolvido pela pesquisa do GeoNetwork. O Saxon permitia funções Java externas, pelo que a folha de estilos podia chamar java.lang.Runtime.exec() ou java.lang.ProcessBuilder. O autor demonstrou uma reverse shell na versão 4.4.11; os comandos eram executados com os privilégios do processo GeoNetwork.• SSRF — O endpoint de importação SLD emitia um HTTP GET para um URL controlado pelo chamador sem validar o esquema ou o destino. Isto permitia pedidos a serviços internos. Quando a resposta continha XML válido, o GeoNetwork devolvia o seu conteúdo ao chamador; outras respostas ainda forneciam uma primitiva SSRF cega.
• XSS refletido —
catalog.search inseria uiconfig diretamente numa chamada JavaScript inline. Uma expressão como (payload,{}) podia executar o payload enquanto devolvia o objeto esperado pelo código circundante. Abrir uma ligação manipulada executava assim JavaScript na origem do GeoNetwork, onde um token XSRF legível por script podia ser usado para pedidos protegidos como a vítima.Produto
Mais