GlassFish漏洞总结复现

写在前面:本文为漏洞复现系列GlassFish篇,复现的漏洞已vulhub中存在的环境为主。

欢迎大家点赞收藏,点点关注更好了hhhhhh

简介

GlassFish 是用于构建 Java EE 5应用服务器的开源开发项目的名称。它基于 Sun Microsystems 提供的 Sun Java System Application Server PE 9 的源代码以及 Oracle 贡献的 TopLink 持久性代码。该项目提供了开发高质量应用服务器的结构化过程,以前所未有的速度提供新的功能。
默认端口:8080(Web应用端口,即网站内容),4848(GlassFish管理中心)
指纹信息:
Server: GlassFish Server Open Source Edition 4.1.2
X-Powered-By: Servlet/3.1 JSP/2.3 (GlassFish Server Open Source Edition 4.1.2 Java/Oracle Corporation/1.8)

GlassFish 任意文件读取(CVE-2017-1000028)

漏洞原理

java语言中会把%c0%af解析为\uC0AF,最后转义为ASCCII字符的/(斜杠)。利用..%c0%af..%c0%af来向上跳转,达到目录穿越、任意文件读取的效果。 计算机指定了UTF8编码接收二进制并进行转义,当发现字节以0开头,表示这是一个标准ASCII字符,直接转义,当发现110开头,则取2个字节 去掉110模板后转义。

java语言中会把%c0%ae解析为\uC0AE,最后转义为ASCCII字符的.(点)。利用%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/来向上跳转,达到目录穿越、任意文件读取的效果。
image-20211113221256414
C0AF 转换位二进制为 110 00000 10 101111 ,110开头去掉摸板后为00000 101111 转换为10进制为47,ASSCI为/;C0AE同理。

影响范围

<=4.1.2版本

漏洞复现

下载4.1.2版本的GlassFish,解压后进入glassfish/bin目录下打开CMD窗口输入asadmin start-domain启动glassfish;asadmin stop-domain 停止glassfish。
image-20211113221627870
访问:http://your-ip:8080进入web应用界面;http://your-ip:4848进入管理中心。
image-20211113221907582
这里有个坑点,解压路径中不要有中文,否则管理中心界面一直进不去。
image-20211113222311390
改完路径后,重新启动,成功进入管理中心,默认安装的密码为空。
image-20211113222525001
首先在根目录下创建1.txt文件。
image-20211113224406242
然后利用漏洞读取该文件,通过..%c0%af..%c0%af来向上跳转,达到目录穿越,读取文件;最终测试访问链接如下:
http://localhost:4848/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%af1.txt

image-20211113224721140

通过测试大概穿越9次路径跳至GlassFish的解压目录处;prototype去掉不影响;可有可无。

读admin-keyfile文件,该文件是储存admin账号密码的文件,爆破。

位置在glassfish/domains/domain1/config/admin-keyfile

访问路径为:

http://localhost:4848/theme/META-INF/..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afdomains/domain1/config/admin-keyfile

image-20211113225706020

Linux环境下:使用vulhub的docker环境启动。

https://192.168.255.128: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
image-20211113225210505

修复建议

升级至最新版本或者4.1.2版本以上。

GlassFish 后台Getshell

漏洞原理

通过爆破或者弱口令进入后台后,可以部署war包来getshell。

影响范围

全版本管理中心登录账号弱口令

漏洞复现

默认安装的GlassFish管理中心是空密码的,无需登录,直接进入后台。
image-20211113230142063
进入后台后 Applications,点击右边的deploy。
image-20211113230246438
选中war包后上传,填写Context Root 这个关系到你访问的url,点击Ok。
image-20211113230644074
访问http://127.0.0.1:8080/[Context Root]/[war包内的filename]
http://127.0.0.1:8080/getshell/1.jsp?pwd=123&i=ipconfig
image-20211113231027707

修复建议

1.不开放后台给外网;
2.若开放 密码强度需设置 包含 大写字母,小写字母,数字,特殊字符,且长度大于10位。

总结

GlassFish存在的漏洞有很多,这里总结主要是对一些常见的漏洞复现和分析(主要是vulhub上的环境)当然了目前网上都有很多自动化的检测和利用工具,这里手动验证是为了加深印象;漏洞的原理很多都是参考大佬们的文章,个人其实还是有很多不是很理解(菜狗)这里对大佬们表示衷心的感谢。后续继续补充其他漏洞复现。

Guess you like

Origin blog.csdn.net/weixin_44033675/article/details/121316067