生产环境Laravel应用public与storage目录生成未知文件排查求助
问题性质判定
这类批量散落在storage、可写目录下的混淆index.php、伪装成系统文件的隐藏.ico,是典型的Webshell植入后的横向扩散行为,绝非Laravel框架自动生成。
将你贴出的混淆代码做八进制转义解码后,可以看到所有恶意index.php的核心调用目标是:/var/www/html/estonLedger/accountgo/main_file/public/storage/logs/.f406434.ico
这个隐藏的.ico文件就是整个入侵链的核心payload,其余散落在各个目录的index.php都是用来拉取核心马文件的持久化入口,目的是就算删掉某一个入口,其他位置的脚本还能重新下载马文件完成复现。
即时处置操作清单
- 第一时间留存取证:对所有异常文件执行
stat <文件路径>,把文件创建时间、属主、权限信息导出备份,不要直接删除文件,方便后续溯源 - 递归遍历整个项目目录,删除所有异常未跟踪的文件:包括所有散落在子目录的index.php、带随机哈希后缀的隐藏.ico文件,重点覆盖storage/app、storage/framework、storage/uploads、storage/logs全路径
- 全项目扫描可疑代码:全局搜索
@include、eval、base64_decode、gzinflate、str_rot13、create_function这类常见Webshell混淆函数,删除所有不属于业务逻辑的异常代码片段 - 核查站点目录权限:确认Web进程(一般是www-data)对目录的权限,杜绝全目录777权限的配置,仅给storage目录开放必要的写权限
- 检查Nginx配置:确认没有错误规则允许storage、public上传目录下的PHP文件被解析执行,很多攻击者都是利用这类配置绕过上传检测,直接让上传的恶意代码执行生效
入侵根因排查方向
- 查Web访问日志:回溯最近30天的访问记录,定位最早出现马文件写入的时间点,重点匹配:访问路径带隐藏文件、异常后缀的请求,带POST数据到上传接口但无合法登录态的陌生IP,直接访问那个核心.ico马文件的请求来源
- 查服务器登录日志:查看
/var/log/auth.log里的SSH登录记录,确认有没有陌生IP的成功登录、弱口令爆破成功的记录;同时核查Laravel后台、数据库的登录日志,排查有没有账号被盗用的情况 - 查业务漏洞:重点检查文件上传接口有没有做后缀、文件内容校验,有没有允许上传伪装成.ico、图片后缀的PHP脚本;检查最近引入的第三方Laravel插件、扩展有没有已知的文件上传、代码执行漏洞
- 查配置泄露:确认项目根目录下的.env文件、备份文件有没有被放到web可访问的路径下,导致数据库账号、后台账号被攻击者获取
长期防护配置
- 在Nginx中给storage、public上传目录单独加规则:禁止解析执行该路径下的所有PHP文件,直接返回403
- 加规则禁止访问所有以.开头的隐藏文件,从入口层拦截对核心马文件的访问
- 配置文件变动监控:用自带的系统工具监控storage、public目录的文件创建、修改行为,一旦有新的PHP类型文件生成立刻触发告警
- 定期执行文件完整性校验,对比生产环境和代码仓库的文件哈希值,及时发现被篡改的文件
内容的提问来源于stack exchange,提问作者Than Tun Aung
相关产品推荐
相关产品推荐

