在对 ecodotempo.com.br 网站进行分析时,发现了一个存储型跨站脚本(XSS)漏洞。此漏洞允许攻击者将恶意脚本注入到随后会呈现给其他用户的字段中,且未经过适当的清理,具体出现在未登录(已注销)区域的主页面上。
ecodotempo.com.br/colecoes/cadastrar_realizar.php
name="nome" 和 name="descricao"
在对 ecodotempo.com.br 网站进行分析时,发现了一个存储型跨站脚本(XSS)漏洞。此漏洞允许攻击者将恶意脚本注入到随后会呈现给其他用户的字段中,且未经过适当的清理,具体出现在未登录(已注销)区域的主页面上。
注入的脚本被持久化存储在应用的后端,并在任何访问受影响页面的访问者浏览器中执行,不存在任何转义机制或通过内容安全策略(CSP)进行的保护。
在对 ecodotempo.com.br 的测试过程中,存储型 XSS 漏洞具体在物品集合创建流程中被发现。可以在集合的名称或描述字段中注入恶意载荷,且没有任何有效的缓解机制——例如输入验证、代码级过滤器、Web 应用防火墙(WAF)或安全 HTTP 头。
在创建包含恶意脚本的集合后,注销登录,然后再次访问主登录页面时,载荷会在浏览器中自动执行,从而显示一个弹窗。在测试中,这被用来演示 Cookie 窃取。该行为证实了缺乏适当的清理,以及确实存在在受害者浏览器上下文中执行任意脚本的可能性。请参阅下方证据部分中的示例。
注意:除了 Cookie 窃取之外,此漏洞还可能被用于各种恶意目的,例如将用户重定向到有害网站、外泄敏感数据、更改页面内容以进行钓鱼攻击,或代表用户执行操作,正如之前影响部分所述。
在 ecodotempo.com.br 未登录区域的主页面上存在存储型 XSS 漏洞,构成了重大的安全风险。由于注入的脚本被永久存储并服务于每个访问受影响页面的用户,它为一系列客户端攻击打开了大门。攻击者可能利用此漏洞在不知情访问者的浏览器中执行任意 JavaScript,从而可能窃取会话 Cookie、将用户重定向到恶意网站、在未经用户同意的情况下代表用户执行操作,或操纵页面内容以进行网络钓鱼尝试。由于该漏洞暴露在可公开访问的区域,因此大规模利用的可能性增加,尤其是通过自动化机器人或定向攻击活动,这可能会削弱用户对平台的信任以及平台的完整性。
为了修复在 ecodotempo.com.br 未登录区域主页上发现的存储型 XSS 漏洞,应采取以下措施:
所有用户输入在存储或呈现之前,必须在客户端和服务器端进行适当的清理和验证。具体而言,任何将在 HTML 上下文中显示的输入,都应编码特殊字符如 <、>、"、' 和 &,以防止脚本执行。此外,应用程序应根据数据注入的上下文(HTML、JavaScript、属性、URL 等)实施输出编码。
强烈建议强制实施内容安全策略(CSP),以限制未授权脚本的执行,并禁用内联脚本以及从不可信来源加载外部脚本。应将定期代码审查和自动化安全测试(例如使用 OWASP ZAP 或 Burp Suite 等工具)纳入开发生命周期,以检测并防止未来出现类似缺陷。
最后,应识别并移除系统中任何已存储的恶意载荷,以消除现有风险。