LiveZilla实时聊天应用7大漏洞解析
字数 2565 2025-08-27 12:33:43

LiveZilla实时聊天系统漏洞分析与防护指南

1. 漏洞概述

LiveZilla是一款广泛使用的实时聊天系统,在2019年被Fortinet的FortiGuard实验室发现存在7个关键漏洞,影响8.0.1.0及以下版本。这些漏洞包括:

  1. SQL注入漏洞:通过server.php的p_ext_rse参数
  2. 跨站脚本(XSS)漏洞:通过mobile/index.php的Accept-Language HTTP头
  3. 拒绝服务(DoS)漏洞:通过knowledgebase.php的depth参数
  4. XSS漏洞:在chat.php的创建工单功能中
  5. SQL注入漏洞:通过functions.internal.build.inc.php的p_dt_s_d参数
  6. XSS漏洞:在ticket.php的主题字段中
  7. CSV注入漏洞:在导出功能中

2. 漏洞详细分析

2.1 SQL注入漏洞 (server.php)

漏洞位置\livezilla\server.php\livezilla\intern.phpOperatorRequest类的Listen()Build()方法

漏洞原理

  1. 代码路径:server.phpintern.php_lib\objects.internal.inc.php
  2. Build()方法中调用buildResources()执行SQL查询
  3. 虽然使用了DBManager::RealEscape过滤函数,但缺少对引号的清理
  4. 攻击者可构造无引号的SQL值进行注入

利用方式

POST /livezilla/server.php HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded

p_ext_rse=(select*from(select(if((substr(123,1,1) like 1),2,sleep(5))))a)

修复方案

  • 补丁在buildResources()方法中增加了对引号的正确处理
  • 更新到8.0.1.1或更高版本

2.2 XSS漏洞 (mobile/index.php)

漏洞位置\livezilla\mobile\index.php第84行

漏洞原理

  1. 直接从$_SERVER['HTTP_ACCEPT_LANGUAGE']获取$language
  2. 未对$language进行任何过滤或编码直接输出
  3. 攻击者可通过修改HTTP头中的Accept-Language字段注入恶意脚本

利用方式

GET /livezilla/mobile/index.php HTTP/1.1
Host: target.com
Accept-Language: "><script>alert(1)</script>

修复方案

  • 补丁中对$language值进行了HTML实体编码
  • 更新到8.0.1.1或更高版本

2.3 拒绝服务漏洞 (knowledgebase.php)

漏洞位置\livezilla\knowledgebase.php第39-51行

漏洞原理

  1. 通过GET参数depth接收用户输入
  2. 直接使用该值进行循环操作(如depth=2200000
  3. 在循环中不断连接字符串"../"$path变量
  4. 导致内存耗尽,服务不可用

利用方式

GET /livezilla/knowledgebase.php?depth=2200000 HTTP/1.1
Host: target.com

修复方案

  • 补丁中对depth参数设置了最大值限制
  • 更新到8.0.1.1或更高版本

2.4 XSS漏洞 (chat.php创建工单)

漏洞位置:聊天窗口创建工单功能

漏洞原理

  1. 攻击者在实时聊天中输入XSS payload
  2. 管理员在管理面板中创建工单时,聊天内容未经清理直接呈现
  3. 导致XSS在管理员浏览器中执行

特殊说明

  • 初始补丁(8.0.1.1)不完整,仍可绕过
  • 完整修复在8.0.1.2版本中提供

修复方案

  • 对聊天内容进行严格的HTML编码
  • 更新到8.0.1.2或更高版本

2.5 SQL注入漏洞 (functions.internal.build.inc.php)

漏洞位置\livezilla_lib\functions.internal.build.inc.php第596-605行

漏洞原理

  1. 通过POST参数p_dt_s_d接收用户输入
  2. 直接拼接到SQL查询中,未进行任何过滤
  3. 导致经典SQL注入

利用方式

POST /livezilla/[相关路径] HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded

p_dt_s_d=1' OR '1'='1

修复方案

  • 使用参数化查询或严格过滤输入
  • 更新到8.0.1.1或更高版本

2.6 XSS漏洞 (ticket.php)

漏洞位置\livezilla\ticket.php第109行

漏洞原理

  1. $subject变量内容直接输出到页面
  2. 未对用户提供的内容进行HTML编码
  3. 攻击者可构造恶意主题实现XSS

修复方案

  • $subject进行HTML实体编码
  • 更新到8.0.1.1或更高版本

2.7 CSV注入漏洞

漏洞位置\livezilla_lib\functions.internal.man.inc.php第736-744行

漏洞原理

  1. 导出数据为CSV格式时未对内容进行清理
  2. 攻击者可注入公式(如=cmd|' /C calc'!A0
  3. 当管理员打开CSV文件时可能执行恶意命令

修复方案

  • 对导出内容进行严格过滤
  • 在CSV值前添加单引号(')或转义等号(=)
  • 更新到8.0.1.1或更高版本

3. 漏洞时间线

  • 2019年6月22日:报告前两个漏洞
  • 2019年6月24日:报告第三个漏洞
  • 2019年6月25日:报告剩余四个漏洞
  • 2019年6月26日:LiveZilla确认漏洞并发布补丁
  • 2019年6月27日:确认除FG-VD-19-085外均已修复
  • 2019年7月1日:确认FG-VD-19-085修复不完整
  • 2019年7月23日:发布8.0.1.2完整修复FG-VD-19-085

4. 防护建议

  1. 立即更新:将所有LiveZilla实例升级到8.0.1.2或更高版本
  2. 输入验证
    • 对所有用户输入实施严格的白名单验证
    • 对特殊字符进行转义或过滤
  3. 输出编码
    • 对所有动态输出内容进行上下文相关的编码
    • HTML上下文使用HTML实体编码
    • JavaScript上下文使用Unicode转义
  4. 安全配置
    • 禁用不必要的功能
    • 实施最小权限原则
  5. 持续监控
    • 监控官方安全公告
    • 定期进行安全审计和渗透测试

5. 总结

LiveZilla的这些漏洞主要源于缺乏输入验证和输出编码。其中SQL注入和XSS漏洞尤为危险,可能导致数据泄露和权限提升。所有用户应立即应用补丁,并审查自定义代码中是否存在类似问题。安全开发应遵循"不信任任何输入"的原则,实施多层防御策略。

LiveZilla实时聊天系统漏洞分析与防护指南 1. 漏洞概述 LiveZilla是一款广泛使用的实时聊天系统,在2019年被Fortinet的FortiGuard实验室发现存在7个关键漏洞,影响8.0.1.0及以下版本。这些漏洞包括: SQL注入漏洞 :通过server.php的p_ ext_ rse参数 跨站脚本(XSS)漏洞 :通过mobile/index.php的Accept-Language HTTP头 拒绝服务(DoS)漏洞 :通过knowledgebase.php的depth参数 XSS漏洞 :在chat.php的创建工单功能中 SQL注入漏洞 :通过functions.internal.build.inc.php的p_ dt_ s_ d参数 XSS漏洞 :在ticket.php的主题字段中 CSV注入漏洞 :在导出功能中 2. 漏洞详细分析 2.1 SQL注入漏洞 (server.php) 漏洞位置 : \livezilla\server.php → \livezilla\intern.php → OperatorRequest 类的 Listen() 和 Build() 方法 漏洞原理 : 代码路径: server.php → intern.php → _lib\objects.internal.inc.php 在 Build() 方法中调用 buildResources() 执行SQL查询 虽然使用了 DBManager::RealEscape 过滤函数,但缺少对引号的清理 攻击者可构造无引号的SQL值进行注入 利用方式 : 修复方案 : 补丁在 buildResources() 方法中增加了对引号的正确处理 更新到8.0.1.1或更高版本 2.2 XSS漏洞 (mobile/index.php) 漏洞位置 : \livezilla\mobile\index.php 第84行 漏洞原理 : 直接从 $_SERVER['HTTP_ACCEPT_LANGUAGE'] 获取 $language 值 未对 $language 进行任何过滤或编码直接输出 攻击者可通过修改HTTP头中的Accept-Language字段注入恶意脚本 利用方式 : 修复方案 : 补丁中对 $language 值进行了HTML实体编码 更新到8.0.1.1或更高版本 2.3 拒绝服务漏洞 (knowledgebase.php) 漏洞位置 : \livezilla\knowledgebase.php 第39-51行 漏洞原理 : 通过GET参数 depth 接收用户输入 直接使用该值进行循环操作(如 depth=2200000 ) 在循环中不断连接字符串 "../" 到 $path 变量 导致内存耗尽,服务不可用 利用方式 : 修复方案 : 补丁中对 depth 参数设置了最大值限制 更新到8.0.1.1或更高版本 2.4 XSS漏洞 (chat.php创建工单) 漏洞位置 :聊天窗口创建工单功能 漏洞原理 : 攻击者在实时聊天中输入XSS payload 管理员在管理面板中创建工单时,聊天内容未经清理直接呈现 导致XSS在管理员浏览器中执行 特殊说明 : 初始补丁(8.0.1.1)不完整,仍可绕过 完整修复在8.0.1.2版本中提供 修复方案 : 对聊天内容进行严格的HTML编码 更新到8.0.1.2或更高版本 2.5 SQL注入漏洞 (functions.internal.build.inc.php) 漏洞位置 : \livezilla_lib\functions.internal.build.inc.php 第596-605行 漏洞原理 : 通过POST参数 p_dt_s_d 接收用户输入 直接拼接到SQL查询中,未进行任何过滤 导致经典SQL注入 利用方式 : 修复方案 : 使用参数化查询或严格过滤输入 更新到8.0.1.1或更高版本 2.6 XSS漏洞 (ticket.php) 漏洞位置 : \livezilla\ticket.php 第109行 漏洞原理 : $subject 变量内容直接输出到页面 未对用户提供的内容进行HTML编码 攻击者可构造恶意主题实现XSS 修复方案 : 对 $subject 进行HTML实体编码 更新到8.0.1.1或更高版本 2.7 CSV注入漏洞 漏洞位置 : \livezilla_lib\functions.internal.man.inc.php 第736-744行 漏洞原理 : 导出数据为CSV格式时未对内容进行清理 攻击者可注入公式(如 =cmd|' /C calc'!A0 ) 当管理员打开CSV文件时可能执行恶意命令 修复方案 : 对导出内容进行严格过滤 在CSV值前添加单引号(')或转义等号(=) 更新到8.0.1.1或更高版本 3. 漏洞时间线 2019年6月22日:报告前两个漏洞 2019年6月24日:报告第三个漏洞 2019年6月25日:报告剩余四个漏洞 2019年6月26日:LiveZilla确认漏洞并发布补丁 2019年6月27日:确认除FG-VD-19-085外均已修复 2019年7月1日:确认FG-VD-19-085修复不完整 2019年7月23日:发布8.0.1.2完整修复FG-VD-19-085 4. 防护建议 立即更新 :将所有LiveZilla实例升级到8.0.1.2或更高版本 输入验证 : 对所有用户输入实施严格的白名单验证 对特殊字符进行转义或过滤 输出编码 : 对所有动态输出内容进行上下文相关的编码 HTML上下文使用HTML实体编码 JavaScript上下文使用Unicode转义 安全配置 : 禁用不必要的功能 实施最小权限原则 持续监控 : 监控官方安全公告 定期进行安全审计和渗透测试 5. 总结 LiveZilla的这些漏洞主要源于 缺乏输入验证和输出编码 。其中SQL注入和XSS漏洞尤为危险,可能导致数据泄露和权限提升。所有用户应立即应用补丁,并审查自定义代码中是否存在类似问题。安全开发应遵循"不信任任何输入"的原则,实施多层防御策略。