Laravel8项目public目录自动生成随机PHP文件是否为恶意代码咨询
核心结论
你站点public目录下自动生成的这类随机命名PHP文件,是经过混淆加密的PHP WebShell(网页后门),属于明确的恶意程序,是攻击者拿到你服务器权限后植入的远控入口,和Laravel框架本身、官方扩展包的正常逻辑没有任何关系。
代码实际运行逻辑
这段代码做了多层混淆规避安全软件查杀,实际逻辑非常清晰:
- 开头的
x1函数是简单的字符映射解密,把代码里硬编码的数字索引,从预设的乱码字符串中拼接出真实要调用的PHP系统函数名,包括array_merge、str_repeat、substr、strlen、explode、pack、file_put_contents、unlink、md5,避免明文函数名被杀毒软件直接通过特征匹配查杀。 - 脚本会自动合并遍历请求中所有Cookie、POST参数,作为接收攻击者指令的入口,不需要固定的传参名,常规WAF规则很难拦截这类请求。
- 接收到参数后,先对参数做十六进制解码,再和脚本内置的密钥做异或解密,还原出攻击者传入的任意PHP代码。
- 解密拿到恶意代码后,会在当前目录生成一个临时文件,把“执行完自删”的逻辑和恶意代码一起写入文件,直接include执行临时文件,执行完成后立刻删除临时文件,全程不会在磁盘上留存明文恶意代码,隐蔽性极强。
攻击者可以通过这个后门直接执行任意服务器命令、篡改数据库、挂黑页、植入挖矿程序、拖走站点所有数据,甚至把服务器当做肉鸡发起网络攻击。
必须立刻执行的处置操作
- 第一时间删除所有public目录下你不认识的随机命名PHP文件,同时全盘扫描整个项目目录,重点排查public/uploads、storage、vendor这几个攻击者常存放后门的可写目录,把所有不属于项目原始代码的PHP文件全部清理干净。
- 立刻排查入侵入口:先检查项目是否存在未授权上传漏洞(比如上传接口没校验文件后缀、没禁止上传目录执行PHP),是否使用过来源不明的第三方Laravel扩展、主题,生产环境是否开启了debug模式泄露敏感信息,
.env文件是否能被公开访问,APP_KEY是否发生过泄露。 - 修正服务器目录权限:Laravel项目的运行用户(通常是www-data)只需要给storage、bootstrap/cache两个目录开放写权限即可,其他目录尤其是public、vendor目录绝对不能给写权限,严禁给整个项目目录设置777权限。
- 回溯服务器访问日志,找到最早出现这类后门文件的时间点,筛选该时间点前后的异常请求,定位攻击者利用的漏洞点,完全修复漏洞后再重新上线服务,否则只删除后门的话,攻击者可以再次通过原有漏洞重新植入恶意文件。
- 轮换所有敏感凭证:包括服务器SSH登录密码、数据库密码、站点后台管理员密码,重新生成Laravel的APP_KEY后执行
php artisan config:cache刷新配置,避免攻击者之前留存的凭证可以直接再次入侵。
内容的提问来源于stack exchange,提问作者user18660588
相关产品推荐
相关产品推荐

