Portainer 漏洞利用技能围绕 Portainer(Docker/Kubernetes 容器管理平台)展开后渗透方法论。
一、识别与信息收集 默认端口为 9000(HTTP)与 9443(HTTPS)。识别方式为访问 /api/status,返回 JSON 即确认为 Portainer;也可通过 FOFA 语法 app="Portainer" 定位资产。
二、漏洞总览
- 默认/弱口令:影响全版本,类型为认证突破,利用条件为弱口令,危害等级 Critical。
- CVE-2024-29296:影响 CE 2.19.4,类型为用户枚举(时间差),无需认证,危害等级 Medium。
- CVE-2018-12678:影响 <=1.17,类型为 Request Splitting SSRF→RCE,无需认证,危害等级 Critical。
- Docker API 滥用:影响全版本,类型为特权容器逃逸 RCE,需认证,危害等级 Critical。
三、利用决策树
- 识别:GET /api/status 确认 Portainer。
- 认证突破:尝试默认凭据 admin/已知密码;使用 CVE-2024-29296 用户枚举确定有效用户名;暴力破解密码。
- 认证后:获取 JWT Token → 枚举端点 → 特权容器 → 挂载宿主机 → RCE。
- 未认证(老版本):CVE-2018-12678 → Request Splitting → Docker API → RCE。
四、利用链优先级
- 默认/弱口令 → JWT Token → Docker API → 特权容器 → RCE。
- CVE-2024-29296 用户枚举 → 定向暴力破解 → 同上。
- CVE-2018-12678(仅 <=1.17)→ SSRF → Docker API → RCE。
五、常用 API 端点 GET /api/status:系统状态/版本。 POST /api/auth:登录认证。 GET /api/endpoints:Docker 端点列表。 POST /api/endpoints/{id}/docker/containers/create:创建容器。 POST /api/endpoints/{id}/docker/containers/{cid}/start:启动容器。 POST /api/endpoints/{id}/docker/containers/{cid}/wait:等待容器。
六、特权容器逃逸方法论 技术路径为:通过 Portainer Docker API 创建特权容器,挂载宿主机文件系统,实现容器逃逸 RCE。具体包括:使用 Docker API /containers/create 端点创建特权模式容器;将宿主机根目录 / 以读写方式挂载到容器内;通过 chroot 切换到宿主机文件系统,命令直接作用于宿主机;需要已认证的 JWT Token 和可用的 Docker 端点。技能中还提供了认证后 RCE API 速查参考。
七、适用场景与限制 适用于对已授权目标进行 Portainer 相关安全测试与后渗透评估。限制方面:CVE-2018-12678 仅影响 <=1.17 版本;CVE-2024-29296 影响 CE 2.19.4;特权容器逃逸与 Docker API 滥用需要已认证的 JWT Token 与可用的 Docker 端点。价格、收费、平台支持范围等未提供。使用前需确保具备合法授权。