【网络安全】Oracle:SSRF获取元数据

未经许可,不得转载。

文章目录

前言

Acme 是一家广受欢迎的播客托管公司,拥有庞大的客户群体。与许多大型运营公司一样,Acme 采用了Apiary的服务,使用户能够安全高效地管理他们的播客。

Apiary 于2017年初被Oracle收购,提供了一套完整的工具集,用于开发、测试和管理REST API。

正文

注册 Acme Services。主页面如下:

上图显示了带有模板的 Apiary REST API 页面。左侧列出了可用的端点列表,每个端点根据其用途通常具有不同的请求方法,如 GET、POST 或 PUT;中间部分展示了有关每个端点的详细信息;右侧是 REST API 控制台,其中包含修改请求的各种选项,如 URI 参数、请求标头和请求正文。

右侧给出了一个示例URI:https://polls.apiblueprint.org/questions,并只能发送 GET 请求。

根据端点名称推测,发送GET请求将返回与调查相关的内容。使用UI控制台发送请求后,收到了预期的数据:

而该请求在BurpSuite中却是这样的:

也就是说,UI控制台显示的Get请求实质上是通过https://jsapi.apiary.io/apis/ssrftest/http-transactions/接口、以POST请求发送的。

通过响应包可以看到,存在一个URL参数,Apiary 正在创建一个模拟端点,端点环境为apiary-mock:

在生产环境中,通常是一个环境(Staging、Development、QA、Testing、Production、Question 等)对应一个单独的端点。而环境参数即为请求包中的Destination参数。

尝试将Destination参数由production改为questions:

响应如下,说明在此应用程序中,确实存在多组一一映射关系:

漏洞利用

云提供商(如AWS、Microsoft Azure和Google Cloud)使用的云服务器元数据 REST 接口通常通过 http://169.254.169.254 提供。

该地址是提供实例元数据服务(IMDS)的入口点。IMDS允许实例在运行时获取其自身的详细信息,包括但不限于:

  • 实例的ID和名称
  • 实例的IP地址和其他网络配置信息
  • 实例的操作系统和应用程序信息
  • 实例的启动参数和元数据

因此尝试修改URL参数为 http://169.254.169.254/opc/v2/(Oracle Cloud 的实例元数据版本) ,以访问 Oracle Cloud 的 IMDS 端点:

响应如下:

我们收到了敏感数据,其中包含三个主要证书文件:cert.pem、Intermediate.pem、key.pem

这三个文件都负责509证书签名过程,接下来,我们在本地配置属性,就可以直接通过Oracle调用接口(OCI)进行渗透测试。

第一步:使用Python的Flask模块在本地设置一个服务器。这样,当我们向实际服务器发送请求时,我们的本地服务器将通过自定义的本地地址获取所有三个证书文件。

第二步:使用命令sudo /sbin/ifconfig lo0 169.254.169.254 netmask 255.255.255.0 up,将本地主机地址重置为与IMDSv1地址相同(169.254.169.254)。这样,在向OCI服务器发送命令时,它将在IMDSv1服务器(即本地)上查找这三个证书文件。

第三步:认证成功。

接着我们就可以执行命令:

复制代码
oci--auth instance_principal iam compartment list--compartment id ocid1.tancy.oc1..aaaaaaaa t6du5rqytqh7vxfxh3fxbij7abcdefghiklmnopqrstuvxyz

这里列出指定 compartment-id 的 IAM(身份和访问管理)部门。--auth instance_principal 表示我们使用实例主体身份验证,ocid1.tenancy.oc1..aaaaaaaat6du5rqytqh7vxfxh3fxbij7abcdefghiklmnopqrstuvwxyz 是一个示例的租户ID(Tenancy OCID),用于指定我们要查询的部门所在的租户。

回显如下,获取敏感数据:

原文出处:https://orca.security/resources/blog/oracle-server-side-request-forgery-ssrf-attack-metadata/

相关推荐
互联网中的一颗神经元8 小时前
04 — 安全撤销:改错了怎么退回去
大数据·安全·elasticsearch
智脑API12 小时前
Claude Code sandbox.failIfUnavailable 怎么用?沙箱启动失败、拒绝降级和 CI 安全
安全·ci/cd
笨#小孩12 小时前
文件上传漏洞:原理与20种实战绕过方法(上)
安全·web安全
栩栩云生14 小时前
AI 最大的安全问题:它让”发送数据”看起来像”继续思考”
安全·github·agent
OCR_1337162127519 小时前
从硬件到加密协议:深度解析电子护照芯片的技术规范与安全架构
安全·安全架构
海浪仙人掌19 小时前
数据要素流通存在哪些安全隐患?数据要素流通怎样规避安全风险?
安全
mounter62520 小时前
深度解析 eBPF LSM:如何利用 eBPF 构建安全的 Linux 内核纵深防御体系
linux·安全·ebpf·linux kernel·kernel
其实防守也摸鱼20 小时前
VS Code Git 工作树:解锁多分支并行开发新体验
数据库·git·安全·oracle·架构·自动化
AI创界者21 小时前
【网络安全运维】Kali Linux 下 Medusa(美杜莎)工具的高效部署、故障排查与安全测试实战
linux·运维·web安全
m0_5474866621 小时前
《网络协议安全》全套PPT课件(太原理工大学)
网络协议·安全·网络安全