O maior portal de MU Online do Brasil — desde 2003
Tutorial Avançado Infra

Auditoria de vulnerabilidades web para o site e painel do seu servidor de MU Online

Faça uma auditoria completa de segurança web no site, painel de controle e loja do seu servidor de MU Online: SQL Injection, XSS, falhas de autenticação, exposição de dados e checklist de correção priorizada.

RO Rodrigo · Atualizado em 10 jan 2021 · ⏱ 17 min de leitura
Resposta rápida

O site e o painel de controle são, na maioria dos servidores privados de MU Online, a superfície de ataque mais exposta e menos protegida — muito mais do que o próprio GameServer, que geralmente já recebeu atenção de segurança do emulador. Um painel vulnerável permite roubo de contas, manipulação de

O site e o painel de controle são, na maioria dos servidores privados de MU Online, a superfície de ataque mais exposta e menos protegida — muito mais do que o próprio GameServer, que geralmente já recebeu atenção de segurança do emulador. Um painel vulnerável permite roubo de contas, manipulação de Zen/Cash, vazamento de dados de jogadores e, em casos graves, acesso ao servidor de banco de dados inteiro. Este tutorial percorre uma auditoria de vulnerabilidades web completa, cobrindo as falhas mais comuns encontradas em sites e painéis desse nicho, com passos práticos de identificação e correção.

Por que o site é o alvo mais comum

Diferente do cliente do jogo, que roda no computador do jogador e exige engenharia reversa para ser atacado, o site fica acessível publicamente 24 horas por dia, geralmente construído sobre PHP com frameworks datados, plugins de terceiros nunca atualizados e, frequentemente, scripts de painel de controle (CMS de MU) copiados de fóruns sem revisão de código. Essa combinação de exposição pública e código pouco auditado faz do site o ponto de entrada preferido de atacantes.

Escopo da auditoria

Antes de começar, defina o que será testado: site institucional, painel de controle de conta (registro, criação de personagem, votação), loja de Cash/VIP com pagamento, área administrativa (GM panel web), e qualquer API exposta. Cada superfície tem riscos diferentes — a loja de pagamento, por exemplo, exige atenção redobrada por lidar com dados financeiros.

SQL Injection: a vulnerabilidade mais comum no nicho

Sites de MU legados frequentemente montam queries por concatenação direta de string vinda do usuário:

// Código vulnerável — NUNCA faça isso
$query = "SELECT * FROM accounts WHERE username = '" . $_POST['user'] . "'";

Um atacante pode enviar ' OR '1'='1 no campo de usuário e contornar a autenticação, ou pior, extrair toda a tabela de contas. A correção é usar prepared statements em todas as consultas que recebem entrada do usuário:

// Código correto
$stmt = $pdo->prepare("SELECT * FROM accounts WHERE username = ?");
$stmt->execute([$_POST['user']]);
$result = $stmt->fetch();

Audite todos os arquivos PHP do site em busca de concatenação direta em queries SQL — ferramentas como grep -r "SELECT.*\$_" . ajudam a localizar candidatos rapidamente para revisão manual.

XSS (Cross-Site Scripting)

Campos como nome de personagem, mensagem de fórum, comentário de notícia ou até nome de guild, quando exibidos sem escape no HTML, permitem injeção de scripts maliciosos que rodam no navegador de outros usuários (roubo de sessão, redirecionamento malicioso). Sempre escape a saída com funções como htmlspecialchars() em PHP antes de imprimir qualquer dado vindo do usuário:

echo htmlspecialchars($personagem['nome'], ENT_QUOTES, 'UTF-8');

Teste inserindo <script>alert(1)</script> em todos os campos de entrada do site e veja se o alerta executa ao visualizar a página — se executar, o campo está vulnerável.

Falhas de autenticação e sessão

Falha comumRiscoCorreção
Senha armazenada em MD5/SHA1 sem saltQuebra rápida por rainbow table em vazamentoUse password_hash() com bcrypt/argon2
Sessão sem expiração ou regeneração de IDSequestro de sessão (session fixation)Regenere o ID de sessão após login e defina expiração
Ausência de limite de tentativas de loginForça bruta viável contra contasImplemente rate limiting e bloqueio temporário após N tentativas
Token de "lembrar senha" previsívelSequestro de conta sem saber a senhaUse tokens aleatórios longos, armazenados com hash, com expiração
Reset de senha sem verificação real de e-mailQualquer um pode resetar a senha de terceirosExija confirmação por link único enviado ao e-mail cadastrado

Exposição de dados sensíveis

Verifique se o site expõe, mesmo que sem querer, informações que não deveriam ser públicas: mensagens de erro do PHP com caminho completo do servidor (display_errors ligado em produção), arquivos de configuração (config.php) acessíveis diretamente pela URL, backups de banco de dados deixados na pasta pública, e logs com dados de conta acessíveis sem autenticação.

; php.ini em produção — nunca deixe assim
display_errors = On

Em produção, sempre defina display_errors = Off e registre erros em log privado, nunca exibindo na tela do visitante.

CSRF (Cross-Site Request Forgery)

Ações sensíveis do painel (trocar senha, resgatar código de recompensa, comprar item na loja) devem exigir um token CSRF único por sessão/formulário, validado no servidor antes de processar a ação. Sem isso, um atacante pode induzir o jogador logado a executar uma ação sem saber, através de um link ou página maliciosa.

Upload de arquivos malicioso

Se o painel permite upload (avatar de fórum, imagem de guild, anexo de suporte), valide rigoramente o tipo real do arquivo (não confie apenas na extensão), limite o tamanho, renomeie o arquivo salvo para um nome gerado pelo servidor (nunca use o nome original) e armazene fora da pasta pública executável, ou pelo menos impeça a execução de scripts na pasta de upload via configuração do servidor web.

Testando com ferramentas automatizadas

Ferramentas gratuitas ajudam a cobrir o básico antes da revisão manual:

  • OWASP ZAP: scanner de vulnerabilidades web gratuito, bom para XSS, headers de segurança ausentes e configurações fracas de TLS.
  • sqlmap: identifica e explora SQL Injection automaticamente — use apenas em ambiente próprio, nunca contra sites de terceiros sem autorização.
  • Mozilla Observatory: analisa headers de segurança (CSP, HSTS, X-Frame-Options) do site publicado.

Headers de segurança HTTP

Configure os headers de segurança no servidor web (Nginx/Apache), reforçando a proteção do navegador mesmo se uma falha passar despercebida no código:

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Content-Security-Policy "default-src 'self'";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";

Esses headers mitigam clickjacking, MIME sniffing malicioso e forçam conexões HTTPS.

Priorizando as correções

Com a lista de vulnerabilidades encontrada, priorize por impacto × facilidade de exploração: SQL Injection e falhas de autenticação vêm primeiro (podem comprometer contas e banco inteiro), seguidos por XSS e CSRF (comprometem sessões individuais), e por último headers ausentes e exposição de informação (aumentam a superfície mas exigem passos adicionais do atacante).

Erros comuns e soluções

SintomaCausa provávelSolução
Login sendo burlado com aspas simples no campo de usuárioQuery montada por concatenação de stringMigre para prepared statements em toda a base de código
Contas sendo sequestradas sem senha vazadaToken de sessão previsível ou sem expiraçãoRegenere sessão no login e defina expiração adequada
Mensagens de erro do PHP visíveis ao públicodisplay_errors ligado em produçãoDesative e registre erros em log privado
Script malicioso executando ao abrir perfil de outro jogadorCampo de nome/bio sem escape de saídaAplique htmlspecialchars() em toda saída de dado de usuário
Ação sensível executada sem o jogador perceberAusência de token CSRF nos formuláriosImplemente token CSRF único por sessão/formulário

Checklist de auditoria de vulnerabilidades web

  • Todas as queries SQL revisadas e migradas para prepared statements.
  • Saída de dados de usuário escapada contra XSS em todo o site.
  • Senhas armazenadas com hash forte (bcrypt/argon2) e salt automático.
  • Sessões com expiração e regeneração de ID após login.
  • Tokens CSRF implementados em formulários de ações sensíveis.
  • display_errors desativado em produção, logs privados configurados.
  • Upload de arquivos validado, renomeado e isolado de execução.
  • Headers de segurança HTTP configurados no servidor web.
  • Scan automatizado (OWASP ZAP) executado e vulnerabilidades tratadas.

Depois de fechar as brechas do site, mantenha a segurança viva no tempo: agende revisões recorrentes e conecte esse processo à disciplina de gestão do servidor descrita no guia de criação de servidor de MU Online, já que segurança web é apenas uma camada de um projeto que precisa de manutenção contínua.

Perguntas frequentes

Meu site é só um painel simples, ainda assim preciso de auditoria?

Sim. Painéis simples de servidores de MU costumam ser os alvos mais fáceis exatamente porque recebem menos atenção de segurança — muitos são scripts PHP antigos, reaproveitados de fóruns, sem atualização há anos. O tamanho do site não reduz o risco; na prática, sites pequenos e antigos tendem a ser mais vulneráveis, não menos.

Ferramentas automatizadas de scan substituem uma auditoria manual?

Não totalmente. Scanners automatizados (como OWASP ZAP ou Nikto) encontram uma boa parte das vulnerabilidades óbvias, mas falhas de lógica de negócio (por exemplo, um endpoint que permite mudar o Zen de outra conta por manipulação de parâmetro) só aparecem em revisão manual guiada por conhecimento do sistema.

Com que frequência devo repetir a auditoria?

O ideal é uma auditoria completa a cada lançamento de funcionalidade nova no site/painel, e uma revisão geral a cada 3-6 meses mesmo sem mudanças, já que novas vulnerabilidades em bibliotecas de terceiros (frameworks, plugins) são descobertas constantemente.

SQL Injection ainda é um risco real em 2026?

Sim, principalmente em sites de MU Online que usam código legado com queries montadas por concatenação de string em vez de prepared statements. É consistentemente uma das vulnerabilidades mais exploradas nesse nicho, porque muitos scripts de painel circulam há anos sem revisão de segurança.

Preciso contratar uma empresa especializada para essa auditoria?

Para um servidor pequeno/médio, uma auditoria interna seguindo uma checklist estruturada (como a deste tutorial) e ferramentas gratuitas já cobre a maior parte do risco. Para servidores grandes, com movimentação financeira relevante (loja com pagamento real), vale investir em um pentest profissional pelo menos uma vez ao ano.

RO
Fundador e editor-chefe

Rodrigo mantém o ViciadosMU desde os primórdios do portal. Especialista em criação e administração de servidores de MU Online, história do jogo e a evolução das seasons — escreveu boa parte do acervo antes de 2024.

Continue lendo

Artigos relacionados