Apache Solr 模板注入远程代码执行漏洞
Apache Solr
是美国阿帕奇(Apache)软件基金会的一款基于 Lucene(一款全文搜索引擎)的搜索服务器。 Apache Velocity
是一个提供 HTML
页面模板、 email
模板和通用开源代码生成器模板的模板引擎。在 Apache Solr
的多个版本中, Apache Solr
的 VelocityResponseWriter
功能的配置参数可通过 HTTP
请求指定,导致用户可通过设置特定参数后,通过注入任意 Velocity
模板造成任意命令执行。
影响范围
5.0.0 <= Apache Solr <= 8.3.1
环境搭建
可用 vulhub
的 solr
环境进行复现
docker-compose up -d
docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db
将 contrib/velocity/lib
中以 velocity
开头的 jar
包复制到 server/solr-webapp/webapp/WEB-INF/lib/
下:
重启 solr
服务。
漏洞复现
在满足以上环境条件的情况下,利用此漏洞分两步骤。先通过一个 HTTP
请求将 params.resource.loader.enabled
这个关键的参数设置 true
,这样就能允许任意的模板代码从用户的 HTTP
请求中指定。然后再通过指定任意 Velocity
模板代码执行任意命令。由于 Solr
默认未开启认证,在这种情况下,此漏洞利用不需要登录凭据。
{
"update-queryresponsewriter": {
"startup": "lazy",
"name": "velocity",
"class": "solr.VelocityResponseWriter",
"template.base.dir": "",
"solr.resource.loader.enabled": "true",
"params.resource.loader.enabled": "true"
}
}
执行 id
命令的返回结果:
修复建议
升级到 Apache Solr 8.4
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论