这一安全漏洞的实质,隐藏在一个看似微不足道的参数过滤缺陷之中。受影响版本明确为phpcms v9 blind,官方站点为 https://www.phpcms.cn,漏洞类型属于典型的SQL注入。简而言之,攻击者可利用精心构造的请求,绕过参数校验机制,向数据库直接发送恶意指令,从而窃取或篡改数据。
那么,这个漏洞的具体表现形式是怎样的?我们先来看一个暴露面:利用Google搜索语法 inurl:"index.php?m=content+c=rss+catid=10" 可以快速锁定潜在的目标站点。漏洞的关键在于 catid 参数,该参数未经严格过滤,存在安全缺陷。
直接来看POC(概念验证)代码。原始的利用方式如下:
index.php?m=content&c=rss&catid=[valid catid]
在实际操作中,我们可以通过True/False的返回差异来判定是否存在SQL注入漏洞。举例说明:
https://host/index.php?m=content&c=rss&catid=10 —— 若页面正常返回,表示参数有效,相当于True。
https://host/index.php?m=content&c=rss&catid=-10 —— 若页面返回异常,则说明注入条件成立,相当于False。
更直接的方式是,输入一个不存在的catid值(例如5),可能会直接看到MySQL的错误信息,甚至连数据库表结构都会暴露出来。例如:
https://host/index.php?m=content&c=rss&catid=5 —— 显示 MySQL Error (table)。
这是一个典型的盲注(Blind SQL Injection)场景:攻击者能够逐字符推断数据库中的敏感信息,而系统不会明确提示“注入成功”,只能通过返回页面的细微差异来逐步获取数据。对于运维人员而言,确认服务器是否受此漏洞影响,最直接的方法就是检查 catid 参数的过滤逻辑是否完善,以及数据库是否开启了错误报告功能。
