You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/network-services-pentesting/pentesting-web/aem-adobe-experience-cloud.md
+42-28Lines changed: 42 additions & 28 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@
5
5
> Adobe Experience Manager (AEM, part of the Adobe Experience Cloud) is an enterprise CMS that runs on top of Apache Sling/Felix (OSGi) and a Java Content Repository (JCR).
6
6
> From an attacker perspective AEM instances very often expose dangerous development endpoints, weak Dispatcher rules, default credentials and a long tail of CVEs that are patched every quarter.
7
7
8
-
The checklist below focuses on **externally reachable (unauth) attack surface** that keeps showing up in real engagements (2022-2025).
8
+
The checklist below focuses on **externally reachable (unauth) attack surface** that keeps showing up in real engagements (2022-2026).
`/adminui/debug` | **AEM Forms on JEE** Struts dev-mode OGNL evaluator | On misconfigured Forms installs (CVE-2025-54253) this endpoint executes unauthenticated OGNL → RCE.
39
40
40
-
### Dispatcher bypass trick
41
-
Most production sites sit behind the *Dispatcher* (reverse-proxy). Its filter rules can be bypassed by appending an allowed static extension **after a semicolon or encoded newline**:
41
+
### Dispatcher bypass tricks (still working in 2025/2026)
42
+
Most production sites sit behind the *Dispatcher* (reverse-proxy). Filter rules are frequently bypassed by abusing encoded characters or allowed static extensions.
42
43
44
+
*Classic semicolon + allowed extension*
43
45
```
44
46
GET /bin/querybuilder.json;%0aa.css?path=/home&type=rep:User HTTP/1.1
45
47
```
46
-
A single request like above frequently discloses user profile nodes with email addresses. P-T Partners published good guidance on this weakness. 【】
48
+
49
+
*Encoded slash bypass (2025 KB ka-27832)*
50
+
```
51
+
GET /%2fbin%2fquerybuilder.json?path=/etc&1_property=jcr:primaryType HTTP/1.1
52
+
```
53
+
If the Dispatcher allows encoded slashes, this returns JSON even when `/bin` is supposedly denied.
47
54
48
55
---
49
56
50
-
## 3. Common misconfigurations (still alive in 2025)
57
+
## 3. Common misconfigurations (still alive in 2026)
51
58
52
-
1.**Anonymous POST servlet** – `POST /.json` with `:operation=import` lets you plant new JCR nodes. Blocking `*.json` POST in the Dispatcher fixes it. 【】
59
+
1.**Anonymous POST servlet** – `POST /.json` with `:operation=import` lets you plant new JCR nodes. Blocking `*.json` POST in the Dispatcher fixes it.
53
60
2.**World-readable user profiles** – default ACL grants `jcr:read` on `/home/users/**/profile/*` to everyone.
6.**Dispatcher encoded-slash gap** – `/bin/querybuilder.json` and `/etc/truststore.json` reachable with `%2f`/`%3B` even when blocked by path filters.
68
+
7.**AEM Forms Struts devMode left enabled** – `/adminui/debug?expression=` evaluates OGNL without auth (CVE-2025-54253) leading to unauth RCE; paired XXE in Forms submission (CVE-2025-54254) allows file read.
Aug 2025 | **CVE-2025-54253 / 54254** (AEM Forms JEE) | Forms 6.5.23.0 and earlier | DevMode OGNL RCE + XXE file read, unauthenticated.
79
+
Jun 2025 | APSB25-48 | 6.5.23 & earlier | Stored XSS and privilege escalation in Communities components.
80
+
Dec 2024 | APSB24-69 (rev. Mar 2025 adds CVE-2024-53962…74) | 6.5.22 & earlier | DOM/Stored XSS, arbitrary code exec (low-priv).
81
+
Dec 2023 | APSB23-72 | ≤ 6.5.18 | DOM-based XSS via crafted URL.
71
82
72
-
Always check the *APSB* bulletin matching the customer’s service-pack and request the latest **6.5.22** or *Cloud Service 2024.11*.
83
+
Always check the *APSB* bulletin matching the customer’s service-pack and push for the latest **6.5.24 (Nov 26, 2025)** or **Cloud Service 2025.12**. AEM Forms on JEE requires its own add-on hotfix **6.5.0-0108+**.
73
84
74
85
---
75
86
@@ -90,7 +101,20 @@ Now request `/content/evil.jsp` – the JSP runs with the AEM process user.
0 commit comments