原文链接:云安全 | AWS 渗透总结
0x01 基础信息 我手动遍历应用程序查找一些敏,在开始对AWS环境进行渗透测试之前,您需要了解一些关于 AWS 工作原理的基本知识,以帮助您了解需要做什么、如何发现错误配置以及如何利用它们。组织层次结构、IAM等基本概念解释如下: 亚马逊AWS-基本信息 https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-basic-information 在线实验室
- 在线实验室
- https://github.com/RhinoSecurityLabs/cloudgoat
- https://hackingthe.cloud/aws/capture_the_flag/cicdont/
- https://github.com/BishopFox/iam-vulnerable
- http://flaws.cloud/
- http://flaws2.cloud/
- https://github.com/nccgroup/sadcloud
- https://github.com/bridgecrewio/terragoat
- https://github.com/ine-labs/AWSGoat
复制代码
0x02 AWS Pentest 渗透 AWS 环境,了解以下内容非常重要:
- 1.正在使用哪些服务、
- 2.正在公开什么、
- 3.谁可以访问什么以及内部 AWS 服务与外部服务如何连接。
复制代码
从红队的角度来看,破坏 AWS 环境的第一步是设法获得一些凭证 - github(或类似)中的泄漏- OSINT
- 社会工程学
- 密码重用(密码泄露)
- AWS 托管应用程序中的漏洞
- 具有访问元数据端点的服务器端请求伪造 https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
- 读取本地文件
- /home/USERNAME/.aws/credentials
- C:\Users\USERNAME\.aws\credentials
- 第三者违约
- 内部员工
- Cognito 凭据 https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-services/aws-cognito-enum#cognito
复制代码
或者通过破坏暴露的未经身份验证的服务: AWS - 未经身份验证的枚举和访问 - https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated-enum-access
复制代码
或者,如果您正在进行审查,您可以只要求提供具有这些角色的凭证:AWS - 渗透测试的权限 - https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-permissions-for-a-pentest
复制代码
在您设法获得凭据后,您需要知道这些凭据属于谁,以及他们可以访问什么,因此您需要执行一些基本的枚举: 基本枚举SSRF如果您在 AWS 内的机器中发现 SSRF,请检查此页面以获取技巧:Cloud SSRF - https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf
复制代码
我是谁您需要知道的第一件事就是您是谁(在有关 AWS 环境的其他信息中,您在哪个帐户中):
- aws sts get-caller-identity
- aws iam get-user # 这将获取您自己的用户
- # 如果你有密钥 ID
- aws sts get-access-key-info --access-key-id = ASIA1234567890123456
- # 获取内部错误信息
- aws sns publish --topic-arn arn:aws:sns:us-east-1:*账户ID*:aaa --message aaa
- # 来自元数据
- TOKEN = ` curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" `
- curl -H "X-aws-ec2-metadata-token: $TOKEN " http://169.254.169.254/latest/dynamic/instance-identity/document
复制代码
请注意,公司可能会使用canary tokens来识别令牌何时被盗和使用。建议在使用令牌之前检查令牌是否为canary tokens令牌。有关详细信息,请查看此页面。 组织枚举
AWS - 组织枚举
- https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-services/aws-organizations-enum
复制代码
IAM 枚举 如果您有足够的权限,检查 AWS 帐户内每个实体的权限将有助于您了解您和其他身份可以做什么以及如何提升权限。 如果您没有足够的权限来枚举 IAM,您可以窃取暴力破解它们来找出它们。检查如何进行计算和暴力破解:AWS - IAM 和 STS 枚举 - https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-services/aws-iam-and-sts-enum
复制代码
现在您已经有了一些关于您的凭据的信息(如果您是红队,希望您没有被发现)。是时候弄清楚环境中正在使用哪些服务了。在下一节中,您可以检查一些枚举一些常见服务的方法。
服务枚举、后期开发和持久化AWS 拥有数量惊人的服务,在下面的页面中,您将找到基本信息、枚举备忘单**、**如何避免检测、获得持久性以及关于其中一些的其他利用后技巧: AWS - 服务 - https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-services
复制代码
请注意,您不需要手动执行所有工作,您可以在本文下方找到有关 自动工具的部分。 - https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting#automated-tools
复制代码
此外,在此阶段您可能会发现更多服务暴露给未经身份验证的用户,您可能能够利用它们:AWS - 未经身份验证的枚举和访问 - https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-privilege-escalation
复制代码
特权升级如果您至少可以检查您自己对不同资源的权限,您可以检查您是否能够获得更多权限。您至少应关注以下内容中指示的权限:AWS - 权限提升 - https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-privilege-escalation
复制代码
公开服务 在枚举 AWS 服务时,您可能会发现其中一些将元素暴露给 Internet (VM/容器端口、数据库或队列服务、快照或存储桶……)。作为渗透测试人员/红队成员,您应该始终检查是否可以在它们上找到敏感信息/漏洞,因为它们可能会为您提供对 AWS 帐户的进一步访问权限。 在本书中,您应该找到有关如何查找暴露的 AWS 服务以及如何检查它们的信息。关于如何在暴露的网络服务中查找漏洞,我建议您在以下位置搜索特定服务:
- 黑客技巧 https://book.hacktricks.xyz/
复制代码
损害组织从根/管理帐户当主账户在组织中创建新账户时,在新账户中创建一个新角色,默认命名OrganizationAccountAccessRole并为主账户提供AdministratorAccess策略以访问新账户。 因此,为了以管理员身份访问子帐户,您需要: 入侵主账户并找到子账户的ID和允许主账户以管理员身份访问的角色名称(默认为 OrganizationAccountAccessRole )。 妥协管理帐户中的委托人对子帐户中的角色的权限(即使该帐户允许管理帐户中的任何人模拟,因为它是外部帐户,特定权限是必要的)sts:AssumeRolests:AssumeRole。 - 要查找children帐户,请转到 aws 控制台中的组织部分或运行aws organizations list-accounts
- 您无法直接找到角色的名称,因此请检查所有自定义 IAM 策略并搜索任何允许之前发 现的子帐户。sts:AssumeRole
复制代码
自动化工具侦察aws -recon :一个用 Ruby 编写的多线程 AWS 以安全为中心的库存收集工具。
- # 安装
- gem install aws_recon
- # 侦察并获取 json
- AWS_PROFILE=<profile> aws_recon \
- --services S3,EC2 \
- --regions global,us-east-1,us-east-2 \
- --verbose
复制代码
cloudlist:Cloudlist 多云工具,用于从云提供商处获取资产(主机名、IP 地址)。cloudmapper:CloudMapper 可帮助您分析您的 Amazon Web Services (AWS) 环境。它现在包含更多功能,包括安全问题审计。
- # github中的安装步骤
- # 使用 aws 信息创建一个 config.json 文件,例如:
- {
- "accounts": [
- {
- "default": true,
- "id": "<account id>",
- "name": "dev"
- }
- ],
- "cidrs":
- {
- "2.2.2.2/28": {"name": "NY Office"}
- }
- }
- # Enumerate
- python3 cloudmapper.py collect --profile dev
- ## Number of resources discovered
- python3 cloudmapper.py stats --accounts dev
- # Create HTML report
- ## In the report you will find all the info already
- python3 cloudmapper.py report --accounts dev
- # Identify potential issues
- python3 cloudmapper.py audit --accounts dev --json > audit.json
- python3 cloudmapper.py audit --accounts dev --markdow > audit.md
- python3 cloudmapper.py iam_report --accounts dev
- # Identify admins
- ## The permissions search for are in https://github.com/duo-labs/cloudmapper/blob/4df9fd7303e0337ff16a08f5e58f1d46047c4a87/shared/iam_audit.py#L163-L175
- python3 cloudmapper.py find_admins --accounts dev
- # Identify unused elements
- python3 cloudmapper.py find_unused --accounts dev
- # Identify publivly exposed resources
- python3 cloudmapper.py public --accounts dev
- python cloudmapper.py prepare #Prepare webserver
- python cloudmapper.py webserver #Show webserver
复制代码
cartography:Cartography 是一种 Python 工具,可在 Neo4j 数据库支持的直观图形视图中整合基础设施资产及其之间的关系。
- # Install
- pip install cartography
- ## At the time of this writting you need neo4j version 3.5.*
- # Get AWS info
- 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)的工具。 私隐
PMapper:主体映射器 (PMapper) 是一个脚本和库,用于识别 AWS 账户或 AWS 组织的 AWS Identity and Access Management (IAM) 配置中的风险。它将账户中不同的 IAM 用户和角色建模为有向图,从而可以检查权限升级以及攻击者为访问 AWS 中的资源或操作而可能采取的备用路径。您可以检查用于在以 https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing结尾的文件名中查找 privesc 路径的权限
- # Install
- ## Feel free to use venvs
- pip3 install pacu
- # Use pacu CLI
- pacu
- > import_keys <profile_name> # import 1 profile from .aws/credentials
- > import_keys --all # import all profiles
- > list # list modules
- > exec iam__enum_permissions # Get permissions
- > exec iam__privesc_scan # List privileged permissions
复制代码
- # Install
- pip install principalmapper
- # Get data
- pmapper --profile dev graph create
- pmapper --profile dev graph display # Show basic info
- # Generate graph
- pmapper --profile dev visualize # Generate svg graph file (can also be png, dot and graphml)
- pmapper --profile dev visualize --only-privesc # Only privesc permissions
- # Generate analysis
- pmapper --profile dev analysis
- ## Run queries
- pmapper --profile dev query 'who can do iam:CreateUser'
- pmapper --profile dev query 'preset privesc *' # Get privescs with admins
- # Get organization hierarchy data
- pmapper --profile dev orgs create
- 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/
|