CVE-2023-53894phpfm 1.7.9版本存在严重的认证绕过漏洞,攻击者可以通过利用密码哈希验证中的松散类型比较(loose type comparison)来绕过身份认证。该漏洞源于PHP在比较字符串时采用弱类型比较机制,当密码哈希值以特定格式(如0e开头)存在时,PHP会将其解析为科学计数法数值0,导致任意字符串只要哈希值以0e开头就能通过验证。攻击者无需任何凭证即可登录系统管理后台,成功登录后可上传恶意PHP文件到服务器,最终实现远程代码执行,完全控制目标服务器。由于该漏洞攻击复杂度低且无需用户交互,CVSS评分高达9.8,属于严重安全威胁。建议相关用户立即升级到安全版本或采取临时缓解措施。
该漏洞是典型的PHP类型混淆(Type Juggling)安全问题。在phpfm 1.7.9的密码验证逻辑中,使用了PHP的弱类型比较运算符(如==或!=)而非严格比较运算符(===或!==)。当用户输入的密码经过MD5或SHA1等哈希算法处理后,如果得到的哈希值以0e开头且后续字符均为数字,PHP会将其解释为科学计数法表示的数值0。例如,密码的哈希值为0e123456789,由于PHP的松散比较特性,0e123456789 == 0会返回true。攻击者可以利用这一特性,通过预先计算符合条件的密码(如240610708的MD5值为0e4340419627524296),使用这些特殊构造的密码即可绕过正常的密码验证流程。登录成功后,攻击者可利用phpfm的文件上传功能上传包含webshell的PHP文件,通过访问该文件实现远程代码执行。