AJP Proxy - CVE-2020-1938 - POC
Na documentação oficial, o AJP (Apache JServ Protocol) ou JK é definido como um protocolo wire. É uma versão otimizada do HTTP que permite um servidor web (Ex.: Apache, NGinx) se comunicar com o Tomcat. A documentação oficial do AJP pode ser acessada no link AQUI
A ideia é que o conteúdo estático seja disposnibilizado pelo servidor web e os outros conteúdos sejam disponibilizados pelo servidor Tomcat através de requisições para o servidor configurado como proxy upstream.
Durante um pentest ou ataque, ao encontrar a porta 8009 do AJP, é possível configurar um servidor web com o módulo AJP e na configuração adicionar o servidor-alvo como o proxy upstream. No exemplo abaixo, o servidor web "atacante" é o NGinx.
CVE-2020-1938 - Ghostcat - Tomcat AJP File Read/Inclusion
O Tomcat trata as conexões AJP como confiáveis. Nas versões do Apache Tomcat 9.0.0.M1 até 9.0.0.30, 8.5.0 até 8.5.50 e 7.0.0 até 7.0.99, o AJP é habilitado por padrão. A recomendação é que o AJP seja desabilitado caso não seja necessário.
A vulnerabilidade reportada informa que um atacante remoto não autenticado pode ler arquivos da aplicação web. Nas aplicações en que o upload de arquivos é permitido, um atacante pode fazer o upload de arquivos do tipo JSP (JavaServer Pages) e executar código remotamente (Remote Code Execution - RCE).
POC - Prova de Conceito
Para executar a exploração do AJP no servidor-alvo, usei uma instancia do NGinx onde configurei no /etc/nginx/conf/nginx.conf o servidor-alvo como proxy upstream. Veja abaixo.
No ambiente de produção, o servidor-alvo deve ser configurado usando a porta do AJP 8009. No exemplo, a porta usada é outra pois trata-se de um ambiente de teste. Quando o servidor-alvo receber a requisição vinda do NGinx a porta 30682 será redirecionada para 8009.
Dessa forma, é possível confirmar a vulnerabilidade pois a partir do servidor web "atacante" foi possível acessar a página default do Tomcat no servidor-alvo.
Em um ambiente real, o Apache Tomcat pode não estar acessível diretamente, mas se o AJP estiver habilitado, através desse módulo, é possível explorar a vulnerabilidade.
Exploit-DB Publicação
O exploit 48143 foi publicado em 20/02/2020 com o script em python para explorar a vulnerabilidade. O autor do exploit é ydhcui
Referências:
[+] CVE-2020-1938
https://nvd.nist.gov/vuln/detail/CVE-2020-1938
[+] Exploit-DB Publicação
https://www.exploit-db.com/exploits/48143
Comentários
Postar um comentário