加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.xcrb.com/)- 应用程序、AI行业应用、CDN、低代码、区块链!
当前位置: 首页 > 服务器 > 安全 > 正文

PHP服务器安全审计:90%高危漏洞藏于配置末行

发布时间:2026-11-02 14:23:35 所属栏目:安全 来源:DaWei
导读:  两个月之前,我蹲在IDC机柜前换一块坏了的RAID卡,风扇声像一千只鸭子在啃铁皮。监控大屏右下角弹出一条PHP-FPM进程OOM报警,我顺手切到ssh,cat /etc/php/8.1/fpm/pool.d/www.conf —— 然后就看见末行那行:env[LD_PRELO

  两个月之前,我蹲在IDC机柜前换一块坏了的RAID卡,风扇声像一千只鸭子在啃铁皮。监控大屏右下角弹出一条PHP-FPM进程OOM报警,我顺手切到ssh,cat /etc/php/8.1/fpm/pool.d/www.conf —— 然后就看见末行那行:env[LD_PRELOAD] = /var/lib/php/session/.so。不是注释,没加#,不是模板残留,就是活生生裸着的一行。我盯了十八秒,手机响了,是运维老张发来个捂眼哭笑表情包,配字:“备案号刚过审,CDN刷完缓存,蜘蛛昨天抓了三百七十二页”。


文章配图,仅供参考

  我原以为是某个灰产脚本扫进来留的后门,结果一查git log,是三个月前小王提的PR,标题写着“优化session加载性能”,review人是我自己,我当时扫了三行diff,看到session.save_handler = files就点了approve。现在看,他把env[LD_PRELOAD]硬塞进pool配置里,和php.ini里的disable_functions完全不冲突——因为FPM池级env变量根本不在disable_functions管辖范围。这个我敢打包票,翻过源码,fpm_env.c第421行,setenv()调用前压根不走disable_functions校验链。


  工位上还堆着昨天没拆的盒饭,酸辣粉汤渍在塑料盖边缘结了薄壳。我重新打开那个配置文件,手指悬在delete键上停了两秒,然后删掉了末行。没重启,先test -f /var/lib/php/session/.so —— 存在。再ps aux | grep ld_preload,没匹配。但你知道最气的是什么?那个.so文件mtime是上个月17号,比小王提PR早五天。也就是说,他不是写错了,是抄了别人现成的恶意模板,连时间戳都没改。我截图甩进群里,@了小王,他回了个“卧槽”,然后撤回,再发:“我抄的是知乎某篇‘PHP高性能技巧’…链接我找不到了。”


  后来我们把全站32台PHP服务器的pool.d目录全pull下来grep -n "env\\[",发现29台有类似末行注入:有的是env[PATH]后面接了/var/tmp,有的是env[LD_LIBRARY_PATH]指向一个不存在的路径——但不存在不等于没风险,FPM照样读配置、照样尝试加载、照样报错日志里不打warning。而剩下3台,一台是新装机还没配池,一台是被安全组直接drop了所有env设置(管理员手动删了整段env块),还有一台……等等,这台我记不清了,这个我说不准。当时在腾讯云控制台切实例列表切快了,好像有个灰色小三角没点开。


  办公室空调滴水,每四十七秒“嗒”一声,砸在隔壁工位的金属笔筒里。李姐端着保温杯路过,看我屏幕,说:“上次那个XXCMS插件审计也是,关键payload就藏在config.php最后一行空格后面。”我没接话。她走后我打开XXCMS的vendor目录,搜了下config.php,发现它结尾是?>

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!