Este projeto tem por objetivo o desenvolvimento de uma aplicação web intencionalmente vulnerável.
- Aviso Legal;
- Primeiros passos
- Sobre a Aplicação
- Tecnologias Utilizadas;
- Regras de Diretórios;
- Diretórios;
- Autores.
As vulnerabilidades e não conformidades aqui presentes foram propositalmente colocadas para fins educacionais apenas. Em hipótese alguma incentivamos o uso de tais más práticas.
Antes de por a mão na massa, devemos ficar atentos a algumas questões para que a aplicação funcione corretamente. Serão descritos a seguir os pré-requisitos para a base do seu funcionamento e, não menos importante, também algumas instruções sobre arquivos e configurações.
- Certifique-se de ter ambos servidores Apache e MySQL instalados e configurados. Confira Tecnologias Utilizadas para mais detalhes.
- Instale a extensão MySQLi para o PHP;
- O sql script para instanciar o schema da aplicação no banco de dados pode ser encontrado no diretório
db
com o nomebanco.sql
. - Todos os arquivos que devem ser utilizados na aplicação se encontram no diretório
src
.- O arquivo de configuração para a conexão com o banco, além de demais variáveis globais necessárias à aplicação, se encontram no diretório
src/config/geral.php
. Crie um arquivo chamadoenv.php
no mesmo diretório para instanciar as variáveis de ambiente, seguindo o modelo a seguir:
<?php // Configuração do banco $_ENV['DB_HOST'] = '127.0.0.1'; $_ENV['DB_USER'] = 'user'; $_ENV['DB_PASS'] = 'password'; $_ENV['DB_NAME'] = 'Forum'; // Configuração de diretório $_ENV['USER_IMG_PATH'] = '/var/www/html/uploads/'; ?>
- Dê permissão de escrita ao diretório
src/uploads
no servidor da aplicação, para que os arquivos possam ser transferidos ao diretório durante o processo de upload.
- O arquivo de configuração para a conexão com o banco, além de demais variáveis globais necessárias à aplicação, se encontram no diretório
- No seu arquivo de configuração
php.ini
(Acesse essa página em caso de dúvida para localizá-lo) verá que a configuraçãoallow_url_include
está emOff
. Altere-a paraOn
de modo que possa abrir arquivos de fora do sistema. Deixe assim:allow_url_include = On
. Tal configuração deve ser manipulada para realizar testes de RFI.
Trata-se de um fórum em que os usuários podem compartilhar mensagens entre si através de suas postagens.
- O usuário pode cadastrar, editar e excluir sua conta, além de cadastrar, editar e excluir suas próprias postagens.
- O administrador pode, além das funções já existentes de um usuário comum (com exceção de excluir sua conta), pode excluir as postagens dos demais usuários e suas contas.
Nota: O primeiro usuário a ser registrado no sistema será o administrador.
- Falta de uma política de senhas;
- Tratamento de erro inapropriado;
- Falta de proteção a ataques de força bruta;
- Informações sensíveis são salvas "em claro" no banco de dados, ou seja, sem o uso de criptografia;
- XSS (Cross-Site Scripting)
- Reflected;
- Stored;
- SQL Injection
- In-band;
- Inferential;
- Unrestricted File Upload;
- File Inclusion
- LFI;
- RFI;
- Command Execution;
- CSRF (Cross-Site Request Forgery).
Lembrando que podem haver mais vulnerabilidades do que as listadas acima.
- HTML5 e CSS3
- JavaScript e jQuery versão 3.5.2
- PHP versão 7.2.24
- Apache versão 2.4.29
- MySQL versão 5.7.27
- Diretórios de desenvolvimento devem estar no modelo MVC.
- Arquivos extras do front-end devem ficar no diretório
src/modules
. - A documentação deve ficar no diretório
docs
.
|-- db
|-- docs
|-- src
|-- config
|-- controller
|-- model
|-- modules
|-- persistence
|-- uploads
|-- view
- Vitor Oriel - Perfil