• 4.2.11- 测试云存储


    测试云存储

    ID
    WSTG-CONF-11

    总结

    云存储服务有助于 Web 应用程序和服务在存储服务中存储和访问对象。但是,不正确的访问控制配置可能会导致敏感信息泄露、数据被篡改或未经授权的访问。

    一个已知的例子是 Amazon S3 存储桶配置错误,尽管其他云存储服务也可能面临类似的风险。默认情况下,所有 S3 存储桶都是私有的,只能由明确授予访问权限的用户访问。用户可以授予对存储桶本身以及存储在该存储桶中的单个对象的公有访问权限。这可能会导致未经授权的用户能够上传新文件、修改或读取存储的文件。

    测试目标

    • 评估存储服务的访问控制配置是否正确到位。

    如何测试

    首先确定用于访问存储服务中的数据的 URL,然后考虑以下测试:

    • 读取未经授权的数据
    • 上传新的任意文件

    您可以通过以下命令使用 curl 进行测试,并查看是否可以成功执行未经授权的操作。

    要测试读取对象的能力,请执行以下操作:

    curl -X GET https://<cloud-storage-service>/<object>
    
    • 1

    要测试上传文件的能力,请执行以下操作:

    curl -X PUT -d 'test' 'https:///test.txt'
    
    • 1

    测试 Amazon S3 存储桶配置错误

    Amazon S3 存储桶 URL 遵循以下两种格式之一:虚拟主机样式或路径样式。

    虚拟托管样式访问

    https://bucket-name.s3.Region.amazonaws.com/key-name
    
    • 1

    在以下示例中,my-bucket 是存储桶名称, us-west-2是区域, puppy.png是键名称:

    https://my-bucket.s3.us-west-2.amazonaws.com/puppy.png
    
    • 1
    • 路径样式访问
    https://s3.Region.amazonaws.com/bucket-name/key-name
    
    • 1

    如上所述,在以下示例中,my-bucket 是存储桶名称, us-west-2是区域, puppy.png是键名称:

    https://s3.us-west-2.amazonaws.com/my-bucket/puppy.jpg
    
    • 1

    对于某些区域,可以使用未指定特定于区域的终端节点的旧版全局终端节点。它的格式也是虚拟托管样式或路径样式。

    • 虚拟托管样式访问
    https://bucket-name.s3.amazonaws.com
    
    • 1
    • 路径样式访问
    https://s3.amazonaws.com/bucket-name
    
    • 1
    识别存储桶网址

    对于黑盒测试,可以在 HTTP 消息中找到 S3 URL。以下示例显示了在 HTTP 响应中的 img 标签中发送的存储桶 URL。

    ...
    <img src="https://my-bucket.s3.us-west-2.amazonaws.com/puppy.png">
    ...
    
    • 1
    • 2
    • 3

    对于灰盒测试,您可以从 Amazon 的 Web 界面、文档、源代码或任何其他可用来源获取存储桶 URL。

    使用 AWS-CLI 进行测试

    除了使用 curl 进行测试之外,您还可以使用 AWS 命令行工具进行测试。在这种情况下,使用 s3:// 协议。

    列表

    以下命令列出存储桶配置公有时的所有对象。

    aws s3 ls s3://<bucket-name>
    
    • 1
    上传

    以下是上传文件的命令

    aws s3 cp arbitrary-file s3://bucket-name/path-to-save
    
    • 1

    此示例显示上载成功时的结果。

    $ aws s3 cp test.txt s3://bucket-name/test.txt
    upload: ./test.txt to s3://bucket-name/test.txt
    
    • 1
    • 2

    此示例显示上传失败时的结果。

    $ aws s3 cp test.txt s3://bucket-name/test.txt
    upload failed: ./test2.txt to s3://bucket-name/test2.txt An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
    
    • 1
    • 2
    删除

    以下是删除对象的命令

    aws s3 rm s3://bucket-name/object-to-remove
    
    • 1

    工具

    References

  • 相关阅读:
    基于OpenCV批量分片高像素影像
    【QT基础入门】QT中的容器类:QList
    C++异常
    用Unity实现Bloom
    全家桶Spring、HikariCP、Mybatis和Oracle配置,你想要的都在这里
    【Database System Concept 7th】Chapter 24 Advanced Indexing Techniques 读书笔记
    【毕业设计】基于树莓派的指纹识别与RFID考勤系统 - 嵌入式 单片机 物联网
    windows上使用Gitblit搭建git服务仓库
    排序算法(3)--堆排序与直接选择排序
    为什么网站页面没有被百度搜索收录?是网站被攻击了?
  • 原文地址:https://blog.csdn.net/qq_44232452/article/details/133861341