一个实践性的、容器化的实验室环境,用于模拟和利用 Elementor Website Builder WordPress 插件中的基于 DOM 的跨站脚本(XSS)漏洞,标识为 CVE-2021-24891。
该实验室演示了 WordPress Elementor 插件(版本低于 3.4.8)中的一个基于 DOM 的跨站脚本(XSS) 漏洞。该漏洞的产生是因为 Elementor 编辑器的客户端代码直接从 URL 的哈希(#...)中读取数据,并将其附加到页面的文档对象模型(DOM)中,而没有进行适当的清理。
攻击者可以构造一个恶意链接,在哈希片段中包含 JavaScript 载荷。当登录的管理员(如网站编辑)点击此链接时,恶意脚本会在其浏览器会话的上下文中执行,从而可能允许攻击者代表他们执行操作、窃取会话 Cookie 或篡改网站。
# 开头的部分,由客户端处理,不会发送到服务器。这是恶意载荷的入口点。该仓库包含一个易受攻击的 WordPress 实例,以及存在漏洞的 Elementor 插件,供您利用。该实验室可以立即在云中或在本地机器上运行。
这是开始使用的最简单方法。它提供一个预配置的、基于云的浏览器环境。
等待设置: GitHub 将准备您的环境。完成后,将出现一个终端。
启动易受攻击的服务: 在 VS Code 终端中,运行以下单个命令:
docker compose up
这将启动易受攻击的 WordPress 站点及其数据库。您会看到一个“Ports”选项卡出现。点击端口 8080 的链接,在新浏览器标签页中打开 WordPress。
在您自己的机器上使用 Docker 运行整个实验室。
前提条件:
说明:
克隆仓库:
git clone https://github.com/hackmelocal/CVE-2021-24891-Simulation.git
cd CVE-2021-24891-Simulation
启动易受攻击的服务: 在终端中运行命令:
docker compose up
访问 WordPress: 打开您的 Web 浏览器并导航至 http://localhost:8080。
Elementor 编辑器中的 JavaScript 代码从 window.location.hash 中读取值,并不安全地将其写入页面的 DOM。由于输入(<script>alert(...)</script>)未被清理,浏览器将其解释为有效的 script 标签并执行。这是基于 DOM 的 XSS 的一个经典示例。
本实验室仅供教育目的。创建者对信息或工具的任何滥用不承担责任。在执行任何安全测试之前,请确保您已获得适当授权。
本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。