Apache-Solr-RCE-via-Velocity-template
Link de referência
Causa da vulnerabilidade:
- Quando um atacante pode acessar diretamente o console do Solr, ele pode modificar o arquivo de configuração desse nó enviando uma solicitação POST semelhante a /节点名/config.
- O Apache Solr integra por padrão o plugin VelocityResponseWriter. A opção params.resource.loader.enabled nos parâmetros de inicialização do plugin controla se o carregador de recursos de parâmetros pode especificar um modelo nos parâmetros de solicitação do Solr; o padrão é false. Quando params.resource.loader.enabled é definido como true, será permitido que o usuário especifique o carregamento de recursos relacionados definindo parâmetros na solicitação, o que significa que um atacante pode executar comandos no servidor construindo uma solicitação de ataque maliciosa.
Reprodução da vulnerabilidade: vulnerabilidade recorrente
Método 1: verificação manual
Acesse http://x.x.x.x:8983/solr/#/ para entrar na interface principal, clique em Core Selector no lado esquerdo para visualizar o nome da coleção.

Use os seguintes dois payloads
-
Modificar as configurações da coleção

-
Execução de comando
Execução de comando bem-sucedida!
Método 2: verificação via script


Recomendações de correção da vulnerabilidade:
- Recomenda-se garantir que as configurações de rede permitam apenas tráfego confiável para comunicar com o Solr.
Recomenda-se garantir que as configurações de rede permitam apenas tráfego confiável para comunicar com o Solr.
- Defina params.resource.loader.enabled como false e depois configure o arquivo de configuração como somente leitura.
Especifique params.resource.loader.enabled como false, depois defina o arquivo de configuração como somente leitura.
Por padrão, params.resource.loader.enabled é false e não há arquivo de configuração. Se você quiser modificar o valor correspondente ou forçar a modificação, é necessário um arquivo de configuração.
Por padrão, params.resource.loader.enabled é false. Não há arquivo de configuração. Se você quiser modificar seu valor correspondente ou forçar a modificação, você precisa configurar o arquivo.
Por padrão, o arquivo de configuração do nó configoverlay.json tem permissão de leitura e escrita.
Por padrão, o arquivo de configuração do nó configoverlay.json é o arquivo de configuração com permissão de leitura e escrita.
Caminho do arquivo de configuração: (depende da situação real)
Caminho: (dependendo da situação real)
./example/example-DIH/solr/db/conf/configoverlay.json:
./example/example-DIH/solr/mail/conf/configoverlay.json:
./example/example-DIH/solr/solr/conf/configoverlay.json:
Defina params.resource.loader.enabled como false em todos os configoverlay.json. Se não houver configoverlay.json, é recomendado criar um manualmente e depois definir suas permissões como somente leitura.
Defina todos os params.resource.loader.enabled em configoverlay.json como false. Se não houver configoverlay.json, é recomendado criar um manualmente e depois definir suas permissões como somente leitura.
Descrição do EXP:
- É necessário pesquisar o nó e percorrer para determinar quais nós podem receber POST.
Precisamos pesquisar os nós e reverter quais poderiam ser POSTados.
- É necessário determinar a versão do sistema operacional e inserir o comando para executar a operação.
Além disso, precisamos determinar a versão do sistema operacional e decidir inserir o comando para executar a operação.