【漏洞复现】CVE-2019-12409 Apache Solr RCE 漏洞复现利用、开启ufw防火墙进行防御 【实验报告】
这就是iptables的目的。默认的配置文件solr.in.sh的选项ENABLE_REMOTE_JMX_OPTS字段值被设置为”true”,这会启用JMX监视服务并会在公网中监听一个18983的RMI端口,没有任何认证,也就是说在无需身份验证情况下,攻击者结合使用JMX RMI就会造成远程代码攻击。可以通过“打开”或“关闭”(即过滤)为特定类型的流量指定的端口来允许或阻止流向特定应用程序的流量。
【漏洞复现】CVE-2019-12409 Apache Solr RCE 漏洞复现利用、开启ufw防火墙进行防御 免责声明: 实验内容及步骤(点击下面链接可参考) 实验一、CVE-2019-12409 Apache Solr RCE 漏洞复现利用 1.环境准备 靶机:ubuntu18.04 (192.168.134.226) 攻击机:Kali Linux (192.168.134.243) 攻击软件:metasploit framework 被攻击环境:Solr 8.2.0 两台虚拟机互ping成功: 2.背景介绍 Apache Solr 是一个开源的搜索服务器,使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。 3.漏洞成因 默认的配置文件solr.in.sh的选项ENABLE_REMOTE_JMX_OPTS字段值被设置为”true”,这会启用JMX监视服务并会在公网中监听一个18983的RMI端口,没有任何认证,也就是说在无需身份验证情况下,攻击者结合使用JMX RMI就会造成远程代码攻击。 在开放的端口上,利用 javax.management.loading.MLet的getMBeansFromURL 方法来加载一个远端恶意的 MBean,就可以造成远程代码执行了。 远端的恶意MBean来自于metasploit提exploit/multi/misc/java_jmx_server,具体的payload攻击载荷是meterpreter。 4.复现与利用过程 4.1安装环境 影响版本是Apache Solr的8.1.1和8.2.0,目前官网这两个版本已经不直接提供了。8.2.0的下载地址是:http://archive.apache.org/dist/lucene/solr/8.2.0/solr-8.2.0.zip; 其他版本也可以通过修改URL的办法,查询下载:wget http://archive.apache.org/dist/lucene/solr/8.2.0/solr-8.2.0.zip 4.2环境启动 靶机安装好Solr后,进入其bin目录,启动一个solr的样例服务(需要root权限) 4.3 验证环境 打开浏览器输入ip:8983进入solr界面,启动成功! 4.4 漏洞利用 4.4.1进入攻击机kali,给到root权限,使用msfconsole命令进入; 4.4.2执行以下命令,注意RHOSTS为靶机IP,RPORT为18983端口: <1>use exploit/multi/misc/java_jmx_server <2>show options <3>set RHOSTS 192.168.134.226 <4>set RPORT 18983 可以看到获取到靶机的root 权限,并且当前目录位/mnt/hgfs/wangluoanquan/solr-8.2.0/server,说明已经成功登陆并渗透!以下为漏洞利用的10个命令: 实验二、ufw防火墙 1.ufw防火墙介绍 进出计算机的流量通过“端口”进行过滤,“端口”是附加到供特定应用程序使用的流量数据包的相对任意的名称。 按照惯例,某些端口通常用于特定类型的应用程序。例如,端口 80 通常用于不安全的 Web 浏览,端口 443 用于安全的 Web 浏览。 可以通过“打开”或“关闭”(即过滤)为特定类型的流量指定的端口来允许或阻止流向特定应用程序的流量。例如,如果端口 80 处于“关闭状态”,则无法进行(不安全的)Web 浏览。防病毒页面也可能令人感兴趣。 Linux 内核包括 netfilter 子系统,该子系统用于操作或决定进入或通过计算机的网络流量的命运。所有现代 Linux 防火墙解决方案都使用此系统进行数据包过滤。 内核的数据包过滤系统对于没有用户界面来管理它的用户或管理员来说几乎没有用处。这就是iptables的目的。当数据包到达您的计算机时,它会根据通过 iptables 提供给它的规则移交给 netfilter 子系统进行接受、操作或拒绝。因此,iptables 就是您管理防火墙所需的全部内容(如果您熟悉它的话)。但是,许多前端可用于简化任务。 因此,用户可以配置防火墙以允许某些类型的网络流量传入和传出系统(例如 SSH 或 Web 服务器流量)。这是通过打开和关闭防火墙中的 TCP 和 UDP“端口”来完成的。此外,防火墙可以配置为允许或限制对特定 IP 地址(或 IP 地址范围)的访问。 2.ufw指令熟悉 2.1检查ufw防火墙状态:sudo ufw status verbose 2.2 ufw防火墙启用及禁用:sudo ufw enable/sudo ufw disable ufw防火墙启用启用后,利用漏洞实现远程代码攻击失效 2.3 允许和拒绝(特定规则):sudo ufw allow 18983/sudo ufw deny 18983 可以看到,kali又有了对ubuntu的控制权。 我们可以使用sudo ufw deny 18983恢复拒绝访问。 2.4 开启防火墙日志:ufw logging on 我们可以在/var/log/ufw.log里查看日志信息。 2.5 可以通过获取手册页来检索最新的语法和手册:man ufw |
实验总结:
我查看了JAVA_HOME发现没有问题,后面找到unset JAVA_HOME这个重置这个环境变量的方法,再使用./solr -e dih -force后成功开启solr样例服务! 3.攻击机kali运行run后无法获取到root权限 原因一:注意RHOSTS为靶机IP,RPORT为18983端口; 原因二:靶机Ubuntu开启了防火墙,我关闭ufw防火墙后获取到了! |
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)