同事从某站下了一套源码,解压后 index.php 第一行是一长串被 base64 包起来的字符,前台跑着正常,后台登录页却多出一个藏起来的 input。

PHP 源码站上的包,十个里有两三个被动过手脚。不是整套重写,往往只加一两行,平时根本看不出来,等出事了才回头翻。

先扫这几处

  • php 文件开头结尾多出来的 eval、base64_decode、gzinflate
  • index.php、config.php 里被注释掉的可疑 include
  • 上传目录下能直接执行的 .php 文件
  • public 目录里莫名多出的 .htaccess 重写规则

用编辑器全局搜 eval 和 base64_decode,两三分钟能筛一遍。发现整段乱码的,别费劲去解,直接删掉那个文件。

一句话木马长什么样

最常见的是 eval 接一个 POST 参数,外面包一层看着像业务代码的函数,实际任何内容都能执行。还有藏在图片里的,后缀改成 jpg,上传后再靠 .htaccess 解析成 php 跑。

这类东西的特征是文件时间戳和别的文件差很远,或者整个文件只有十几行却引用了大量系统函数。

下载前后各做一件事

下载前看来源。GitHub、Gitee 上的官方仓库,有提交记录和 issue 的,比网盘包可靠得多。要商用模板,去作者自己的站买,别用打包站里所谓的破解版。

下载后先别往生产环境放。本地起一个 PHP 8.1,把上传目录的执行权限关掉,再扫一遍。nginx 里给 uploads 路径直接 return 403,这一条能挡掉大部分。

还要看数据库配置有没有写死成别人的库。有些包自带一个远程连接串,你以为数据在自己机器上,其实全在他人服务器。

一句话:源码能不能用,不看页面好不好看,看有没有人往里塞东西。扫一遍的成本很低,被拖库的成本很高。