夜间无法登录:ThinkPHP api接口 23:00 准时罢工的排查全纪录

"夜间无法登录":ThinkPHP api接口 23:00 准时罢工的排查全纪录

> 关键词:ThinkPHP、小程序、23:00-07:00、登录失败、SEO 木马、str_rot13、后门

> 发生时间:2025-09-20 ~ 2025-11-26

> 脱敏域名:https://your-domain.com


该问题已经折磨4-5个月了,今天终于一个一个文件打开手动检查,终于发现了问题所在,不知道其他人有没有遇到这种其他问题。

1. 故障现象

时间段 表现
每天 23:00 整 ~ 次日 07:00 小程序登录接口 100% 超时,其余时间完全正常
同时间段 curl / Postman 返回正常 JSON,排除网络、证书、防火墙
服务器负载、内存、磁盘 均正常,无 502/503

结论 :问题不在网络、不在运维、不在代码逻辑,像"定时任务"一样神奇。


2. 初步排查(全部失败)

排查方向 结果
代码里是否写了 date('H') 限制 ❌ 全局搜索无时间判断
JWT token 过期/系统时间错乱 date 与 NTP 差距 < 1s
nginx 错误日志 ❌ 23:00 前后 无请求记录
云防火墙/WAF 定时策略 ❌ 关闭 WAF 后故障依旧
微信后台"夜间维护"配置 ❌ 无该功能

3. 转折点:curl 成功 vs 小程序失败

  • curl 始终 200 → 后端 正常
  • 真机 23:00 后失败环境层被截流

于是怀疑 PHP 层代理/转发,全局搜关键字:

bash 复制代码
find /www/wwwroot/ -name "*.php" -mtime -7 \
  -exec grep -l "str_rot13\|onfr64_rapbqr" {} \; 

于是怀疑 PHP 层代理/转发,全局搜关键字:

可以看到,这段小马代码藏的很"深",本身这页代码没几行,回车到600多行才出现木马了,于是我进行base64转义,发现了下面的问题。
关键路径:/www/wwwroot/domain.com/thinkphp/start.php

php 复制代码
function function_tool(){
    $rot="str_rot13";
    $en=$rot("onfr64_rapbqr");
    ...
}

4. 木马行为解剖

解码后真相 作用
gmdate('G') 判断小时 06:00-23:00 只劫持 蜘蛛/手机 HTML
23:00-06:00 所有请求file_get_contents 转发到远程博彩服务器
本地生成缓存 ./caches/xxx 目录,白天自动删除,毁灭痕迹

画成时间轴:

23:00 ─┐

├─ 用户 POST /api/login → 木马拦截 → 转发博彩站 → 返回空内容 → 小程序超时

07:00 ─┘

木马停止代理,接口恢复

5. 验证 & 复现

23:10 复制代码
23:10 同网络 curl → 成功(绕过了 UA 判断)
23:10 查看 access.log → 无记录(请求被木马吞掉)
删除木马文件 + 清缓存目录 → 23:15 再测 → 登录成功 ✅

6. 清除与加固

bash 复制代码
# 1. 备份证据
tar -zcf /tmp/backdoor_$(date +%F).tar.gz \
  $(find . -name "*.php" -exec grep -l "str_rot13" {} \;)
# 2. 删除木马
sed -i '/function function_tool/,/function_tool();/d' infected.php
# 3. 清缓存
rm -rf caches/*
# 4. 目录锁权限
chmod 555 caches
chattr +i caches   # 极端场景可加 immutable

7. 参考工具

相关推荐
独角鲸网络安全实验室7 小时前
2026微信小程序抓包全解析:从实操落地到合规风控,解锁前端调试新范式
前端·微信小程序·小程序·抓包·系统代理绕过·https证书严格校验·进程隔离
互联科技报21 小时前
2026小程序店铺装修模板怎么选?小程序店铺装修教程是什么?
小程序
凡科网小帆21 小时前
右以云小程序:零基础企业的高性价比数字化落地实录
小程序
石榴树下的七彩鱼21 小时前
OCR API价格对比2026:身份证/发票/医疗票据识别哪家性价比最高?含Python对接+成本公式
开发语言·人工智能·python·ocr·图像识别·文字识别·api接口
棋宣1 天前
微信小程序onShareAppMessage 分享-生命周期函数 在vue3中 组合式函数 hooks中不生效
微信小程序·小程序
2601_957966531 天前
抽卡机盲盒小程序怎么做?完整功能搭建与开发要点
小程序
wuyoula2 天前
全新多平台电商代付商城源码
开发语言·c++·ui·小程序·php源码
低代码布道师2 天前
微搭低代码MBA 培训管理系统实战 36——小程序端课程预约功能实现
低代码·小程序
万岳科技系统开发2 天前
小程序直播架构调整指南:H5嵌套模式的优化与替代方案
小程序·架构
Greg_Zhong2 天前
学习AI 工程师第 3 天:小程序中调用豆包模型,实现ai助手(打字机效果与流式输出)
小程序·ai工程师·小程序调用豆包实现ai助手