Exploit para Apache Solr de ejecución remota de código mediante inyección de plantillas Velocity, que permite la ejecución de comandos en instancias vulnerables a través de solicitudes POST manipuladas.
Cuando un atacante puede acceder directamente a la consola de Solr, puede modificar el archivo de configuración del nodo enviando una solicitud POST similar a /nombre_del_nodo/config.
Apache Solr integra por defecto el plugin VelocityResponseWriter. En los parámetros de inicialización de este plugin, la opción params.resource.loader.enabled se utiliza para controlar si se permite que el cargador de recursos de parámetros especifique plantillas en los parámetros de solicitud de Solr. El valor predeterminado es false. Cuando params.resource.loader.enabled se establece en true, se permite al usuario especificar la carga de recursos relacionados mediante la configuración de los parámetros de la solicitud, lo que significa que un atacante puede ejecutar comandos en el servidor mediante la construcción de una solicitud de ataque amenazante.
Reproducción de la vulnerabilidad: vulnerabilidad recurrente
Método 1: detección manual
Acceda a http://x.x.x.x:8983/solr/#/ para entrar en la interfaz principal y haga clic en Core Selector en el lado izquierdo para ver el nombre de la colección.
Utilice los siguientes dos payloads:
Modificar la configuración de la colección
Ejecución de comandos
¡Ejecución de comandos exitosa!
Método 2: detección mediante script
Recomendaciones para la corrección de la vulnerabilidad:
Se recomienda asegurarse de que la configuración de red solo permita que el tráfico confiable se comunique con Solr.
Establezca params.resource.loader.enabled en false y luego configure el archivo de configuración como de solo lectura.
De forma predeterminada, params.resource.loader.enabled es false; no hay ningún archivo de configuración. Si desea modificar su valor correspondiente o forzar su modificación, necesitará un archivo de configuración.
De forma predeterminada, el archivo de configuración del nodo configoverlay.json tiene permisos de lectura y escritura.
Ruta del archivo de configuración: (según la situación 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:
Establezca params.resource.loader.enabled en false en todos los archivos configoverlay.json. Si no existe configoverlay.json, se recomienda crearlo manualmente y luego establecer sus permisos como de solo lectura.
Descripción del EXP:
Es necesario buscar nodos y recorrerlos para determinar qué nodos pueden recibir solicitudes POST.
Es necesario determinar la versión del sistema operativo e ingresar el comando para ejecutar la operación.