当前位置: 首页 > news >正文

AWS S3枚举基础

解题

拿到网站http://dev.huge-logistics.com我们先可以对其进行基础的信息搜集,https://s3.amazonaws.com/dev.huge-logistics.com/static/favicon.png我们可以发现云资源

aws s3 ls s3://dev.huge-logistics.com --no-sign-request 利用这个我们可以查看S3 存储桶的顶层逻辑目录

image

在看到众多目录的时候,我们可以采取递归的方法挨个尝试

image

尝试过后发现有zip文件可以下载

下载后发现是 PowerShell 脚本文件

image

其硬编码泄露了AK/SK以及区域标识符

通过aws configure授权访问

image

重新访问发现

image

已近有权限去访问期目录了,但是当前账户的权限不够,还需要提权。当前没办法只能查看其它目录文件

image

我们可以通过xml文件发现

image

有了新的AK/SK尝试,发现是admin账户

image

到这一步我们已经可以拿到flag了

思考

我们可以进一步查看为什么我们不能再浏览器上查看却能在AWS CLI 上请求成功
image

{"Version": "2012-10-17","Statement": [{"Sid": "PublicRead","Effect": "Allow","Principal": "*",  // 所有用户(匿名+授权)"Action": "s3:GetObject",  // 读取/下载文件"Resource": ["arn:aws:s3:::dev.huge-logistics.com/shared/*","arn:aws:s3:::dev.huge-logistics.com/index.html","arn:aws:s3:::dev.huge-logistics.com/static/*"]},{"Sid": "ListBucketRootAndShared","Effect": "Allow","Principal": "*",  // 所有用户"Action": "s3:ListBucket",  // 列目录"Resource": "arn:aws:s3:::dev.huge-logistics.com","Condition": {"StringEquals": {"s3:delimiter": "/","s3:prefix": ["", "shared/", "static/"]  // 仅允许列根目录、shared/、static/}}},{"Sid": "AllowAllExceptAdmin","Effect": "Allow","Principal": {"AWS": ["arn:aws:iam::794929857501:user/it-admin",  // 管理员用户(XML 里的 prod-admin)"arn:aws:iam::794929857501:user/pam-test"   // 低权限测试用户]},"Action": ["s3:Get*", "s3:List*"],  // 允许读取、列出所有操作"Resource": ["arn:aws:s3:::dev.huge-logistics.com","arn:aws:s3:::dev.huge-logistics.com/*"]},{"Sid": "ExplicitDenyAdminAccess","Effect": "Deny",  // 显式拒绝(优先级最高)"Principal": {"AWS": "arn:aws:iam::794929857501:user/pam-test"},"Action": "s3:*",  // 所有 S3 操作(下载、读取、删除等)"Resource": "arn:aws:s3:::dev.huge-logistics.com/admin/*"  // 仅 admin/ 目录}]
}

我们可以发现在Bucket策略里面想要匿名执行列目录,必须满足

  1. 请求里带 prefix 参数(值可以是空字符串 ""shared/static/);
  2. 请求里带 delimiter 参数,且值必须是 /

在AWS CLI 里面会默认执行这两个参数的执行,但在浏览器里面直接访问是不会有这两个参数的,故会被拒绝。

s3.amazonaws.com/dev.huge-logistics.com/(未加参数)

dev.huge-logistics.com.s3.amazonaws.com/?prefix=&delimiter=/(加了参数)

总结

  1. 核心原因:桶策略要求 ListBucket 必须带 prefix(空 /shared//static/)和 delimiter=/ 参数;
  2. 行为差异:CLI 自动加参数→匹配条件→成功;浏览器不加参数→不匹配→失败;
  3. 突破方法:在浏览器 /cURL 中手动添加这两个参数,就能绕过 “请求格式导致的拒绝”;
  4. 关键考点:S3 桶策略的 Condition 条件校验,以及 prefix/delimiter 对列目录的控制作用。
http://www.gsyq.cn/news/159568.html

相关文章:

  • 深入解析:在 Ubuntu 上安装 MySQL 的详细指南
  • 基于樽海鞘算法(SSA)的极限学习机(ELM)回归预测对比:BP、GRNN、ELM与SSA - ELM
  • 京东最新滑块逆向 e卡绑定
  • 分布式ID之雪花算法
  • 2026年最新权威AI编程软件评测和推荐
  • 基于springboot二手物品交易平台系统(源码+lw+部署文档+讲解等)
  • 艾曲波帕联合治疗方案:肿瘤放化疗后血小板低的优化策
  • STM32F103 学习笔记-21-串口通信(第1节)-串口通信协议简介
  • 学长亲荐8个AI论文软件,研究生论文写作不再难!
  • DDD笔记 | 领域驱动设计(DDD)实战
  • 快速幂
  • 我发现流末尾数据丢失,后来才知道重写_transform的flush方法
  • 实用指南:Spring Boot:DTO、VO、BO、Entity 的正确工程化分层
  • 私有知识库:数字时代的知识守护者
  • 中成空间的官网和联系方式是多少?2025年智能气膜服务商推荐 - 速递信息
  • 云原生密钥管理:Sealed Secrets与Vault
  • scheme 符号求导
  • 『JROI-4』沈阳大街 2
  • [quote]all the wood behind one arrow
  • [从程序员到架构师] 微服务场景实战 - 注册发现
  • Java毕设项目推荐-基于Java的网上宠物店管理系统宠物销售、服务预约、库存管理、客户互动【附源码+文档,调试定制服务】
  • Elasticsearch核心原理——倒排索引、映射与分词对搜索质量的影响路径
  • Cucumber特性文件编写规范
  • 汽车领域智能体构建全解析—腾讯云黑客松Agent应用创新挑战赛微信公众号赛道实战复盘
  • nt!MiInitializeLoadedModuleList分析和全局变量nt!PsLoadedModuleList初始化和LoaderBlock->LoadOrderListHead的关系非常重要
  • transformer-explainer
  • 自动化测试覆盖率:达到90%+的实战体系构建
  • 【毕业设计】基于Java的网上宠物店管理系统基于Java技术的智慧宠物店管理系统设计(源码+文档+远程调试,全bao定制等)
  • 【Week1_Day1】软件测试每周学习记录与反思
  • 基于纳米微粒激发平面波的米氏散射FDTD仿真模拟与验证