CD's second night

AWS-pwnlab剩余姿势总结

type
status
date
slug
summary
tags
category
icon
password

掠夺暴露的 RDS 实例:

  1. 扫描端口 p3306,5432,1433,1521
  1. 爆破
 
 
 
劫持公共RDS快照:
 

发现公开快照

  • 使用 AWS CLI 命令 aws rds describe-db-snapshots 和 aws rds describe-db-cluster-snapshots 查找公开的 RDS 快照。
  • 通过 -snapshot-type public --include-public 参数筛选出公开的快照。
  1. 还原公开快照
      • 在 AWS 控制台中,选择公开的快照并还原为新的数据库实例。
      • 配置数据库实例的设置,包括实例类型、VPC 安全组等。
  1. 访问还原的数据库
      • 等待数据库实例创建并恢复快照。
      • 修改数据库实例的密码,并配置 VPC 安全组允许公网访问。
      • 使用 psql 等工具连接到还原的数据库实例。
  1. 获取敏感信息
      • 连接到数据库后,切换到包含敏感信息的表
      • 查询表中的数据,获取敏感信息。

防御措施

  1. 避免公开快照
      • 在创建快照时,避免将其设置为公开。
      • 使用 AWS 提供的加密选项和 KMS 密钥来保护快照。
  1. 监控和告警
      • 创建 CloudWatch 事件规则,监控 RDS 快照的复制、修改和公开分享操作。
      • 定期运行 AWS CLI 命令检查公开的快照。
  1. 权限管理
      • 确保只有授权用户能够创建和修改 RDS 快照。
      • 使用 IAM 策略限制对 RDS 快照的访问权限。
 
 
 

劫持公共EBS快照

  1. 发现公开快照
      • 使用 AWS CLI 命令 aws ec2 describe-snapshots 查找公开的 EBS 快照。
      • 通过 -owner-ids 和 -restorable-by-user-ids all 参数筛选出公开的快照。
  1. 验证快照的公开性
      • 使用 aws ec2 describe-snapshot-attribute 命令查看快照的 createVolumePermission 属性,确认其是否对所有用户公开。
  1. 创建 EC2 实例并挂载公开快照
      • 在 AWS 控制台中,从公开的快照创建新的 EBS 卷。
      • 创建一个新的 EC2 实例,并确保其子网与 EBS 卷的可用区一致。
      • 将创建的 EBS 卷挂载到 EC2 实例上。
  1. 访问挂载的卷
      • 通过 SSH 连接到 EC2 实例。
      • 挂载 EBS 卷并访问其中的文件。
  1. 获取敏感信息
      • 在挂载的卷中查找敏感文件,如 SSH 密钥、配置文件等。
      • 使用获取的 AWS 访问密钥(AK/SK)访问其他 AWS 资源,如 S3 存储桶,获取更多敏感信息。

防御措施

  1. 避免公开快照
      • 在创建 EBS 快照时,避免将其设置为公开。
      • 使用 AWS 提供的加密选项和 KMS 密钥来保护快照。
  1. 监控和告警
      • 创建 CloudWatch 事件规则,监控 EBS 快照的创建、修改和公开分享操作。
      • 定期运行 AWS CLI 命令检查公开的快照。
  1. 权限管理
      • 确保只有授权用户能够创建和修改 EBS 快照。
      • 使用 IAM 策略限制对 EBS 快照的访问权限。
 
 

目录穿越后拿到AWS凭据并获取S3数据

  1. 端口扫描
      • 使用 nmap 扫描目标 IP 地址 13.50.73.5,发现开放了 80 端口。
  1. 网站分析
      • 访问网站并注册账号,发现网站功能有限,主要用于导出 CSV 文件。
      • 通过错误提示信息判断网站使用 Flask 框架。
  1. 目录穿越漏洞
      • 利用目录穿越漏洞(如 /download?file=../../../../etc/passwd)获取系统文件信息。
      • 发现存在 ec2-user 用户,推测目标系统为 AWS EC2 实例。
  1. 获取 AWS 凭证
      • 通过目录穿越漏洞读取用户目录下的 .aws/credentials 文件,获取 AWS 访问密钥(AK/SK)。
      • 例如:GET /download?file=../../../../home/nedf/.aws/credentials
  1. 访问 AWS S3 存储桶
      • 使用获取的 AWS 访问密钥访问 S3 存储桶 s3://huge-logistics-bucket
      • 下载存储桶中的敏感文件(如 flag.txt)。
 
 
 

git仓库中泄露aksk

  1. 克隆仓库
      • 克隆目标仓库 https://github.com/huge-logistics/cargo-logistics-dev 到本地。
  1. 扫描敏感信息
      • 使用 git-secrets 工具扫描仓库历史提交,发现泄漏的 AWS 访问密钥(AK/SK)。
      • 使用 trufflehog 工具进一步扫描,发现更多敏感信息,如 AWS 访问密钥和数据库连接信息。
  1. 获取 AWS 凭证
      • 从仓库历史提交中提取 AWS 访问密钥 AKIAWHEOTHRFSGQITLIY 和对应的秘密访问密钥。
  1. 访问 AWS S3 存储桶
      • 使用获取的 AWS 访问密钥访问 S3 存储桶 s3://huge-logistics-transact
      • 下载存储桶中的敏感文件(如 flag.txt)。
  1. 获取数据库连接信息
      • 从仓库代码中提取数据库连接信息,如数据库用户名和密码。
历史仓库提交能扫描到很多资料 甚至有黑盒源代码泄露
 

利用S3 Bucket版本控制访问机密信息

  1. 访问目标 IP
      • 访问目标 IP 地址 16.171.123.169,发现网站使用 S3 存储桶 huge-logistics-dashboard
  1. 查看存储桶版本
      • 使用 aws s3api list-object-versions 命令查看存储桶中的对象版本,发现 DeleteMarkers 和多个版本的 auth.js 文件。
  1. 获取旧版本文件
      • 使用 aws s3api get-object 命令下载旧版本的 auth.js 文件(版本 ID 为 qgWpDiIwY05TGdUvTnGJSH49frH_7.yh)。
  1. 提取敏感信息
      • 从下载的 auth.js 文件中提取登录 Web 系统的邮箱和密码。
      • 使用提取的凭证登录 Web 系统,获取 AWS 访问密钥(AK/SK)。
  1. 访问敏感文件
      • 使用获取的 AWS 访问密钥访问 S3 存储桶中的敏感文件(如 private/Business Health - Board Meeting (Confidential).xlsx)。
      • 下载并查看文件内容,获取敏感信息(如 flag)。
 
 
S3存储桶的暴力破解
  1. 发现 S3 存储桶
      • 通过 aws s3 ls 命令发现 S3 存储桶 hlogistics-web
      • 下载并分析存储桶中的 index.html 文件,发现其他存储桶名称 hlogistics-images 和 hlogistics-staticfiles
  1. Fuzzing 其他存储桶
      • 使用 ffuf 工具对其他可能的存储桶名称进行模糊测试,发现新的存储桶 hlogistics-beta
      • 下载并分析 hlogistics-beta 存储桶中的 SystemTrackingPackagesTest.py 文件,获取 AWS 访问密钥(AK/SK)。
  1. 获取 SSM 参数
      • 使用获取的 AWS 访问密钥访问 AWS Systems Manager (SSM),获取新的 AWS 访问密钥。
      • 使用新的 AWS 访问密钥获取 Lambda 函数列表,并调用 Lambda 函数 crew_administration_data,获取敏感信息(如 flag)。
 

揭示CodeCommit和Docker中的秘密

镜像扫描与凭证发现

  • 目标: 审查 Huge Logistics 的公共代码仓库,查找可能被忽视的凭证或敏感信息。
  • 工具: 使用 docker scout 工具分析 Docker 镜像。
  • 步骤:
      1. 在 Docker Hub 上搜索 hljose/huge-logistics-terraform-runner 镜像。
      1. 使用 docker scout quickview 分析镜像的漏洞情况。
      1. 运行镜像容器并查看环境变量,发现 AWS 访问密钥和秘密访问密钥。

2. 利用凭证访问 AWS 资源

  • 目标: 利用发现的凭证访问 AWS 资源,进行横向和纵向移动。
  • 工具: 使用 aws-enumerator 工具枚举 AWS 权限。
  • 步骤:
      1. 使用发现的 AWS 凭证枚举权限,发现具有 ListRepositories 权限。
      1. 列出 CodeCommit 仓库,并查看特定仓库 vessel-tracking 的内容。
      1. 获取仓库中的文件 js/server.js,发现另一个 AWS 访问密钥和秘密访问密钥。

3. 访问 S3 存储桶

  • 目标: 利用新的 AWS 凭证访问 S3 存储桶,获取敏感信息。
  • 工具: 使用 AWS CLI 访问 S3 存储桶。
  • 步骤:
      1. 列出 S3 存储桶 vessel-tracking 中的所有文件。
      1. 下载并查看 flag.txt 文件,获取敏感信息。
 
 

SSRF to Pwned

攻击思路简要描述

1. 初步信息收集

  • 目标: 评估 Huge Logistics 网站的安全性,并调查与其云基础设施的潜在风险。
  • 工具: 使用 whois 工具查看 IP 信息。
  • 步骤:
      1. 访问 IP 52.6.119.121,发现重定向到域名 hugelogistics.pwn
      1. 使用 whois 工具查看 IP 信息,确认该 IP 属于 Amazon EC2 实例。

2. 发现公开的 S3 存储桶

  • 目标: 查找并访问 Huge Logistics 的公开 S3 存储桶。
  • 工具: 使用 AWS CLI。
  • 步骤:
      1. 在网站代码中发现 huge-logistics-storage 存储桶。
      1. 尝试访问存储桶中的文件,但因权限问题无法下载。

3. 利用 SSRF 漏洞访问元数据

  • 目标: 利用服务器端请求伪造(SSRF)漏洞访问 AWS 元数据。
  • 工具: 修改网站请求参数。
  • 步骤:
      1. 在网站的 status 页面,将 name 参数改为 AWS 元数据 IP 169.254.169.254
      1. 访问元数据路径 /latest/meta-data/,获取 IAM 角色信息。
      1. 获取临时凭证,访问 S3 存储桶中的文件。

4. 获取敏感信息

  • 目标: 下载并查看存储桶中的敏感文件。
  • 工具: 使用 AWS CLI。
  • 步骤:
      1. 列出 huge-logistics-storage 存储桶中的所有文件。
      1. 下载并查看 flag.txt 文件,获取敏感信息。
 
 
Loading...