目录
📖 文章概述
- 本文基于对某目标站点的渗透测试案例,深入剖析了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
:生成反序列化PayloadBurp Suite
:拦截与修改请求gobuster
:目录枚举netcat
:文件传输与Shell监听tcpdump
:流量分析linpeas
:权限提升枚举
漏洞类型:
LFI(路径遍历)
RCE(SQL注入)
反序列化(CVE-2020-9496)
弱凭据
Docker逃逸
红队视角扩展
红队在技术栈选择上注重灵活性与隐蔽性:
协议选择:优先使用HTTPS加密流量,避免IDS检测。
工具组合:结合
Burp Suite
与ysoserial
实现手动与自动化利用的平衡。环境适应:针对Docker环境,使用
linpeas
快速定位逃逸点。
🔍 初始侦察:发现内部Web服务
技术原理
在目标主机上,通过SSH会话运行网络枚举命令,发现本地监听的Web服务(127.0.0.1:8443
)。由于该服务仅对本地开放,红队利用SSH端口转发技术,将内部端口映射到攻击机本地,实现远程访问。
渗透步骤
网络枚举:
使用
netstat -ant
列出目标开放端口,发现tcp 127.0.0.1:8443
。
SSH端口转发:
执行SSH命令,将目标的
127.0.0.1:8443
映射到攻击机的本地端口。访问映射后的
https://127.0.0.1:8443
,确认服务存在(返回404页面)。
核心技术解析
SSH本地端口转发(-L):
原理:通过SSH隧道,攻击机本地端口的流量被转发至目标主机的指定地址。
流程:
建立SSH连接至目标。
攻击机监听本地端口(如
8443
)。请求通过隧道转发至目标的
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反序列化漏洞。
渗透步骤
目录枚举:
使用
gobuster
扫描https://127.0.0.1:8443
,发现/content/control/main
。
版本验证:
访问路径,确认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依赖其处理请求。
反序列化流程:
服务器解析XML-RPC请求,调用
ObjectInputStream.readObject()
。利用
PriorityQueue
和BeanComparator
,触发Runtime.getRuntime().exec()
。执行Payload中的任意命令。
渗透步骤
环境准备:
配置Java 8环境,下载
ysoserial
。
Payload生成:
使用
ysoserial
生成下载、权限设置和执行脚本的三步Payload。
攻击执行:
搭建HTTP服务器托管反弹Shell脚本。
发送XML-RPC POST请求,触发Payload。
通过
netcat
监听反弹Shell。
红队思维
分步执行:将复杂命令拆分为下载、授权和执行,降低失败率。
隐蔽性优化:使用加密Payload或混淆脚本,避免WAF拦截。
检测规避:在
/tmp
下操作临时文件,并及时清理痕迹。
🐳 Docker逃逸:突破容器限制
技术原理
在Docker容器内获得Shell后,通过docker0
接口和/proc/self/cgroup
确认环境。利用宿主机共享的/var/run/docker.sock
,创建挂载宿主根目录的新容器,实现逃逸。
渗透步骤
环境确认:
检查
cat /proc/self/cgroup
或ip a
,验证Docker环境。
定位Socket:
查找
/var/run/docker.sock
。
逃逸执行:
运行新容器,挂载宿主
/
至/mnt
,访问敏感文件。
核心技术解析
Docker Socket:UNIX域套接字,允许容器与宿主Docker守护进程通信。
挂载逃逸:通过
-v /:/mnt
参数,直接操作宿主文件系统。
红队思维
逃逸优先级:Docker环境是高价值目标,需快速验证逃逸可能性。
权限利用:Socket存在表明配置疏忽,可作为提权突破口。
防御启示:建议禁用容器内的Socket挂载,或限制Docker权限。
🔗 攻击链串联
技术关联
LFI到RCE:LFI泄露数据库凭据,触发Cacti RCE。
RCE到权限提升:RCE获Shell,枚举SSH凭据。
权限提升到端口转发:SSH登录并转发内部服务端口。
端口转发到反序列化:访问OFBiz,触发CVE-2020-9496。
反序列化到Docker逃逸:容器Shell利用Socket提权。
协议衔接
HTTP/HTTPS:贯穿漏洞触发。
SSH/TCP:支持转发与Shell。
UNIX域套接字:实现Docker逃逸。
🛠️ 红队视角:实战总结与心得
攻击链总结
侦察 → LFI → 凭据泄露 → RCE → Shell → 权限提升 → 端口转发 → 反序列化 → Docker逃逸
红队建议
隐蔽性:加密流量,清理日志,避免触发警报。
灵活性:根据目标Java版本调整Payload链。
自动化:借助Metasploit模块加速利用。
思维延伸:每个步骤都可能成为新攻击的起点,保持发散性探索。
📝 结语
- 通过LFI、RCE、SSH端口转发、CVE-2020-9496反序列化及Docker逃逸,本文展示了红队如何系统性地攻破目标。
- SSH转发解决了内部访问难题,反序列化利用了Java漏洞,而Docker逃逸揭示了容器安全的薄弱环节。
- 防御者需关注补丁更新、输入校验和容器隔离,以对抗此类攻击。