CVE-2025-64714PrivateBin是一款开源的在线pastebin服务,其核心设计理念是服务器对用户粘贴的数据具有零知识(zero-knowledge),即服务器端无法解密或访问用户存储的内容。该服务广泛应用于代码片段分享、敏感信息传递等场景。从版本1.7.7开始至2.0.3之前的PrivateBin版本中,存在一处严重的本地文件包含(Local File Inclusion)漏洞。漏洞源于模板切换功能中对用户可控输入的不当信任。当管理员在配置文件中启用templateselection选项后,系统会直接信任客户端传递的template cookie参数,并将其作为文件路径进行动态包含。由于缺乏有效的路径遍历防护和输入验证,攻击者可以通过构造恶意的cookie值,突破预期目录限制,读取服务器上的任意PHP文件内容,包括配置文件、源代码或其他敏感数据。在特定条件下,攻击者甚至可以利用此漏洞实现远程代码执行(RCE)。
漏洞根源在于PrivateBin的模板选择机制存在缺陷。在index.php或类似的入口文件中,当检测到template cookie存在时,代码会直接获取其值并传递给include语句进行文件包含。关键问题在于:1)未对cookie值进行严格的路径规范化处理;2)缺少黑名单或白名单验证机制;3)直接使用用户输入拼接文件路径。攻击者可以通过设置cookie: template=/etc/passwd 或 template=../../../etc/passwd 来尝试读取系统敏感文件。由于PrivateBin项目自身的PHP文件在数据目录中使用了防止直接执行的保护代码,因此默认情况下无法通过此漏洞直接执行任意代码。但如果攻击者能够通过其他方式(如文件上传)将恶意PHP文件写入服务器可访问的目录,或者服务器存在其他配置文件或脚本未做权限控制,则可能触发远程代码执行。攻击者通常会尝试读取配置文件(如cfg/conf.php)以获取数据库凭证或其他敏感信息。