LiveZilla实时聊天应用7大漏洞解析
字数 2565 2025-08-27 12:33:43
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值进行注入
利用方式:
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行
漏洞原理:
- 直接从
$_SERVER['HTTP_ACCEPT_LANGUAGE']获取$language值 - 未对
$language进行任何过滤或编码直接输出 - 攻击者可通过修改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行
漏洞原理:
- 通过GET参数
depth接收用户输入 - 直接使用该值进行循环操作(如
depth=2200000) - 在循环中不断连接字符串
"../"到$path变量 - 导致内存耗尽,服务不可用
利用方式:
GET /livezilla/knowledgebase.php?depth=2200000 HTTP/1.1
Host: target.com
修复方案:
- 补丁中对
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注入
利用方式:
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行
漏洞原理:
$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漏洞尤为危险,可能导致数据泄露和权限提升。所有用户应立即应用补丁,并审查自定义代码中是否存在类似问题。安全开发应遵循"不信任任何输入"的原则,实施多层防御策略。