kaleth4/CVE-2026-42167

GitHub: kaleth4/CVE-2026-42167

这是ProFTPD mod_sql模块的SQL注入漏洞(CVE-2026-42167)技术分析和概念验证代码库,可实现认证绕过和远程代码执行。

Stars: 0 | Forks: 0

# CVE-2026-42167: ProFTPD mod_sql 中的 SQL 注入 ## 📋 执行摘要 **CVE-2026-42167** 是 ProFTPD `mod_sql` 模块中的一个严重 SQL 注入漏洞,允许**身份验证绕过**、**后门用户注入**和**远程代码执行 (RCE)**。 | 属性 | 值 | |----------|-------| | **类型** | SQL 注入 (CWE-89) | | **严重性** | 高危/严重 | | **CVSS v3** | 8.1 | | **组件** | ProFTPD < 1.3.9a 中的 mod_sql | | **报告者** | ZeroPath Research | | **日期** | 2026年4月28日 | ## 🔍 技术描述 ### 问题:`is_escaped_text()` 中的弱验证 ProFTPD 使用 `is_escaped_text()` 函数来确定值是否已在插入 SQL 查询之前进行过净化。该函数假设任何满足以下条件的输入: - 以单引号 `'` - 结尾以单引号 `'` - 不包含内部单引号 ...已经过转义,无需进一步处理。 ### 漏洞利用 攻击者可以发送如下恶意用户名: ``` USER ' || (SELECT 1) ||' ``` 当插入 SQL 查询时: ``` INSERT "'%U', '%r', '%m'" activity_log ``` 产生: ``` INSERT "'' || (SELECT 1) || ''" activity_log ``` 有效载荷作为任意 SQL 执行,因为 `||` 运算符在注入命令周围连接空字符串。) ## ⚠️ 影响场景 ### 1️⃣ 远程代码执行 (RCE) **要求:** - PostgreSQL 后端 - 具有超级用户权限的数据库用户 - 启用 SQL 日志记录并使用 `%U` 或 `%{basename}` 变量 **技术:** ``` COPY (SELECT 1) TO PROGRAM 'comando_malicioso' ``` 以 `postgres` 用户身份执行操作系统级命令。 ### 2️⃣ 身份验证绕过 **要求:** - 启用 `SQLAuthenticate` - 在 `SQLLog ERR_*` 中使用 `%U` 变量的 SQL 日志记录(预认证) **技术:** ``` INSERT INTO users (username, password, uid, homedir) VALUES ('attacker', 'password_hash', 0, '/') ``` 攻击者注入一个具有 `uid=0` (root) 和完整文件系统访问权限的后门用户。 ### 3️⃣ 数据泄露 **要求:** - 任何 SQL 后端 - 启用 SQL 日志记录 **技术:** 基于时间的盲注 SQL 以逐字符提取凭据。) ## 📊 攻击向量 ### 攻击者可控变量 | 变量 | 含义 | 范围 | |----------|-------------|---------| | `%U` | 原始用户名(认证前) | **预认证** | | `%A` | 匿名登录密码 | 预认证 | | `%J` | 命令参数 | 预认证 | | `%m` | FTP 动词 (STOR, RETR 等) | 预认证 | | `%{basename}` | 文件名组件 | 认证后 | | `%l` | ident 响应 (RFC 1413) | 预认证(如果 identd 可用) | ### 利用路径 **预认证(更关键):** ``` %U + SQLLog ERR_* → Sin credenciales requeridas ``` **认证后:** ``` %{basename} + SQLLog STOR → Requiere cualquier usuario FTP válido ``` ## 🛡️ 缓解和解决方案 ### ✅ 建议的解决方案 **立即升级到 ProFTPD 1.3.9a 或更高版本:** ``` # 验证当前版本 proftpd -v # 更新(Debian/Ubuntu 示例) sudo apt-get update sudo apt-get install proftpd-basic=1.3.9a-1 ``` ### 🔧 临时缓解措施 **如果无法立即升级:** 1. **禁用 SQL 日志记录:** ``` # 在 proftpd.conf 中注释或删除这些行 # SQLLog * log_activity # SQLLog ERR_* log_activity ``` 2. **应用最小权限原则:** ``` -- En PostgreSQL, crear usuario sin privilegios de superusuario CREATE USER proftpd_user WITH PASSWORD 'secure_password'; GRANT SELECT, INSERT ON activity_log TO proftpd_user; -- NO otorgar SUPERUSER ``` 3. **监控漏洞利用尝试:** ``` TraceLog /var/log/proftpd/trace.log Trace sql:17 ``` ## 🔎 漏洞验证 ### 妥协指标 在 ProFTPD 跟踪日志中搜索(启用 `Trace sql:17`): ``` text 'payload' is already escaped, skipping escaping it again ``` 此消息表明绕过尝试已由易受攻击的引擎处理。 ### 验证命令 ``` # 启用详细跟踪 echo "Trace sql:17" >> /etc/proftpd/proftpd.conf # 重启 ProFTPD sudo systemctl restart proftpd # 监控日志 tail -f /var/log/proftpd/trace.log | grep "already escaped" ``` ## 📦 版本信息 | 版本 | 状态 | |---------|--------| | < 1.3.9 | ❌ 易受攻击 | | 1.3.9 | ❌ 易受攻击 | | ≥ 1.3.9a | ✅ 已修补 | | ≥ 1.3.10rc1 | ✅ 已修补 | ## 🧪 概念验证 (PoC) ### 官方仓库 **GitHub:** [ZeroPathAI/proftpd-CVE-2026-42167-poc](https://github.com/ZeroPathAI/proftpd-CVE-2026-42167-poc) ### 使用 Docker 快速配置 ``` # 克隆仓库 git clone https://github.com/ZeroPathAI/proftpd-CVE-2026-42167-poc.git cd proftpd-CVE-2026-42167-poc # 要求 # - Docker # - Git # - Python 3.10+ # - uv(Python 包管理器) # 配置易受攻击的环境 cd setup ./setup.sh # 执行 PoCs cd ../pocs python3 preauth_user_backdoor.py # Inyectar usuario backdoor (pre-auth) python3 preauth_user_rce.py # RCE vía COPY TO PROGRAM (pre-auth) python3 postauth_stor_backdoor.py # Inyectar usuario (post-auth) python3 postauth_stor_rce.py # RCE (post-auth) # 清理 cd ../setup ./teardown.sh ``` ## 📅 时间线 | 日期 | 事件 | |-----|--------| | 2026-03-28 | 向 ProFTPD 报告漏洞 | | 2026-04-07 | 验证并开发补丁 | | 2026-04-24 | 分配 CVE-2026-42167 | | 2026-04-27 | 发布补丁 (commit af90843baf7dcb8c6be1e5261be2d0b5b5850673) | | 2026-04-27 | 发布 ProFTPD 1.3.9a | ## 📚 参考资料 - **NVD:** https://nvd.nist.gov/vuln/detail/CVE-2026-42167 - **技术博客:** https://zeropath.com/blog/proftpd-cve-2026-42167-auth-bypass-privesc-rce - **PoC 仓库:** https://github.com/ZeroPathAI/proftpd-CVE-2026-42167-poc - **发布说明:** http://www.proftpd.org/docs/RELEASE_NOTES-1.3.10rc1 - **讨论:** https://github.com/proftpd/proftpd/issues/2052 ## ⚡ 最终建议 1. **立即行动:** 将 ProFTPD 升级到 1.3.9a 或更高版本 2. **审计:** 检查所有 ProFTPD 服务器上的 `SQLLog` 配置 3. **权限:** 确保数据库用户没有超级用户权限 4. **监控:** 为 SQL 注入尝试实施告警 5. **补丁:** 保持所有依赖项的定期补丁计划 **最后更新:** 2026年4月28日 **来源:** ZeroPath Research, MITRE CVE, NVD
标签:CISA项目, CVE-2026-42167, EVTX分析, Exploit, FTP服务, mod_sql, PNNL实验室, PostgreSQL, ProFTPD, RCE, Web安全, ZeroDay, 后门注入, 情报收集, 测试用例, 漏洞研究, 编程工具, 网络安全, 蓝队分析, 认证绕过, 请求拦截, 远程代码执行, 逆向工具, 隐私保护