solr权限控制之web界面和Java相关操作

Apache Solr高危漏洞深度解析与安全加固实战指南 在企业级搜索服务中,Apache Solr作为基于Lucene构建的开源搜索平台,因其高性能和可扩展性被广泛应用。其核心原理是通过索引和检索技术实现快速内容查询,技术价值在于支撑电商、日志分析等大规模数据检索场景。然而,复杂的功能模块也带来了安全风险,例如DataImportHandler组件和Velocity模板引擎都可能成为攻击入口。本文聚焦Solr的**远程代码执行**和**服务器端请求伪造**等关键漏洞,深入剖析其利用条件与攻击路径,并提供从认证授权、配置加固到应急响应的完整防护方案,帮助开发与运维 阅读详情

solr权限控制之web界面和Java相关操作


一、在配置solr的时候我们曾在solr的WEB-INF/web.xml中注释一段代码,那段代码就是对权限的控制。只需将注释代码更改为以下即可

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Restrict access to Solr admin</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>DELETE</http-method>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
        <http-method>PUT</http-method>
    </web-resource-collection>
    <auth-constraint>
        <role-name>solr</role-name>
        <role-name>admin</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>NONE</transport-guarantee>
    </user-data-constraint>
</security-constraint>
<login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>default</realm-name>
</login-config>

二、替换之后进行如下操作

//在apache-tomcat-9.0.0.M9/conf下的tomcat-users.xml文件最后增加:
<role rolename="solr"/>  
<user username="admin" password="new-password" roles="solr"/>

以上操作方式来源于网络,亲测可用。


三、对于Java程序的操作

① spring的配置文件中solr.host=admin:123456@IP:端口号/solr/core名称

//例如:
solr.host=admin:123456@127.0.0.1:8080/solr/new_core

② 可以配置拦截器,进行请求过滤。Solr通过BASIC认证。可以添加请求头的方式进行认证(未实验,不提供代码示例。仅供参考)。

四、定时全量索引和增量索引权限配置

网上有很多关于solr-dataimporthandler-scheduler的jar.在前期的文章中也有说明和源码提供下载。但是源码中由于原作者的编码风格(不知道第几任作者,哈哈),也走了一些弯路。在此说明一下:
日志的提示级别,会导致在solr的web界面报异常,其实并不是异常信息。在GitHub下载源码没有此问题。

对于定时索引机上权限之后如何配置,查看官方文档没找到很好的解决办法,就在solr-dataimporthandler-scheduler.jar进行改造。在配置文件中增加认证字段,在发送请求是进行请求头的添加(采用BASIC)。

//示例:
#################################################
#                                               #
#       dataimport scheduler properties         #
#                                               #
#################################################
#  to sync or not to sync
#  1 - active; anything else - inactive
syncEnabled=1
#  which cores to schedule
#  in a multi-core environment you can decide which cores you want syncronized
#  leave empty or comment it out if using single-core deployment
syncCores=new_core
#  solr server name or IP address
#  [defaults to localhost if empty]
server=172.0.0.1
#  solr server port
#  [defaults to 80 if empty]
port=8080
#  application name/context
#  [defaults to current ServletContextListener's context (app) name]
webapp=solr
#  URL params [mandatory]
#  remainder of URL
#  增量索引
params=/deltaimport?command=delta-import&clean=false&commit=true
#  schedule interval
#  number of minutes between two runs
#  [defaults to 30 if empty]
interval=1
#  重做索引的时间间隔,单位分钟,默认7200,即5天; 
#  为空,为0,或者注释掉:表示永不重做索引
reBuildIndexInterval=0
#  重做索引的参数
#  全量索引
reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true
#  重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;
#  两种格式:2016-012-11 14:10:00 或者  14:10:00,后一种会自动补全日期部分为服务启动时的日期
reBuildIndexBeginTime=00:00:00
#  权限认证(用户名:密码)
authorization=admin:123456

源码修改:

//SolrDataImportProperties.java增加
public static final String AUTHORIZATION = "authorization";

//BaseTimerTask.java增加
protected String authorization;
protected void reloadParams() {
        ....
        this.authorization = this.p.getProperty(SolrDataImportProperties.AUTHORIZATION);
    }
    protected void sendHttpPost(String completeUrl, String coreName) {
            //省略前半段......
            URL url = new URL(completeUrl);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setRequestProperty("type", "submit");
            conn.setDoOutput(true);
            //增加部分====start====
            if (this.authorization != null){
                String encoding = Base64.encode(this.authorization.getBytes());
                conn.setRequestProperty  ("Authorization", "Basic " + encoding);
            }
            //增加部分======end=====
            conn.connect();

            logger.info(core + "<index update process> Full URL\t\t\t\t" +
                    conn.getURL());
            //省略后半段

solr-dataimporthandler-scheduler源码
jar包下载

Solr未授权访问漏洞深度剖析:从配置疏忽到RCE攻击链 在企业级搜索服务中,Apache Solr凭借其强大的全文检索和近实时索引能力,成为众多中大型系统的核心组件。其工作原理基于Lucene库,通过HTTP API提供丰富的查询和管理功能。然而,默认配置的“友好性”往往隐藏着巨大的安全风险,不当的安全设置会直接暴露管理接口,导致未授权访问。这种风险的技术价值在于,攻击者可利用暴露的Config API或DataImportHandler等核心功能,注入恶意配置,将简单的信息泄露漏洞升级为严重的远程代码执行(RCE)攻击,从而完全控制服务器。在电商、日志分析等应 阅读详情

相关推荐

Apache Solr CVE-2019-0193漏洞深度剖析:从原理到实战复现与防御

在Java应用安全领域,远程代码执行漏洞是威胁等级最高的安全风险之一,其核心原理在于攻击者能够通过应用暴露的接口,注入并执行恶意代码。这类漏洞常源于不安全的反序列化、表达式注入或动态脚本执行等功能。以广泛使用的企业级搜索平台Apache Solr为例,其DataImportHandler组件允许通过XML配置执行脚本,若缺乏严格的输入验证和权限控制,便可能成为攻击入口。结合JMX服务暴露的管理接口和JNDI注入技术,攻击者可构造复杂的利用链,实现从配置篡改到远程类加载的完整攻击。本文以CVE-2019-01

jackleechina2011212的博客 490

solr配置及Java实现

一、下载solr(地址:http://lucene.apache.org/solr/),并解压到一个目录中   Bin目录是执行脚本。Dist是构建完的jar包。Doc文档。Example是样例核配置。Server是solr的webapp和默认的solr_home目录。 Cmd进入在window命令窗口 (1)在solr/bin/路径下启动 solr start (2)暂停solr

davis的博客 1500

企业级Apache Solr安全加固实战:从高危漏洞修复到深度配置优化

在分布式搜索与大数据处理领域,企业级搜索平台的安全防护是系统架构中至关重要的一环。其核心原理在于通过严格的访问控制、输入验证、配置管理和运行时监控,构建纵深防御体系,以抵御外部攻击与内部风险。对于广泛应用的Apache Solr而言,其技术价值不仅体现在高性能的全文检索能力,更在于能否在复杂生产环境中稳定、安全地处理敏感数据。典型的应用场景包括电商商品搜索、内容管理系统、日志分析平台等,这些场景往往涉及用户隐私或商业数据,对安全性有极高要求。本文聚焦于Solr的远程代码执行(RCE)与反序列化等常见高危漏洞

weixin_30654419的博客 675

solr系列5——solr访问权限

solr访问权限 当我们部署完solr的时候通过浏览器访问或者java程序调用solr进行数据检索时,我们会想到这个solr任何一个人都可以访问或者调用,这是不安全的,也不可能为别人服务,这时solr的访问权限就是我们要关心的事情了。 端口限制 这种是常规的linux ipta...

chichuo1681的博客 1021

java solr solrj 带账号密码增量查询添加索引

主要讲解了 solr客户端如何调用带账号密码的solr服务器调用,实现添加索引和查询索引,以及分组查询

YOLOv5s模型训练全流程解析:从数据准备到实战检测

本文详细解析了YOLOv5s模型训练的全流程,涵盖从环境搭建、数据准备与格式转换,到模型训练、参数调优及实战检测的完整步骤。文章提供了具体的代码示例和常见问题解决方案,旨在帮助开发者,特别是新手,高效掌握YOLOv5s模型训练的核心技术,并成功应用于实际检测任务中。

weixin_29041767的博客 332

java 连接solr_java程序中连接solr并设置参数等

public List getUrlResults(List strList,String serverUrl,pageResult result)throwsMalformedURLException, SolrServerException{HttpSolrServer server=newHttpSolrServer(serverUrl);//serverUrl 表示要连接的网址List ...

weixin_39672979的博客 291

钣金件设计规范

为保证折弯 强度,钣金折弯钣金应大于材料的最小折弯半径。在设计U型弯曲件时,两弯曲边最好长度相等,以免弯曲时产品偏 移而产生废品,如果因为结构设计不允许两边一样长,为保证产品在模 具中准确定位,应预先在设计时添加工艺定位孔,特别是多次折弯成 形的零件,必须设计工艺孔为定位基准,以减少累计误差,保证产品 质量,如图2-11所示。凸包是依靠材料的延伸使钣金件形成局部凹陷或凸起的冲压工序凸包与拉深是完全不同的冲压工艺,凸包中材料厚度的改变为费意图性 的,即厚度的少量改变是变形过程中形成的,不是设计指定的要求。

制冷技术咨询与服务的博客 7326

solr 配置用户名密码以及代码账号密码连接

1. 安装 centos solr8集群搭建 2. 配置用户、密码、权限 1. 新建账号密码文件 1. 打开路径`/disk/solr/solr-8.8.1/server/etc`,此处是我的安装路径。 2. 打开文件进行编辑 , 内容如下:格式为-用户名:密码,权限 xxx:MD5:xxxx,admin 2. 添加权限验证 进入/disk/solr/solr-8.8.1/server/contexts,修改solr-jetty-context.xml文件。 <?xml version="1.

叶子来啦 3345

FreeRTOS笔记(十五)FreeRTOS总结

文章目录01 - 裸机和FreeRTOS区别1.1 - 裸机1.2 - FreeRTOS1.3 - 区别02 - 对FreeRTOS的感受03 - 推荐 上一文链接:FreeRTOS笔记(十四)[简] 软件定时器、事件组、任务通知 01 - 裸机和FreeRTOS区别   学完FreeRTOS,应该要自己总结一下FreeRTOS和裸机的区别,宏观上说,FreeRTOS是一个运行在裸机上的微内核,...

单眼皮根号三的博客 4113

格拉姆角场(GAF)实战:用Python实现时间序列图像化处理

本文深入解析了格拉姆角场(GAF)技术,这是一种将一维时间序列转化为二维图像特征的方法,以便利用卷积神经网络(CNN)等图像模型进行深度分析。文章通过Python实战代码,详细演示了GASF和GADF两种核心转换的实现过程,并探讨了其在时序数据分类任务中的应用,为故障预警、金融模式识别等场景提供了强大的图像驱动分析视角。

weixin_29079671的博客 273

solr(一)solr的安装及权限控制

最近使用并维护过solr,一直没时间总结,抽出时间总结了一下它的使用方法,分几次分享给大家,那就直接重头开始来吧... 内容: 1.Solr的版本要求、安装教程及权限控制 一:版本安装要求: Solr的版本6.0.0以上的都要求jdk8.0及以上。 (Solr各版本发布时间、对应的JDK版本、Jetty版本(http://blog.youkuaiyun.com/jiangchao858/...

peach_garden的博客 3161

分享一下使用Xilinx FPGA驱动MIPI DSI LCD屏的心路历程

分享一下调试用Xilinx FPGA驱动MIPI DSI LCD屏的心路历程,看到的朋友们,可以避免继续踩坑。

haoxingheng的专栏 5014

Solr快速入门第二讲——Solr的安装及配置

Solr的下载 首先,咱们得明确一点,在本系列教程中所使用的Solr是Apache Solr 8.4.0这个版本。大家可以从Solr官方网站(http://lucene.apache.org/solr/)下载Solr 8.4.0,根据Solr的运行环境,Linux下需要下载solr-8.4.0.tgz,Windows下需要下载solr-8.4.0.zip。 Solr的目录结构 将下载下来的solr...

李阿昀的博客 1948

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之OS模块配置详解(中)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之OS模块配置详解(中)

weixin_42412049的博客 1513

姿态传感器/陀螺仪之ICM-42670-P应用原理图设计

ICM-42670-P采用LGA-14封装,尺寸为2.5x3x0.76毫米,工作电压范围为1.71V至3.6V,支持I3CSM、I2C和SPI串行通信接口。其设计目标是提供高精度、低功耗和小型化的解决方案,以满足消费类和工业应用的需求。ICM-42670-P是一款由TDK InvenSense推出的高性能六轴MEMS运动追踪传感器,集成了3轴陀螺仪和3轴加速度计,适用于多种应用场景,包括可穿戴设备、游戏控制器、无人机、AR/VR设备等。

corlin6688的博客 1205

Java组件安全攻防实战:Solr、Shiro、Log4j漏洞组合利用与纵深防御

在Java Web应用开发中,组件安全是构建健壮系统的基石。其核心原理在于理解各组件(如日志框架、鉴权模块、搜索引擎)的内部工作机制与交互方式,攻击者往往利用组件间的信任边界和配置缺陷,构造复杂的攻击链。从技术价值看,深入掌握组件安全机制不仅能有效防御远程代码执行(RCE)、反序列化等高风险漏洞,更是实现应用安全左移、提升整体安全水位的关键。在实际应用场景中,无论是电商、金融还是企业级后台系统,Apache Solr的未授权访问、Apache Shiro的硬编码密钥、Log4j2的JNDI注入等典型漏洞,常

cuanjingyue4687的博客 477

论文阅读: 2024 ICLR AutoDAN: Generating Stealthy Jailbreak Prompts on Aligned Large Language Models

AutoDAN: Generating Stealthy Jailbreak Prompts on Aligned Large Language Models这篇论文名为“AUTODAN: GENERATING STEALTHY JAILBREAK PROMPTS ON ALIGNED LARGE LANGUAGE MODELS”,主要研究大语言模型(LLMs)的越狱攻击问题,提出了一种名为AutoDAN的新方法,能自动生成隐蔽的越狱提示,具体内容如下:

CSPhD-winston的博客 1177

hive表级权限控制_Apache Ranger——Hadoop ACL控制工具

本文主要通过ranger在hdfs acl中的应用以及原理介绍一下ranger的使用,另外介绍一下实际使用过程中碰到的问题。上篇文章回顾:时间服务器—NTP目前公司内部大多通过数据工场来管理hdfs上的数据,工场开发团队和hdfs、yarn的SRE同学也配合紧密。由于涉及到管理数据,那么不得不说到权限控制的问题。接触过hadoop的同学都应该了解hdfs上数据的权限类似linux中的权限...

weixin_39609770的博客 866

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

solr7在tomcat上的部署

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34309543的博客 189

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

solr服务器搭建tomcat

★ 1、下载Solr并解压:      下载地址:http://lucene.apache.org/★  2、解压后目录结构如下      - bin:该目录下存放了Solr的工具命令。   - contrib:该目录下存放了Solr所依赖的第三方JAR包   - dist:该目录下存放了Solr本身的JAR包。           其中solrj-lib的JAR包是Java客户端需要的JAR包。...

qq_35957398的博客 174

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

深入剖析Solr CVE-2019-17558:Velocity模板注入如何演变为致命RCE(附修复与自查指南)

本文深入解析Apache Solr的CVE-2019-17558漏洞,详细介绍了Velocity模板注入如何演变为远程命令执行(RCE)的安全风险。通过技术原理分析、攻击场景演示,提供全面的修复方案与自查指南,帮助用户有效防御这一高危漏洞。

weixin_30381317的博客 294

2.使用Tomcat8部署Solr7.5

因为生产环境不允许使用Solr,所以只能在原有部署Web项目的Tomcat中部署Solr 环境:JDK1.8;Tomcat8;Solr7.5 以下为转载内容,试了有效 转载自https://blog.youkuaiyun.com/static_coder/article/details/78401699 1、前言 solr是基于lucence的企业级搜索服务器。之前使用的都是4.x版本,...

Damionew的博客 976

Tomcat9 部署solr7

①准备环境:安装JDK1.8,tomcat8②将solr-7.1.0/server/solr-webapp/下的webapp复制到apache-tomcat-8.5.23/webapps/下并且重命名(可以随意命名),这里命名为solr。③复制solr-7.1.0/server/lib/ext下的所有jar,到apache-tomcat-8.5.23/webapps/solr/WEB-INF/li...

m0_37598953的博客 744

Apache Solr、Shiro、Log4j2三大组件漏洞原理与本地复现实战

在软件开发和系统架构中,第三方组件是构建现代应用的基础模块,它们极大地提升了开发效率,但也引入了潜在的安全风险。组件安全的核心原理在于,当这些模块存在设计缺陷、配置不当或版本过旧时,攻击者可能利用其暴露的接口或功能实现权限提升或远程代码执行。从技术价值看,深入理解组件漏洞的形成机制,是构建纵深防御体系、提升整体安全水位的关键。在应用场景上,无论是Web服务、身份认证还是日志记录,核心组件一旦被攻破,往往导致整个系统沦陷。本文聚焦于Apache生态中三个经典高危组件——Solr的Velocity模板注入、Sh

weixin_33770878的博客 455
上一篇: 富文本之BootStrap-wysiwyg
下一篇: centOS7安装MySQL
motui
博客等级 码龄10年 84粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值