GestioIP 3.5.7 文件上传漏洞分析(CVE-2024-48760)
字数 1047 2025-08-22 12:23:30
GestioIP 3.5.7 文件上传漏洞分析(CVE-2024-48760)
漏洞概述
GestioIP 3.5.7版本中存在一个文件上传漏洞(CVE-2024-48760),攻击者可以利用该漏洞上传恶意文件到服务器,可能导致远程代码执行(RCE)。
漏洞位置
漏洞存在于upload.cgi文件中,该文件使用Perl语言编写。
漏洞分析
关键参数
-
file_name参数:表示要上传的文件名
- 通过
$q->param("file_name") || ""获取 - 如果未提供该参数,则
$filename为空
- 通过
-
leases_file参数:表示文件内容
- 通过
$q->upload('leases_file')获取文件内容
- 通过
文件上传流程
- 文件上传句柄通过
$lightweight_fh->handle获取 $lightweight_fh通过$q->upload('leases_file')获取$filename是要打开的文件名,如果文件不存在则会创建
漏洞触发条件
要成功利用该漏洞,需要满足以下三个条件:
- 文件名限制:文件名只能包含字母和数字
- 文件大小限制:文件大小不能超过10MB
- 文件参数存在:必须提供文件内容参数
漏洞利用
构造Payload
- 确保文件名只包含字母数字字符
- 确保文件大小不超过10MB
- 提供有效的
leases_file参数包含恶意内容
攻击步骤
- 准备一个合法的文件名(仅包含字母数字)
- 准备一个不超过10MB的恶意文件(如webshell)
- 构造POST请求,包含:
file_name参数:指定上传后的文件名leases_file参数:包含恶意文件内容
漏洞影响
成功利用该漏洞可能导致:
- 上传webshell到服务器
- 获取服务器控制权限
- 进一步渗透内网
防御建议
- 升级到最新版本的GestioIP
- 实施严格的文件上传验证:
- 检查文件类型和内容
- 限制允许的文件扩展名
- 对上传文件进行重命名
- 设置文件上传目录不可执行
- 实施Web应用防火墙(WAF)规则
技术细节
漏洞利用的关键在于绕过文件名限制,同时确保文件内容能够被服务器正确接收和处理。由于系统仅检查文件名是否只包含字母数字,而不验证文件内容,攻击者可以上传包含恶意代码的文件。
总结
CVE-2024-48760是一个典型的文件上传漏洞,由于缺乏足够的文件验证而导致。开发人员应始终对所有用户上传的文件进行严格验证,包括但不限于文件类型、内容、大小和名称的检查。