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

Docker Remote API未授权访问漏洞利用和防护

Docker remote API未授权漏洞,但是大多数文章都是只交如何控制了Docker之后,但仅仅只能控制了docker容器

免责声明:本文讨论的技术存在潜在法律风险。作者撰写此文目的仅为技术研究与知识分享,不构成任何操作建议。读者基于本文内容进行的任何行为及其后果,均由读者自行承担,作者及发布方不承担任何责任。

本文章已经进行脱敏,已无信息泄露可能。

其实进行文章已经很早就写好了,懒得整理到csdn,本文章也是整理了大部分文章完成的,危险程度极高,但是一般都是个人不小心配置的,也可能是别人别人有用心的脚本,偷偷设置。

文章:未授权访问漏洞(整理了一些网上的方法),基本上不用特殊权限,提示"--privileged"+ "chroot"可以直接穿透容器到宿主机执行宿主机的命令,前提条件是物理机有的命令也得有,文章里没讲到,只有通过“数据卷”拿ssh公钥-,写的也不是很全。

1. 漏洞原理与危害

原理:
Docker守护进程(dockerd)默认监听在Unix Socket(unix:///var/run/docker.sock)。如果将其暴露在TCP端口(通常是2375/TCP(非加密)2376/TCP(TLS加密)且未进行任何访问控制,攻击者就可以直接与Docker API通信,从而完全控制Docker宿主机。

常见错误配置:

  • 将Docker服务启动在tcp://0.0.0.0:2375

  • 在docker配置文件中(如/etc/docker/daemon.json或 systemd unit file)错误地暴露了TCP端口。

  • 云服务器安全组策略错误,将2375端口对公网开放。

危害:

  1. 容器逃逸:攻击者可以创建特权容器,挂载宿主机根目录,从而获得宿主机完全控制权。

  2. 数据窃取与篡改:访问和操作所有容器的数据。

  3. 挖矿与勒索:部署加密货币矿工或勒索软件容器。

  4. 内网渗透:以宿主机为跳板,攻击内网其他系统。

  5. 服务中断:停止或删除所有容器,导致业务瘫痪。


2. 漏洞检测

2.1 自查方法

# 检查Docker服务监听端口 netstat -tulnp | grep dockerd ss -tulnp | grep dockerd sudo lsof -i -P -n | grep dockerd # 检查Docker配置文件 cat /etc/docker/daemon.json systemctl cat docker.service # 测试API是否可未授权访问(本地测试) curl http://localhost:2375/version curl http://127.0.0.1:2375/containers/json

2.2 外部扫描

使用工具扫描目标IP的2375端口是否开放,并尝试访问Docker API:

nmap -p 2375 <target_ip> curl -s http://<target_ip>:2375/version

3. 防护措施(按优先级排序)

3.1 网络层隔离(最有效)

  • 禁止将Docker API暴露在公网:这是铁律。安全组、防火墙必须禁止从公网访问2375/2376端口。

  • 最小化监听范围

    • 如果必须在内部网络使用TCP,请绑定到内网IP,例如tcp://192.168.1.10:2375

    • 使用--host-H参数时,避免使用0.0.0.0

  • 使用本地Unix Socket:默认且最安全的方式。仅本地root用户和docker组成员可访问。

3.2 启用TLS认证(必须,如果需远程管理)

Docker官方推荐的远程管理方式。需要生成CA证书、服务器证书和客户端证书。

基本步骤:

  1. 创建CA、服务器密钥和证书(绑定服务器IP/域名)。

  2. 创建客户端密钥和证书,并由CA签名。

  3. 配置Docker守护进程只接受TLS连接,并信任该CA签名的客户端证书。

  4. 客户端必须使用证书才能连接。

示例/etc/docker/daemon.json配置:

{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"], "tls": true, "tlsverify": true, "tlscacert": "/etc/docker/ca.pem", "tlscert": "/etc/docker/server-cert.pem", "tlskey": "/etc/docker/server-key.pem" }

3.3 访问控制与加固

  • 使用代理或API网关:在Docker API前部署Nginx/Haproxy,配置HTTP Basic认证、IP白名单、客户端证书认证等。

  • 限制容器能力:即使被访问,也要遵循最小权限原则。

  • 启用用户命名空间映射:隔离容器内外的UID/GID。

  • 使用docker.sock代理容器:如 nginx-proxy 的docker-gen,避免容器直接挂载宿主机socket。

3.4 安全配置示例

只允许本地Unix Socket(最安全配置/etc/docker/daemon.json):

{ "hosts": ["unix:///var/run/docker.sock"] }

如果使用systemd,修改/lib/systemd/system/docker.service

# 移除任何 `-H tcp://` 参数 ExecStart=/usr/bin/dockerd

重启服务:

sudo systemctl daemon-reload sudo systemctl restart docker

3.5 定期审计与监控

  • 日志审计:监控Docker API的异常访问日志。

  • 文件完整性监控:监控/etc/docker/daemon.json等关键文件变更。

  • 入侵检测:使用Falco等工具检测异常容器行为。


4. 应急响应步骤

如果发现未授权访问漏洞被利用:

  1. 立即隔离

    • 从网络层面断开该服务器(安全组/防火墙阻断)。

    • 如果无法立即隔离,考虑停止Docker服务:systemctl stop docker(注意:会停止所有容器)。

  2. 评估影响

    • 检查运行的容器:docker ps -a

    • 检查镜像:docker images

    • 检查网络和卷。

    • 查看宿主机敏感目录(如/etc/root/home)是否被挂载到容器。

  3. 取证与清除

    • 审查日志:journalctl -u docker,Docker命令历史。

    • 删除未知/恶意容器和镜像。

    • 检查宿主机是否被植入后门(SSH密钥、cron任务、恶意进程)。

  4. 修复与加固

    • 按照第3部分进行安全配置。

    • 轮换所有可能泄露的凭证(SSH密钥、各类密码)。

    • 更新所有镜像和宿主机系统。

  5. 恢复服务

    • 从安全备份恢复镜像和数据。

    • 在加固后重新启动服务。

    • 持续监控。


5. 加固检查清单

  • 确保Docker API未暴露在公网

  • 如果需要远程API,必须启用TLS双向认证

  • 日常操作使用本地Unix Socket。

  • 将用户加入docker组视为等价于赋予root权限,谨慎操作。

  • 定期更新Docker及主机系统。

  • 对容器进行安全基线配置(非特权运行、只读根文件系统、资源限制等)。

  • 使用安全扫描工具(如Trivy、Clair)扫描镜像漏洞。

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

相关文章:

  • WorkshopDL终极指南:无需Steam客户端,轻松下载创意工坊模组的完整解决方案
  • 微缩量化技术:FP4与FP8在深度学习模型部署中的应用
  • 电商风控决策延迟从2s降到83ms:我们重构Python实时决策管道的4次关键迭代(含压测数据对比)
  • 从‘采样开关’这个小零件,聊聊我是如何优化一款16位SAR ADC的(附关键仿真波形)
  • Visual C++ 运行时集成解决方案:现代化部署与系统兼容性管理
  • FastAPI与MongoDB集成实战:构建高性能异步后端服务
  • 告别Python依赖!用C#和OpenVINO在WinForm里跑通Yolov8全系列模型(附完整源码)
  • Wrangler:Cloudflare 给 Rust + WASM 开发者造的那把锤子
  • Windows 10/8.1隐藏功能解锁:手把手教你开启ReFS格式化的完整流程与安全回退方案
  • 别再傻傻分不清了!一文讲透GA/T1400和GB/T28181在安防项目中的实战选择
  • 在自动化内容生成场景中利用 Taotoken 实现多模型备选与降级
  • 5分钟上手Audiveris:免费开源乐谱识别神器,让纸质乐谱秒变数字宝藏
  • iPaaS详解:企业数据集成的最佳实践
  • RWKV-7 (1.5B World)部署案例:无网络环境下的离线AI办公终端
  • 通过API调用日志回溯与分析特定时间段内的模型响应延迟
  • 如何快速实现单机游戏本地分屏:Nucleus Co-Op完整配置指南
  • DPoP的介绍
  • 收藏!2026 最新 AI 大模型三大岗位详解 + 真实薪资揭秘,程序员 小白转型必看
  • 【零基础新手入门 】OpenClaw 2.6.6 对接阿里云百炼配置教程(包含安装包)
  • OpenAI发布GPT-5.5-Cyber安全大模型 引发算力储备讨论 | AI信息日报 | 2026年5月2日 星期六
  • 保姆级教程:用Qt QTableWidget打造一个带交互的“个人待办事项”桌面应用
  • Fairseq-Dense-13B-Janeway快速上手:5分钟启动Web界面生成奇幻魔法文本
  • 企业内如何通过Taotoken实现API Key的访问控制与安全审计
  • 2026年设备管理系统推荐!这5款主流产品值得看看
  • UnityLive2D资源提取实战:深度解析Cubism 3模型逆向工程
  • 终极暗黑2存档编辑器指南:5分钟掌握d2s-editor完整使用技巧
  • 3个常见音频问题如何解决?用eqMac免费macOS系统音频均衡器提升音质体验
  • 从账单明细看 Taotoken 按 token 计费模式如何实现用量可追溯
  • 从 51% CPU 占用到 SIMD 加速:Cloudflare 防火墙引擎的性能优化实录
  • 从Token到芯片:AI推理时代的效率竞争与市场逻辑