HackTheBox - Bucket Writeup [2020]

Intro

S3是AWS(Amazon)的一个云存储(Bucket),可以用来存储可用的公共云存储资源,可提供可伸缩性,数据可用性,安全性和性能,就容量而言,可以存储在S3中的对象的数量和数量不受限制。对象是S3中的基本实体,可以用来存储各式各样的东西,它由数据,键和元数据组成。

详见:https://aws.amazon.com/cn/s3/

Attack

首先对靶机进行扫描,并枚举出对应的服务

img

扫描结果发现目标机子开放了 sshhttp 端口,且 80 端口做了一个301跳转,这个以 .htb 结尾的域名是靶机的一个突破口,先在 hosts 文件添加该服务器的IP地址和域名,然后在访问该服务器发现可以正常打开web服务了

img

整个网站就一静态文件,审查元素看了下发现有个主机为 s3 的子域,但这主机是访问不了的

img

为此我们再往 hosts 文件里绑定这个域名,然后再打开 s3,发现图片可以正常显示了,访问网站根目录返回 {"status": "running"}

img

接下来一顿瞎操作,爆破ssh,查找敏感文件,最后使用 Dirsearch 找出两条可访问的路径

1
python3 dirsearch.py -u http://s3.bucket.htb -e /usr/po7/dic/shells.txt

img

访问 /health 返回如下结果

img

可以看出来这台服务器运行着 Awazon 的网络服务(S3存储桶以及与DynamoDB服务)访问 /shell 跳转到了 http://444af250749d:4566/shell

img

简单分析下接下来的流程,不出意外的话我们需要通过 aws cli 连上s3这个桶,

aws cli的使用方法

详见查看:https://blog.csdn.net/libing_thinking/article/details/48091743

官方文档:https://docs.aws.amazon.com/cli/latest/reference/

如果你没有配置任何东西的话,则需要使用 aws configure 配置CLI,题目没有给出任何的 ID和Key,为此我们随便填即可

1
2
3
4
5
root@zqx:~/hacking# aws configure
AWS Access Key ID [****************test]: test
AWS Secret Access Key [****************test]: test
Default region name [us-east-1]: us-east-2 // 区域终端节点
Default output format [text]: text

填好后我们开始挨个枚举服务,列出 S3 会发现一个叫 adserver 的桶

img

而列出 DynamoDB 的所有表,会发现一个叫 users 的表

img

查看表内容发现了三个账号,由于我们还不知道该在哪使用它,所以先放一边,待会用得着

img

返回 s3 列出adserver里边的文件

img

会发现这个就是我们刚才访问的那个网站,前面已经写了S3是一个存储对象,同时也是一台云服务器,我们可以在上边运行各种命令,接下来我们反弹个 shell 试试,然后用 nc -vlp [ Port ] 等待连接

脚本地址:https://github.com/icecliffs/backup/tree/main/php-webshell

img

访问目标php,连接成功,但这破题会隔几秒钟把新的文件删除掉,我敲了几个命令就连不上了,所以接下来必须抓紧时间获取重要信息,自己的权限低的一批,但查看 /etc/passwd 文件发现有几个用户

img

第一眼就看到了 roy 是个正常用户

img

随便翻了一下后,user.txt 有猫腻,打开后获得 flag ,本题结束

作者

IceCliffs

发布于

2020-12-24

更新于

2023-10-28

许可协议

评论