从Apache OFBiz 17.12.01的反序列化漏洞到Docker逃逸的渗透之红队思路

目录

[📖 文章概述](#📖 文章概述)

[🛠️ 技术栈概览](#🛠️ 技术栈概览)

技术组件

红队视角扩展

[🔍 初始侦察:发现内部Web服务](#🔍 初始侦察:发现内部Web服务)

技术原理

渗透步骤

核心技术解析

红队思维

[🕸️ Web枚举:定位Apache OFBiz](#🕸️ Web枚举:定位Apache OFBiz)

技术原理

渗透步骤

核心技术解析

红队思维

[🕳️ CVE-2020-9496:反序列化漏洞剖析](#🕳️ CVE-2020-9496:反序列化漏洞剖析)

漏洞原理

技术细节

渗透步骤

红队思维

[🐳 Docker逃逸:突破容器限制](#🐳 Docker逃逸:突破容器限制)

技术原理

渗透步骤

核心技术解析

红队思维

[🔗 攻击链串联](#🔗 攻击链串联)

技术关联

协议衔接

[🛠️ 红队视角:实战总结与心得](#🛠️ 红队视角:实战总结与心得)

攻击链总结

红队建议

[📝 结语](#📝 结语)


📖 文章概述

  • 本文基于对某目标站点的渗透测试案例,深入剖析了Apache OFBiz 17.12.01中的反序列化漏洞(CVE-2020-9496),并结合前期漏洞(如LFI和RCE)与SSH端口转发技术,展示了从初始访问到Docker环境逃逸的完整红队攻击链。

  • 我将探讨漏洞利用的技术原理、渗透步骤的逻辑关联以及红队视角下的实战思维,目的是在为小伙伴提供一个结构清晰、技术深入的参考。

  • 核心内容

    • CVE-2020-9496的技术剖析与利用流程。

    • SSH端口转发的实现及其在内部服务访问中的关键作用。

    • Docker逃逸的原理与操作细节。

    • 攻击链的完整串联与红队策略优化。

  • 目标:通过隐藏敏感字段(如IP、凭据和具体命令),保留技术逻辑与思维,给一些些渗透思路 ,觉得还Ok得点个赞吧 !!!!


🛠️ 技术栈概览

技术组件

  • Web服务:Apache(虚拟主机,HTTP/HTTPS)、Apache OFBiz(Java ERP系统)

  • 编程语言:Java(反序列化漏洞利用)、PHP(LFI触发)、Bash(脚本执行)

  • 协议

    • HTTP/HTTPS:漏洞触发与服务访问

    • SSH:端口转发与远程登录(TCP)

    • TCP:反弹Shell传输

    • ICMP:RCE验证

    • UNIX域套接字:Docker逃逸

  • 工具

    • ysoserial:生成反序列化Payload

    • Burp Suite:拦截与修改请求

    • gobuster:目录枚举

    • netcat:文件传输与Shell监听

    • tcpdump:流量分析

    • linpeas:权限提升枚举

  • 漏洞类型

    • LFI(路径遍历)

    • RCE(SQL注入)

    • 反序列化(CVE-2020-9496)

    • 弱凭据

    • Docker逃逸

红队视角扩展

红队在技术栈选择上注重灵活性与隐蔽性:

  • 协议选择:优先使用HTTPS加密流量,避免IDS检测。

  • 工具组合 :结合Burp Suiteysoserial实现手动与自动化利用的平衡。

  • 环境适应 :针对Docker环境,使用linpeas快速定位逃逸点。


🔍 初始侦察:发现内部Web服务

技术原理

在目标主机上,通过SSH会话运行网络枚举命令,发现本地监听的Web服务(127.0.0.1:8443)。由于该服务仅对本地开放,红队利用SSH端口转发技术,将内部端口映射到攻击机本地,实现远程访问。

渗透步骤

  1. 网络枚举

    • 使用netstat -ant列出目标开放端口,发现tcp 127.0.0.1:8443
  2. SSH端口转发

    • 执行SSH命令,将目标的127.0.0.1:8443映射到攻击机的本地端口。

    • 访问映射后的https://127.0.0.1:8443,确认服务存在(返回404页面)。

核心技术解析

  • SSH本地端口转发(-L)

    • 原理:通过SSH隧道,攻击机本地端口的流量被转发至目标主机的指定地址。

    • 流程:

      1. 建立SSH连接至目标。

      2. 攻击机监听本地端口(如8443)。

      3. 请求通过隧道转发至目标的127.0.0.1:8443

    • 注意:隧道依赖SSH会话,必须保持连接。

红队思维

  • 为何选择SSH转发:内部服务通常受防火墙限制,SSH转发是低调且高效的突破手段。

  • 侦察价值:404页面暗示Web应用存在,为后续枚举奠定基础。

  • 隐蔽性建议:使用SSH密钥登录而非密码,减少日志痕迹。


🕸️ Web枚举:定位Apache OFBiz

技术原理

目标的127.0.0.1:8443运行Apache OFBiz(Java开源ERP系统)。通过目录枚举工具,发现管理路径/content/control/main,并确认版本为17.12.01,存在CVE-2020-9496反序列化漏洞。

渗透步骤

  1. 目录枚举

    • 使用gobuster扫描https://127.0.0.1:8443,发现/content/control/main
  2. 版本验证

    • 访问路径,确认OFBiz版本,并在漏洞数据库中匹配CVE-2020-9496。

核心技术解析

  • gobuster :高效枚举工具,结合常见目录词表(如directory-list-2.3-medium.txt)快速定位关键路径。

  • HTTPS访问 :绕过SSL验证(-k选项),适应未受信任证书场景。

红队思维

  • 枚举策略 :从通用路径入手,逐步聚焦业务逻辑接口(如/control)。

  • 版本情报:版本号是漏洞利用的起点,红队需熟练利用Exploit-DB等资源。

  • 效率提升 :可结合Burp Suite的Intruder模块,加速枚举并验证响应。


🕳️ CVE-2020-9496:反序列化漏洞剖析

漏洞原理

CVE-2020-9496是OFBiz中XML-RPC端点(/webtools/control/xmlrpc)的反序列化漏洞。由于未严格验证serializable字段,攻击者可注入恶意Java对象,通过ysoserial的CommonsBeanutils1链触发命令执行。

技术细节

  • XML-RPC:基于HTTP的远程调用协议,OFBiz依赖其处理请求。

  • 反序列化流程

    1. 服务器解析XML-RPC请求,调用ObjectInputStream.readObject()

    2. 利用PriorityQueueBeanComparator,触发Runtime.getRuntime().exec()

    3. 执行Payload中的任意命令。

渗透步骤

  1. 环境准备

    • 配置Java 8环境,下载ysoserial
  2. Payload生成

    • 使用ysoserial生成下载、权限设置和执行脚本的三步Payload。
  3. 攻击执行

    • 搭建HTTP服务器托管反弹Shell脚本。

    • 发送XML-RPC POST请求,触发Payload。

    • 通过netcat监听反弹Shell。

红队思维

  • 分步执行:将复杂命令拆分为下载、授权和执行,降低失败率。

  • 隐蔽性优化:使用加密Payload或混淆脚本,避免WAF拦截。

  • 检测规避 :在/tmp下操作临时文件,并及时清理痕迹。


🐳 Docker逃逸:突破容器限制

技术原理

在Docker容器内获得Shell后,通过docker0接口和/proc/self/cgroup确认环境。利用宿主机共享的/var/run/docker.sock,创建挂载宿主根目录的新容器,实现逃逸。

渗透步骤

  1. 环境确认

    • 检查cat /proc/self/cgroupip a,验证Docker环境。
  2. 定位Socket

    • 查找/var/run/docker.sock
  3. 逃逸执行

    • 运行新容器,挂载宿主//mnt,访问敏感文件。

核心技术解析

  • Docker Socket:UNIX域套接字,允许容器与宿主Docker守护进程通信。

  • 挂载逃逸 :通过-v /:/mnt参数,直接操作宿主文件系统。

红队思维

  • 逃逸优先级:Docker环境是高价值目标,需快速验证逃逸可能性。

  • 权限利用:Socket存在表明配置疏忽,可作为提权突破口。

  • 防御启示:建议禁用容器内的Socket挂载,或限制Docker权限。


🔗 攻击链串联

技术关联

  1. LFI到RCE:LFI泄露数据库凭据,触发Cacti RCE。

  2. RCE到权限提升:RCE获Shell,枚举SSH凭据。

  3. 权限提升到端口转发:SSH登录并转发内部服务端口。

  4. 端口转发到反序列化:访问OFBiz,触发CVE-2020-9496。

  5. 反序列化到Docker逃逸:容器Shell利用Socket提权。

协议衔接

  • HTTP/HTTPS:贯穿漏洞触发。

  • SSH/TCP:支持转发与Shell。

  • UNIX域套接字:实现Docker逃逸。


🛠️ 红队视角:实战总结与心得

攻击链总结

  • 侦察LFI凭据泄露RCEShell权限提升端口转发反序列化Docker逃逸

红队建议

  • 隐蔽性:加密流量,清理日志,避免触发警报。

  • 灵活性:根据目标Java版本调整Payload链。

  • 自动化:借助Metasploit模块加速利用。

  • 思维延伸:每个步骤都可能成为新攻击的起点,保持发散性探索。


📝 结语

  • 通过LFI、RCE、SSH端口转发、CVE-2020-9496反序列化及Docker逃逸,本文展示了红队如何系统性地攻破目标。
  • SSH转发解决了内部访问难题,反序列化利用了Java漏洞,而Docker逃逸揭示了容器安全的薄弱环节。
  • 防御者需关注补丁更新、输入校验和容器隔离,以对抗此类攻击。
相关推荐
用户962377954484 小时前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机7 小时前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机7 小时前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954488 小时前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star9 小时前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户9623779544812 小时前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
YuMiao13 小时前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
碳基沙盒2 天前
OpenClaw 多 Agent 配置实战指南
运维
BingoGo2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack2 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端