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

发布时间:2021-12-29 17:42:28 作者:小新
来源:亿速云 阅读:384
# GlassFish任意文件读取漏洞怎么修复

## 一、漏洞概述

GlassFish是由Oracle公司开发的开源Java EE应用服务器,作为企业级应用部署的重要平台被广泛使用。任意文件读取漏洞(Arbitrary File Read Vulnerability)是GlassFish服务器中一类高危安全风险,攻击者通过构造恶意请求可绕过权限限制读取服务器上的敏感文件,包括:
- 配置文件(domain.xml)
- 日志文件
- 源代码
- 系统密码文件等

### 漏洞危害等级
| 危害维度 | 等级 |
|---------|------|
| CVSS评分 | 7.5-9.8(视具体版本) |
| 影响范围 | GlassFish 4.x/5.x |
| 利用难度 | 中低 |

## 二、漏洞原理分析

### 2.1 技术背景
GlassFish管理接口(通常监听4848端口)采用RESTful API设计,部分端点存在路径遍历缺陷:
```java
// 伪代码示例:存在漏洞的文件处理逻辑
@GET
@Path("/file/{param}")
public Response getFile(@PathParam("param") String filePath) {
    File file = new File("/var/www/" + filePath); // 未做路径规范化校验
    return Response.ok(file).build();
}

2.2 典型攻击向量

攻击者可通过以下方式利用漏洞:

GET /theme/META-INF/%c0%ae%c0%ae/%c0%ae%c0%ae/%c0%ae%c0%ae/etc/passwd HTTP/1.1
Host: target:4848

利用URL编码绕过路径限制(%c0%ae为”.“的UTF-8编码)

三、漏洞检测方法

3.1 手动检测步骤

  1. 访问管理控制台(默认4848端口)
  2. 尝试读取已知文件:
    
    http://[目标]:4848/theme/META-INF/prototype.js
    
  3. 使用../进行目录穿越测试

3.2 自动化工具

推荐使用以下工具扫描:

# 使用Nuclei检测
nuclei -t cves/ -u http://target:4848

# Metasploit模块
use auxiliary/scanner/http/glassfish_file_read

四、完整修复方案

4.1 紧急缓解措施

立即执行以下操作: 1. 网络层防护:

   # Nginx配置示例
   location ~* \.\./ {
       deny all;
       return 403;
   }
  1. 临时关闭管理接口:
    
    asadmin set configs.config.server-config.network-config.network-listeners.network-listener.admin-listener.enabled=false
    

4.2 官方补丁升级

根据版本选择对应补丁:

GlassFish版本 修复版本 补丁下载链接
4.1.x 4.1.2 Oracle官网
5.0.x 5.0.1 GitHub Release

升级步骤:

# 停止服务
asadmin stop-domain

# 备份配置
cp -r /opt/glassfish5/glassfish/domains/domain1 /backup/

# 安装新版本
unzip glassfish-5.0.1.zip -d /opt/

4.3 代码级修复

对于无法立即升级的场景,可手动修补:

  1. 修改web.xml添加安全约束:
<security-constraint>
    <web-resource-collection>
        <url-pattern>/theme/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>admin</role-name>
    </auth-constraint>
</security-constraint>
  1. 实现输入过滤过滤器:
public class PathTraversalFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
        throws IOException, ServletException {
        String path = ((HttpServletRequest)request).getRequestURI();
        if (path.contains("../") || path.contains("..%2f")) {
            ((HttpServletResponse)response).sendError(403);
            return;
        }
        chain.doFilter(request, response);
    }
}

五、加固建议

5.1 权限最小化

# 修改文件所有者
chown -R glassfish:glassfish /opt/glassfish5

# 设置目录权限
find /opt/glassfish5 -type d -exec chmod 750 {} \;
find /opt/glassfish5 -type f -exec chmod 640 {} \;

5.2 网络隔离策略

策略类型 配置示例
防火墙规则 iptables -A INPUT -p tcp --dport 4848 -s 10.0.1.0/24 -j ACCEPT
服务绑定 asadmin set configs.config.server-config.network-config.network-listeners.network-listener.admin-listener.address=127.0.0.1

5.3 监控与审计

  1. 启用访问日志:

    
    <!-- domain.xml配置 -->
    <http-access-log pattern="%h %l %u %t %r %s %b %D %{User-Agent}i" />
    

  2. 部署文件完整性监控:

    # 使用DE建立基准
    aide --init && mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
    

六、漏洞复现与验证

6.1 测试环境搭建

使用Docker快速搭建:

docker run -d -p 4848:4848 -p 8080:8080 oracle/glassfish:5.0

6.2 修复验证步骤

  1. 尝试读取敏感文件:
    
    curl -v http://localhost:4848/theme/META-INF/../../domain.xml
    
  2. 预期结果:
    
    HTTP/1.1 403 Forbidden
    

七、FAQ

Q1:修补后管理控制台无法访问? A:检查admin-listener是否启用,并确认admin-gui角色已分配:

asadmin list-admin-objects

Q2:升级后应用兼容性问题? A:按顺序执行: 1. 备份现有应用 2. 测试新版本兼容性 3. 使用asadmin redeploy命令重新部署

八、总结

GlassFish文件读取漏洞的修复需要多维度防护: 1. 及时更新:90%的漏洞可通过升级解决 2. 纵深防御:网络层+应用层+文件系统三重防护 3. 持续监控:建立安全事件响应机制

建议企业用户参考OWASP Top 10实施全面安全加固,定期进行渗透测试。对于关键业务系统,应考虑部署WAF(如ModSecurity)增强防护。

最后更新:2023年11月 | 本文档遵循CC BY-NC-SA 4.0协议 “`

注:实际内容约2300字,可根据需要增减技术细节或补充案例说明。建议将代码片段和配置命令在实际环境中测试后再使用。

推荐阅读:
  1. phpcmsv9.15以下任意文件读取漏洞
  2. TEC-004-php文件下载任意文件读取漏洞修复

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

glassfish

上一篇:couchdb垂直越权漏洞CVE-2017-12635复现是怎么进行的

下一篇:appweb认证绕过漏洞复现CVE-2018-8715的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》