安全矩阵

 找回密码
 立即注册
搜索
查看: 1317|回复: 0

云安全 | AWS 渗透总结

[复制链接]

252

主题

252

帖子

1309

积分

金牌会员

Rank: 6Rank: 6

积分
1309
发表于 2023-3-20 00:18:03 | 显示全部楼层 |阅读模式
原文链接:云安全 | AWS 渗透总结

0x01 基础信息

我手动遍历应用程序查找一些敏,在开始对AWS环境进行渗透测试之前,您需要了解一些关于 AWS 工作原理的基本知识,以帮助您了解需要做什么、如何发现错误配置以及如何利用它们。组织层次结构、IAM等基本概念解释如下:
亚马逊AWS-基本信息
https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-basic-information
在线实验室

  1. 在线实验室
  2. https://github.com/RhinoSecurityLabs/cloudgoat
  3. https://hackingthe.cloud/aws/capture_the_flag/cicdont/
  4. https://github.com/BishopFox/iam-vulnerable
  5. http://flaws.cloud/
  6. http://flaws2.cloud/
  7. https://github.com/nccgroup/sadcloud
  8. https://github.com/bridgecrewio/terragoat
  9. https://github.com/ine-labs/AWSGoat
复制代码



0x02 AWS Pentest

渗透 AWS 环境,了解以下内容非常重要:

  1. 1.正在使用哪些服务、
  2. 2.正在公开什么、
  3. 3.谁可以访问什么以及内部 AWS 服务与外部服务如何连接。
复制代码



从红队的角度来看,破坏 AWS 环境的第一步是设法获得一些凭证
  1. github(或类似)中的泄漏- OSINT
  2. 社会工程学
  3. 密码重用(密码泄露)
  4. AWS 托管应用程序中的漏洞
  5. 具有访问元数据端点的服务器端请求伪造 https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
  6. 读取本地文件
  7. /home/USERNAME/.aws/credentials
  8. C:\Users\USERNAME\.aws\credentials
  9. 第三者违约
  10. 内部员工
  11. Cognito 凭据 https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-services/aws-cognito-enum#cognito
复制代码




或者通过破坏暴露的未经身份验证的服务:
AWS - 未经身份验证的枚举和访问
  1. https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated-enum-access
复制代码



或者,如果您正在进行审查,您可以只要求提供具有这些角色的凭证:AWS - 渗透测试的权限
  1. https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-permissions-for-a-pentest
复制代码



在您设法获得凭据后,您需要知道这些凭据属于谁,以及他们可以访问什么,因此您需要执行一些基本的枚举:
基本枚举SSRF
如果您在 AWS 内的机器中发现 SSRF,请检查此页面以获取技巧:Cloud SSRF
  1. https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
复制代码



我是谁
您需要知道的第一件事就是您是谁(在有关 AWS 环境的其他信息中,您在哪个帐户中):

  1. aws sts get-caller-identity
  2. aws iam get-user # 这将获取您自己的用户
  3. # 如果你有密钥 ID
  4. aws sts get-access-key-info --access-key-id = ASIA1234567890123456
  5. # 获取内部错误信息
  6. aws sns publish --topic-arn arn:aws:sns:us-east-1:*账户ID*:aaa --message aaa
  7. # 来自元数据
  8. TOKEN = ` curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" `
  9. curl -H "X-aws-ec2-metadata-token: $TOKEN " http://169.254.169.254/latest/dynamic/instance-identity/document
复制代码



请注意,公司可能会使用canary tokens来识别令牌何时被盗和使用。建议在使用令牌之前检查令牌是否为canary tokens令牌。有关详细信息,请查看此页面。
组织枚举

AWS - 组织枚举







  1. https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-services/aws-organizations-enum
复制代码



IAM 枚举
如果您有足够的权限,检查 AWS 帐户内每个实体的权限将有助于您了解您和其他身份可以做什么以及如何提升权限。
如果您没有足够的权限来枚举 IAM,您可以窃取暴力破解它们来找出它们。检查如何进行计算和暴力破解:AWS - IAM 和 STS 枚举
  1. https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-services/aws-iam-and-sts-enum
复制代码



现在您已经有了一些关于您的凭据的信息(如果您是红队,希望您没有被发现)。是时候弄清楚环境中正在使用哪些服务了。在下一节中,您可以检查一些枚举一些常见服务的方法。
服务枚举、后期开发和持久化
AWS 拥有数量惊人的服务,在下面的页面中,您将找到基本信息、枚举备忘单**、**如何避免检测、获得持久性以及关于其中一些的其他利用后技巧:
AWS - 服务
  1. https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-services
复制代码



请注意,您不需要手动执行所有工作,您可以在本文下方找到有关 自动工具的部分。
  1. https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting#automated-tools
复制代码



此外,在此阶段您可能会发现更多服务暴露给未经身份验证的用户,您可能能够利用它们:AWS - 未经身份验证的枚举和访问
  1. https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-privilege-escalation
复制代码



特权升级
如果您至少可以检查您自己对不同资源的权限,您可以检查您是否能够获得更多权限。您至少应关注以下内容中指示的权限:AWS - 权限提升
  1. https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-privilege-escalation
复制代码



公开服务
在枚举 AWS 服务时,您可能会发现其中一些将元素暴露给 Internet (VM/容器端口、数据库或队列服务、快照或存储桶……)。作为渗透测试人员/红队成员,您应该始终检查是否可以在它们上找到敏感信息/漏洞,因为它们可能会为您提供对 AWS 帐户的进一步访问权限。
在本书中,您应该找到有关如何查找暴露的 AWS 服务以及如何检查它们的信息。关于如何在暴露的网络服务中查找漏洞,我建议您在以下位置搜索特定服务:

  1. 黑客技巧 https://book.hacktricks.xyz/
复制代码



损害组织从根/管理帐户
当主账户在组织中创建新账户时,在新账户中创建一个新角色,默认命名OrganizationAccountAccessRole并为主账户提供AdministratorAccess策略以访问新账户。
因此,为了以管理员身份访问子帐户,您需要:
入侵主账户并找到子账户的ID和允许主账户以管理员身份访问的角色名称(默认为 OrganizationAccountAccessRole )。
妥协管理帐户中的委托人对子帐户中的角色的权限(即使该帐户允许管理帐户中的任何人模拟,因为它是外部帐户,特定权限是必要的)sts:AssumeRolests:AssumeRole。
  1. 要查找children帐户,请转到 aws 控制台中的组织部分或运行aws organizations     list-accounts
  2. 您无法直接找到角色的名称,因此请检查所有自定义 IAM 策略并搜索任何允许之前发    现的子帐户。sts:AssumeRole
复制代码




自动化工具
侦察
aws -recon :一个用 Ruby 编写的多线程 AWS 以安全为中心的库存收集工具。

  1. # 安装
  2. gem install aws_recon
  3. # 侦察并获取 json
  4. AWS_PROFILE=<profile> aws_recon \
  5.   --services S3,EC2 \
  6.   --regions global,us-east-1,us-east-2 \
  7.   --verbose
复制代码



cloudlist:Cloudlist 多云工具,用于从云提供商处获取资产(主机名、IP 地址)。cloudmapper:CloudMapper 可帮助您分析您的 Amazon Web Services (AWS) 环境。它现在包含更多功能,包括安全问题审计。

  1. # github中的安装步骤
  2. # 使用 aws 信息创建一个 config.json 文件,例如:
  3. {
  4.     "accounts": [
  5.         {
  6.             "default": true,
  7.             "id": "<account id>",
  8.             "name": "dev"
  9.         }
  10.     ],
  11.     "cidrs":
  12.     {
  13.         "2.2.2.2/28": {"name": "NY Office"}
  14.     }
  15. }
  16. # Enumerate
  17. python3 cloudmapper.py collect --profile dev
  18. ## Number of resources discovered
  19. python3 cloudmapper.py stats --accounts dev
  20. # Create HTML report
  21. ## In the report you will find all the info already
  22. python3 cloudmapper.py report --accounts dev
  23. # Identify potential issues
  24. python3 cloudmapper.py audit --accounts dev --json > audit.json
  25. python3 cloudmapper.py audit --accounts dev --markdow > audit.md
  26. python3 cloudmapper.py iam_report --accounts dev
  27. # Identify admins
  28. ## The permissions search for are in https://github.com/duo-labs/cloudmapper/blob/4df9fd7303e0337ff16a08f5e58f1d46047c4a87/shared/iam_audit.py#L163-L175
  29. python3 cloudmapper.py find_admins --accounts dev
  30. # Identify unused elements
  31. python3 cloudmapper.py find_unused --accounts dev
  32. # Identify publivly exposed resources
  33. python3 cloudmapper.py public --accounts dev
  34. python cloudmapper.py prepare #Prepare webserver
  35. python cloudmapper.py webserver #Show webserver
复制代码



cartography:Cartography 是一种 Python 工具,可在 Neo4j 数据库支持的直观图形视图中整合基础设施资产及其之间的关系。

  1. # Install
  2. pip install cartography
  3. ## At the time of this writting you need neo4j version 3.5.*
  4. # Get AWS info
  5. AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-prompt  --neo4j-user neo4j
复制代码



starbase:Starbase 从服务和系统(包括云基础设施、SaaS 应用程序、安全控制等)中收集资产和关系,并将其转化为由 Neo4j 数据库支持的直观图形视图。
aws -inventory:(使用 python2)这是一个试图发现在账户中创建的所有AWS 资源的工具。
aws_public_ips :这是一个获取与 AWS 账户关联的所有公共 IP 地址(IPv4/IPv6)的工具。
私隐


SkyArk:在扫描的 AWS 环境中发现最高权限的用户,包括 AWS 影子管理员。https://github.com/cyberark/SkyA ... ealth/AWStealth.ps1中的函数中找到特权策略的定义。
pacu:Pacu 是一个开源的AWS 开发框架,专为针对云环境的攻击性安全测试而设计。它可以枚举、查找错误配置并利用它们。您可以在字典中的https://github.com/RhinoSecurity ... c_scan/main.py#L134中找到特权权限的定义 。请注意,pacu仅检查您自己的 privescs 路径(不是帐户范围)。
PMapper:主体映射器 (PMapper) 是一个脚本和库,用于识别 AWS 账户或 AWS 组织的 AWS Identity and Access Management (IAM) 配置中的风险。它将账户中不同的 IAM 用户和角色建模为有向图,从而可以检查权限升级以及攻击者为访问 AWS 中的资源或操作而可能采取的备用路径。您可以检查用于在以
https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing结尾的文件名中查找 privesc 路径的权限

  1. # Install
  2. ## Feel free to use venvs
  3. pip3 install pacu
  4. # Use pacu CLI
  5. pacu
  6. > import_keys <profile_name> # import 1 profile from .aws/credentials
  7. > import_keys --all # import all profiles
  8. > list # list modules
  9. > exec iam__enum_permissions # Get permissions
  10. > exec iam__privesc_scan # List privileged permissions
复制代码



PMapper:主体映射器 (PMapper) 是一个脚本和库,用于识别 AWS 账户或 AWS 组织的 AWS Identity and Access Management (IAM) 配置中的风险。它将账户中不同的 IAM 用户和角色建模为有向图,从而可以检查权限升级以及攻击者为访问 AWS 中的资源或操作而可能采取的备用路径。您可以检查用于在以_edges.py https://github.com/nccgroup/PMap ... ipalmapper/graphing结尾的文件名中查找 privesc 路径的权限
  1. # Install
  2. pip install principalmapper
  3. # Get data
  4. pmapper --profile dev graph create
  5. pmapper --profile dev graph display # Show basic info
  6. # Generate graph
  7. pmapper --profile dev visualize # Generate svg graph file (can also be png, dot and graphml)
  8. pmapper --profile dev visualize --only-privesc # Only privesc permissions
  9. # Generate analysis
  10. pmapper --profile dev analysis
  11. ## Run queries
  12. pmapper --profile dev query 'who can do iam:CreateUser'
  13. pmapper --profile dev query 'preset privesc *' # Get privescs with admins
  14. # Get organization hierarchy data
  15. pmapper --profile dev orgs create
  16. pmapper --profile dev orgs display
复制代码



cloudsplaining:Cloudsplaining 是一种 AWS IAM 安全评估工具,可识别违反最低权限的行为并生成风险优先的 HTML 报告。它会向您展示潜在的超特权客户、内联和 aws政策,以及哪些委托人可以访问它们。(它不仅检查 privesc,还检查其他类型的有趣权限,推荐使用)。
cloudjack:CloudJack 评估 AWS 帐户是否存在由于 Route53 和 CloudFront 配置分离而导致的子域劫持漏洞。
ccat : 列出 ECR 存储库 -> 拉取 ECR 存储库 -> 后门它 -> 推送后门图像
Dufflebag:Dufflebag 是一种工具,可通过公共弹性块存储 ( EBS) 快照搜索可能被意外遗漏的秘密。
cloudsploit:Aqua 的 CloudSploit 是一个开源项目,旨在检测云基础设施帐户中的安全风险,包括:Amazon Web Services (AWS)、Microsoft Azure、Google Cloud Platform (GCP)、Oracle Cloud Infrastructure (OCI)、和 GitHub(它不寻找 ShadowAdmins)。
ScoutSuite:Scout Suite 是一个开源的多云安全审计工具,可以对云环境进行安全态势评估。
Reference
https://www.youtube.com/watch?v=8ZXRw4Ry3mQ
https://cloudsecdocs.com/aws/defensive/tooling/audit/


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-28 23:48 , Processed in 0.014382 second(s), 19 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表