Todos os conceitos
Web shell
Um arquivo que o atacante planta no site e que executa comandos passados pela URL.
Uma web shell é um arquivo que o atacante consegue colocar dentro do site e que o servidor executa. A partir dele, o atacante roda comandos no servidor pelo próprio navegador, como se tivesse um terminal. É um jeito comum de transformar uma falha de envio de arquivos num controle total da máquina.
O caminho costuma ser:
- O site aceita envio de arquivos (foto de produto, anexo) e não confere direito o que recebe.
- O atacante envia um arquivo executável (por exemplo um
.php) disfarçado, muitas vezes com nome de imagem, para a pasta de uploads. - Depois, ele abre esse arquivo passando o comando na URL, algo como
/uploads/foto.php?cmd=id, e o servidor devolve a saída do comando.
Como achar no log de acesso:
- A pasta de uploads deveria servir só conteúdo estático (imagens). Procure ali um arquivo que não seja imagem, em especial um
.php. - Esse arquivo é pedido várias vezes, com um parâmetro que parece comando depois do
?(?cmd=...), e cada pedido responde200. Pode haverPOSTpara ele também. - As imagens de verdade são pedidas uma vez, com resposta do tamanho de uma foto, e sem parâmetros de comando.
Exemplo de linha suspeita:
198.51.100.23 - - [...] "GET /uploads/img_8812.php?cmd=cat%20/etc/passwd HTTP/1.1" 200 2310 ...
Isso importa porque a web shell dá ao atacante um pé dentro do servidor a partir de uma falha pequena. A defesa é dupla: impedir o envio de arquivos executáveis (conferir tipo e extensão) e configurar o servidor para nunca executar nada que esteja na pasta de uploads.