加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.0631zz.cn/)- 科技、云服务器、分布式云、容器、中间件!
当前位置: 首页 > 服务器 > 安全 > 正文

干了15年数据录入,我揪出PHP配置末行90%高危漏洞

发布时间:2026-11-03 14:21:32 所属栏目:安全 来源:DaWei
导读:  V2EX上刚刷到那个「PHP配置末行高危漏洞」的帖,我叼着半截冷掉的韭菜鸡蛋饼就点进去了——结果发现是去年三月的事儿,我还在给XX医疗后台补那批三年前漏录的处方数据。当时机房空调坏了一台,嗡嗡声像老式传真机卡纸

  V2EX上刚刷到那个「PHP配置末行高危漏洞」的帖,我叼着半截冷掉的韭菜鸡蛋饼就点进去了——结果发现是去年三月的事儿,我还在给XX医疗后台补那批三年前漏录的处方数据。当时机房空调坏了一台,嗡嗡声像老式传真机卡纸时的喘气,我左手边第三块瓷砖缝里还塞着半截橡皮擦,是我上周抠下来没扔的。


文章配图,仅供参考

  不是我说,现在人一写“高危漏洞”,动不动就是RCE、反序列化、SSRF,可你翻他们ini文件最后一行试试?九成五以上都飘着个空行。我敢打包票:PHP解析器真没那么蠢,但php.ini读到EOF前的换行符处理,和fread()底层缓冲区的对齐方式,它真会在某些OpenSSL版本+特定内核页大小组合下,把最后一行那个\
当成本行内容吞进去。我们当年在东莞那个小机房——王工穿双拖鞋踩在防静电地板上走来走去,他第三趟经过我工位时手机响了,接起来就吼:“啥?redis没配timeout?那不是活该连不上!”——结果那天下午三点十七分,所有POST过来的JSON body里,键名后头全多了一个看不见的\
(后来查log才发现是Win主机上传的ini混了CRLF)。


  我原以为就是编辑器没关自动换行,结果抓包看curl响应头,Content-Length比预期多了一,再切到测试环境用strace跟fopen,发现它确实在stat完之后又多读了1字节……这个我说不准是zend_parse_ini_file()自己写的逻辑,还是glibc的fseeko搞的鬼。反正我蹲在终端前敲了十八秒watch -n0.1 'tail -c1 /etc/php/7.4/cli/php.ini | od -c',最后截图发给运维李姐的时候,她正用红笔在A4纸上画圈圈,圈的是我昨天交的三张药品效期录入表里,其中一张的“批准文号”栏手写了两遍,第二遍用涂改液盖住了——她没说啥,就指着那个涂改液块问我:“这儿是不是少了个G?”


  优胜劣汰?呵。去年三月我们组裁掉俩人,一个天天抱怨WPS表格粘贴列宽失灵,一个坚持认为Excel公式里的$符号必须手打三遍才保险。剩下的人呢?剩下的人连Ctrl+Shift+V都不点,直接右键选“值粘贴”,就为省掉那个“是否保留源格式”的弹窗耗时。你说这叫技术淘汰?不,这叫肌肉记忆淘汰。就像我现在录医保结算数据,看见一行末尾有空格,手指头自己就先按Delete,比脑子反应快半拍。前天下午四点零三分,新来的实习生小陈举手问:“老师,config.php最后一行要不要留空行?”我没抬头,就回了句:“留,但别留给你自己。”


  哦对,那天窗外在下雨,不是毛毛雨,是南方那种闷得人耳道发痒的绵密雨,玻璃上水痕歪歪扭扭,像被谁用指甲划过。我抬头瞟了眼,顺手把桌上那盒泡了四十五分钟的酸辣粉往右推了七厘米——怕汤汁晃出来浸湿旁边那叠还没拆封的纸质验收单。单子封皮印着“深信服零信任网关对接项目(2023Q2)”,右下角盖着鲜红的章,日期是去年五月,而我们实际录入启动是八月。这事跟我揪出那个空行漏洞没半毛钱关系,但我记得特别清,因为那天我穿的那双黑布鞋,左脚后跟磨开了线,每走一步,针脚就硌一下踝骨。


  说到这个……上个月底我帮财务部导历史发票数据,他们系统里字段叫“销项税额(元)”,但数据库里对应列名是`tax_amount_yuan`,中间有下划线;而采购那边传来的EXCEL模板,同一列标的是“税额_元”。我就照着填,结果ERP导入校验失败三次——不是类型错,是校验规则把下划线当非法字符拦了。后来才晓得,人家校验函数是substr($col, -3) === '元)',硬判括号加顿号加元字。我就坐在那儿,盯着屏幕上那串红色报错,忽然笑出声了。旁边吃瓜子的行政小妹转过头问:“咋啦?”我摇摇头,把瓜子壳吐进手里捏着的纸团里,没说话。


  所以别跟我扯什么“安全左移”“DevOps协同”。干了十五年,我见过最吓人的东西,不是SQL注入payload,是甲方签字的纸质需求说明书第12页倒数第二行,写着“接口返回字段统一小驼峰”,而他们开发写的demo里返回的是snake_case——还特地在字段说明里标注了“此字段为兼容旧系统保留”,后面跟着个emoji笑脸。我录完三万条数据,比他们测出这个问题早八小时十七分钟。怎么发现的?就靠看日志里那一长串key里,唯独有个带下划线的,长得太突兀。就像你干录入的,眼睛天生会过滤重复,专盯异类。


  现在我桌面便签还贴着一条:“check ini EOF before restart”。底下用蓝笔画了个箭头,指向另一行小字:“王工的拖鞋今天换左脚那只了”。我不确定这两件事有没有因果,但我知道——下次再看到有人写‘PHP配置最后一行危险’,我不会再点开。我直接打开终端,cd /etc/php//cli/,然后cat php.ini | tail -n2。要是第二行是空,我就按下↑键调出上一条history,那条命令我打了三百七十二次,开头都是sudo vi。至于到底要不要删,看心情。反正今晚我得先把那盒酸辣粉吃完,汤得喝干净,不然明天早上扫地大妈又要念叨“地上油渍洗不净”。

(编辑:站长网)

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