CODE-03 配置与凭据泄露整改
CODE-02被利用后的结果 · 客户非Docker部署 · 无独立业务代码整改
修正结论:CODE-02修复后,“上传配置读取脚本”这条攻击路径已被阻断。CODE-03不再新增业务代码,剩余工作是轮换已泄露凭据、清理历史恶意文件、验证旧值失效;CODE-04独立文件读取仍需单独修复。
漏洞关系
CODE-02:允许上传并执行PHP脚本
→ 上传配置读取脚本
→ 读取现有config.php / database.php
→ CODE-03:配置与凭据泄露
CODE-02补丁生效:阻断再次上传执行
CODE-03剩余闭环:轮换旧凭据 + 清理历史WebShell + 验证旧值失效
CODE-04:另一条独立读取路径,仍必须单独修复
当前代码现状
store/env.php:只定义 TP_ENV + BUSINESS
↓
application/config.php 公共应用配置
+ application/config/prod/zhct_xwq/config.php 新吴区覆盖
application/database.php 公共数据库配置
+ application/config/prod/zhct_xwq/database.php 新吴区覆盖
store没有.env或.env.*文件;只有根目录env.php。.env.*属于ai_api配置方式,与本方案无关。
最小处理范围
| 文件/环境 | 动作 |
|---|---|
prod/zhct_xwq/config.php | 只更新已经泄露且仍在使用的Redis、微信及第三方凭据;键名和数组结构不变。 |
prod/zhct_xwq/database.php | 切换新吴区项目专属、最小权限数据库账号。 |
application/config.php | 不改结构;仅轮换报告已读取且仍被项目共享使用的敏感项。 |
application/database.php | 不改加载逻辑;仅处理报告已读取且仍有效的公共数据库凭据。 |
env.php | 不修改现有环境/商户选择逻辑继续使用。 |
| 业务代码 | 不新增CODE-03逻辑入口修复归CODE-02/CODE-04。 |
明确不做
不新增.env
store没有.env机制,本次不引入。
不改加载器
保留TP_ENV、BUSINESS和array_merge。
不做Docker方案
客户按现有Nginx + PHP-FPM直接部署。
不改其他端
PC、小程序、设备端、接口和数据库结构不变。
凭据轮换顺序
- 建立数据库、Redis、微信及实际使用第三方凭据的消费者清单。
- 创建新吴区专属数据库账号并最小授权。
- 准备新Redis/第三方凭据,先不撤销旧值。
- 更新客户服务器现有四个配置文件的必要字段。
- 平滑重载PHP-FPM,执行后台、小程序、缓存和第三方业务冒烟。
- 撤销泄露旧值并验证旧账号、旧密码、旧Token全部失败。
- 完成WebShell、SSH key、定时任务和PHP自动加载等持久化检查。
已上传脚本怎么处理
- 先让CODE-02和Nginx上传目录禁执行生效。
- 确认实际项目根目录,用
realpath证明目标位于public/static/upload内。 - 只记录
stat和sha256sum,不得打开或执行脚本。 - 把精确目标移动到
/var/lib/zhct-security-quarantine/等Web外0700隔离目录。 - 扫描PHP/PHTML/PHAR、双扩展和脚本内容伪装,逐个复核,不批量误删图片。
- 确认取证完成后永久删除隔离文件,验证原URL返回404。
如果报告已经展示配置内容,就证明脚本执行过。删除脚本可以清掉攻击产物,但不能让攻击者已经拿到的密码和Secret自动失效,仍须轮换。
客户非Docker部署要求
| 配置路径 | 继续使用项目内application/config/prod/zhct_xwq及公共配置文件 |
| 权限 | 建议0640;部署账号为属主,PHP-FPM运行组只读 |
| Nginx root | 必须指向项目public/,不能指向项目根目录 |
| 发布 | 备份放非Web目录,发布不能覆盖准备好的新配置 |
| 重载 | 按现场PHP版本平滑重载PHP-FPM,不使用容器命令 |
验收门禁
- CODE-02补丁和Nginx禁执行阻断上传配置读取脚本。
- CODE-04阻断另一条独立任意文件读取路径。
- 新吴区数据库使用项目专属最小权限账号。
- 全部泄露旧凭据失效,新值下业务正常。
- 历史WebShell和其他持久化点清理完成。
- 公共凭据修改前已核对共享消费者,没有误伤其他项目。
待确认
| 现场信息 | PHP-FPM用户/组、项目绝对路径、服务名 |
| 业务清单 | 微信、小程序、人脸、AI、打印、支付实际启用范围 |
| 共享范围 | 公共数据库、Redis和第三方密钥的全部消费者 |
| 发布方式 | 客户配置随专属发布包交付,还是服务器发布后独立维护 |
人工评审已确认:客户非Docker部署;方案按现有prod目录和公共配置文件做最小修改。