0% acharam este documento útil (0 voto)
2 visualizações14 páginas

SQL Injection Trabalho

O documento aborda a vulnerabilidade de SQL Injection, destacando sua persistência como uma das principais ameaças cibernéticas em aplicações web. Ele analisa como essa técnica de ataque ocorre, seus impactos e propõe estratégias eficazes de prevenção, como o uso de consultas parametrizadas e validação de entradas. A pesquisa enfatiza a importância da segurança da informação e boas práticas no desenvolvimento de sistemas para mitigar esses riscos.

Enviado por

Elbrabo Css
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
2 visualizações14 páginas

SQL Injection Trabalho

O documento aborda a vulnerabilidade de SQL Injection, destacando sua persistência como uma das principais ameaças cibernéticas em aplicações web. Ele analisa como essa técnica de ataque ocorre, seus impactos e propõe estratégias eficazes de prevenção, como o uso de consultas parametrizadas e validação de entradas. A pesquisa enfatiza a importância da segurança da informação e boas práticas no desenvolvimento de sistemas para mitigar esses riscos.

Enviado por

Elbrabo Css
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

1.

INTRODUÇÃO
A crescente digitalização dos sistemas de informação trouxe inúmeros benefícios para
organizações e indivíduos, mas também ampliou significativamente a superfície de
ataque para ameaças cibernéticas. Entre essas ameaças, destaca-se o SQL Injection, uma
das vulnerabilidades mais antigas e persistentes em aplicações web.

A segurança de sistemas de informação tem assumido um papel central no


desenvolvimento de aplicações modernas, sobretudo com o crescimento exponencial da
utilização de sistemas baseados na web. A digitalização de serviços financeiros,
educacionais e governamentais trouxe ganhos significativos em eficiência, porém
também aumentou a exposição a ameaças cibernéticas

SQL Injection é uma técnica de ataque que explora falhas na validação de entradas de
dados, permitindo que um atacante manipule consultas SQL executadas por uma
aplicação. Essa vulnerabilidade pode resultar em acesso não autorizado a dados sensíveis,
modificação de informações e até mesmo comprometimento completo do sistema
(Halfond, Viegas & Orso, 2006).

De acordo com a OWASP, o SQL Injection permanece listado entre as principais


vulnerabilidades no relatório OWASP Top 10, evidenciando a sua relevância contínua no
cenário da segurança da informação.

O impacto desse tipo de ataque pode ser devastador, incluindo acesso não autorizado a
bases de dados, roubo de informações sensíveis, alteração de dados e até a destruição
completa de sistemas. Em muitos casos, a exploração dessa vulnerabilidade ocorre
devido à falta de boas práticas de desenvolvimento seguro.

Diante desse contexto, torna-se fundamental compreender não apenas o funcionamento


do SQL Injection, mas também os seus mecanismos de exploração e as estratégias
eficazes para a sua prevenção. Este trabalho propõe-se a analisar de forma detalhada essa
vulnerabilidade.

1
2. PROBLEMA DE INVESTIGAÇÃO
Apesar do avanço das tecnologias e frameworks modernos, muitas aplicações continuam
vulneráveis a ataques de SQL Injection devido à má implementação de práticas de
segurança.

O problema central deste estudo é:

Como o SQL Injection ocorre em aplicações web e quais são as melhores estratégias
para prevenir esse tipo de ataque?

3. OBJECTIVOS

3.1. Objectivo Geral


 Analisar o SQL Injection e propor mecanismos eficazes de prevenção em
sistemas de informação.

3.2. Objectivos Específicos


 Identificar os principais tipos de SQL Injection
 Demonstrar como os ataques são realizados
 Avaliar os impactos causados
 Apresentar boas práticas de prevenção

4. METODOLOGIAS

Para a elaboração deste trabalho aplicou se a metodologia de consulta bibliográfica,


lendo obras e monografias científica.

2
5. CONCEITOS FUNDAMENTAIS
Antes de avançarmos para o tema principal desta disseminação, vamos começar por
analisar alguns conceitos básicos que nos darão uma breve visão do tema. Comecemos
por observar os conceitos de dados e modelo de dados apresentados por alguns autores.

5.1. Dados
Comecemos por analisar a origem da palavra dada. “A palavra dado deriva do Latim do
verbo dar, então dado é realmente um facto que se deu sobre o qual se podem deduzir
factos adicionais” (DATE, C.J., 2004. pp.15).

De seguida podemos analisar o que são dados, “Dados é qualquer informação que valha
a pena preservar” (GARCIA, Molina et all,. [Link]. 2).

5.2. Base de Dados e SQL


Uma base de dados (sua abreviatura é BD, em inglês DB, DataBase) é uma colecção de
dados relacionados. Entende-se por dado, toda a informação que pode ser armazenada e
que apresenta algum significado dentro do contexto ao qual ele se aplica. Por exemplo,
num sistema bancário, uma pessoa é identificada pelo seu número de conta (cliente). Em
um sistema escolar a pessoa é identificada pelo seu número de matrícula (aluno), segundo
(MEIRA Regilian., pp.4).

SQL é uma Linguagem Estruturada de Consulta que apresenta uma série de comandos
que permitem a definição dos dados, chamada de DDL (Data Definition Language),
composta entre outros pelos comandos Create, que é destinado a criação do Banco de
Dados, das Tabelas que o compõe, além das relações existentes entre as tabelas. Como
exemplo de comandos da classe DDL temos os comandos Create, Alter e Drop, segundo
(MEIRA Regilian., pp.19).

O SQL (Structured Query Language) é a linguagem padrão utilizada para interagir com
bases de dados relacionais. Ela permite executar operações como consulta, inserção,
actualização e exclusão de dados.

3
5.3. Segurança Informática
Segundo William Stallings (2018) Segurança informática é a protecção dos sistemas de
informação contra acessos não autorizados, uso indevido, alteração ou destruição,
garantindo a confidencialidade, integridade e disponibilidade dos dados.

5.4. Segurança da Informação (SI)


É a protecção da informação, dos dados disponíveis em uma empresa, dos vários tipos de
ameaças. Sendo amplamente debatida devido ao avanço da tecnologia, tornando cada vez
mais importante para as organizações (RAMOS, et al. 2017).

A SI assegura que não tenha acessos não autorizados nos computadores e aos dados,
evitando que pessoas não autorizadas tenham acesso a essas informações. Além disso,
impede a destruição, roubos ou que os dados sejam danificados. Dessa forma, as
informações disponíveis ficam disponíveis, integras e com autenticidade.

O conjunto de acções de protecção dos dados, da SI, é formado pelos seguintes pilares:
confidencialidade, integridade, disponibilidade e autenticidade. Essas bases são
fundamentais para a protecção das informações da organização (DURBANO, 2018).

5.5. Segurança cibernética


A segurança cibernética é a prevenção dos ataques que são realizados por sistemas
maliciosos que utilizam de falhas sistémicas para invadir dispositivos, podendo roubar,
manipular ou tornar indisponíveis dados ou arquivos. Envolve acções de protecção de
sistemas, pessoas e dispositivos contra esses ataques (SCHULTZ,2020). A segurança
cibernética é uma parte da SI, que abrange etapas de protecção dentro da empresa que é
necessária para manter segura contra acessos indesejados devido as vulnerabilidades na
rede ou dos sistemas de informação.

O investimento na segurança cibernética se tornou necessária e um factor de sucesso para


as empresas. Além desses ataques aumentarem as vulnerabilidades e colocar em risco os
dados das organizações, tendem a crescer e desenvolver rapidamente, acompanhando os
avanços tecnológicos. O cibercrime é a prática ilegal que utiliza o computador ou meios da
TI para realizar uma acção criminosa em que os equipamentos de TI é o objecto do crime.

4
6. SQL INJECTION

SQL Injection (SQLi) é o termo utilizado para falhas encontradas em uma aplicação, seja
WEB ou local, que permite por meio de entradas de dados disponíveis aos usuários, a
manipulação da consulta SQL utilizada internamente na aplicação para aceder os dados.
Essa manipulação é chamada injecção, por isso o nome SQL Injection (PAYÃO, 2017).

Neste tipo de ataque, o invasor executa comandos maliciosos, explorando as consultas


dinâmicas no Banco de Dados (BD), para tentar mostrar os dados sigilosos, podendo
também apagar dados no servidor deste BD (RESENDE FILHO, 2019).

Falhas SQLi são um dos maiores riscos de segurança de aplicação WEB e estão na lista
da OWASP Top 10 2017. A fundação Open Web Application Security Project (OWASP)
é sem fins lucrativos, que investe na melhoria da segurança do software e dedica-se para
que as organizações desenvolvam e mantenham suas aplicações e Application
Programming Interface (API) confiáveis (OWASP, 2017).

As vulnerabilidades de injecção SQL ficaram mais difíceis de serem exploradas e


detectadas, devido ao aumento da consciência da segurança de aplicações WEB.

Algumas aplicações evitam esses ataques substituindo por APIs, pois são seguras contra
ataques SQLi. Dessa forma, a injecção de SQL ocorre em casos pontuais, com essa
tendência, os métodos utilizados para encontrar e explorar as falhas tem evoluído,
utilizando indicadores de vulnerabilidade sutis e técnicas mais poderosas (MACÊDO,
2016).

Conforme Daityari (2020), um exemplo de uma aplicação WEB vulnerável é a


solicitação de uma BD através de entradas do usuário, como por exemplo, a tela de login.

OWASP Top 10

O SQL Injection faz parte do relatório OWASP Top 10, que lista as principais
vulnerabilidades de segurança. Esse relatório é amplamente utilizado por
desenvolvedores e especialistas em segurança para identificar riscos, melhorar sistemas
e definir boas práticas. O SQL Injection aparece na categoria Injection, uma das mais
críticas.
5
Como ocorre SQL Injection?

O SQL Injection ocorre quando uma aplicação insere directamente dados fornecidos pelo
utilizador em uma consulta SQL sem validação adequada. Segundo William G. J.
Halfond et al. (2006), essa vulnerabilidade resulta da falta de separação entre código SQL
e dados de entrada.

6.1. Objectivos do SQLi


Existem diversos objectivos possíveis que o invasor pode querer utilizar o SQLi, como
por:

 Destruição: o cibe criminoso deseja encerrar o site ou aplicativo;


 Roubo de informações: roubo de dados, causando a empresa a perca de
confiança dos clientes;
 Fornecimento de informações falsas: o criminoso pode fazer com que a decisão
de algum negócio seja com base em informações falsa;
 Assumindo o controlo: o criminoso ao ter controlo do BD, pode negar acesso a
funcionários da empresa, remover dados importantes ou fornecer informações
falsas.

6.2. Tipos de SQL Injection


O SQL Injection pode manifestar-se de diferentes formas, dependendo da técnica
utilizada pelo atacante e da forma como a aplicação trata os dados. Entre os principais
tipos, destacam-se:

 SQL Injection baseado em erro (Error-based SQLi):

Ocorre quando o atacante explora mensagens de erro retornadas pelo banco de dados para
obter informações sobre a estrutura da base de dados. Essas mensagens podem revelar
nomes de tabelas, colunas e até partes da consulta SQL.

 SQL Injection baseado em união (Union-based SQLi):

Utiliza o operador UNION para combinar resultados de diferentes consultas SQL. Isso
permite ao atacante extrair dados de outras tabelas da base de dados.

6
 SQL Injection cego (Blind SQLi):

Neste tipo, a aplicação não retorna mensagens de erro nem dados directamente. O
atacante faz perguntas ao sistema e analisa as respostas (verdadeiro ou falso) para inferir
informações.

 Boolean-based Blind SQLi: Baseia-se em respostas booleanas (verdadeiro/falso).


 Time-based Blind SQLi: Utiliza atrasos no tempo de resposta do servidor para
identificar vulnerabilidades.

 SQL Injection fora de banda (Out-of-band SQLi):

Ocorre quando o atacante utiliza canais alternativos, como DNS ou HTTP, para extrair
dados da base de dados.

6.3. Exemplos de SQL Injection


Um exemplo clássico ocorre em sistemas de autenticação:

Ex.: SELECT * FROM usuarios WHERE username = 'admin' AND password = '1234';

Se a aplicação não validar correctamente os dados inseridos pelo utilizador, um atacante


pode inserir: ' OR '1'='1.

A consulta resultante será:

SELECT * FROM usuarios WHERE username = '' OR '1'='1' AND password = '';

Como '1'='1' é sempre verdadeiro, o sistema pode permitir acesso indevido sem
necessidade de credenciais válidas.

6.4. Impactos do SQL Injection

Os impactos de um ataque de SQL Injection podem ser extremamente graves, afectando


tanto a integridade como a reputação da organização. Entre os principais impactos
destacam-se:

7
 Acesso não autorizado a dados sensíveis (dados pessoais, financeiros,
credenciais) ;
 Perda de integridade dos dados, com alterações ou eliminação de informações;
 Comprometimento total do sistema, permitindo controlo administrativo;
 Interrupção de serviços, causando indisponibilidade;
 Danos financeiros e reputacionais, incluindo perda de confiança dos
utilizadores.

6.5. Mecanismos de Prevenção

A prevenção contra SQL Injection deve ser tratada como uma prioridade no
desenvolvimento de sistemas. Algumas das principais estratégias incluem:

 Uso de Prepared Statements (Consultas Parametrizadas):

Separar o código SQL dos dados inseridos pelo utilizador, evitando que comandos
maliciosos sejam executados.

Exemplo em PHP (PDO):

$stmt = $pdo->prepare("SELECT * FROM usuarios WHERE username


= :username AND password = :password");
$stmt->execute([
':username' => $username,
':password' => $password
]);

 Validação e Sanitização de Entradas:

Garantir que os dados inseridos pelo utilizador estejam no formato esperado.

 Uso de ORM (Object Relational Mapping):

Frameworks como Laravel utilizam ORM (Eloquent), reduzindo o risco de SQL


Injection.

8
 Princípio do menor privilégio:

As contas de acesso ao banco de dados devem ter apenas permissões necessárias.

 Evitar mensagens de erro detalhadas:

Mensagens de erro não devem revelar informações internas do sistema.

 Uso de frameworks seguros:

Frameworks modernos já possuem mecanismos de protecção integrados.

7. SQL Injection e Demonstração Prática (Código Vulnerável vs Seguro)

7.1. Código Vulnerável (PHP)


$username = $_POST['username'];
$password = $_POST['password'];

$sql = "SELECT * FROM users WHERE username = '$username' AND password =


'$password'";
$result = mysqli_query($conn, $sql);

Problema: concatenação directa de strings.

7.2. Código Seguro (Prepared Statement)


$stmt = $conn->prepare("SELECT * FROM users WHERE username = ? AND
password = ?");
$stmt->bind_param("ss", $username, $password);
$stmt->execute();

8. Ferramentas de Teste de SQL Injection

Existem ferramentas utilizadas para identificar vulnerabilidades:

 SQLMap → automatiza ataques SQL Injection


 Burp Suite → intercepta e testa requisições HTTP
 OWASP ZAP → scanner de vulnerabilidades
 Acunetix → ferramenta profissional

Exemplo com SQLMap: sqlmap -u "[Link] --dbs

9
9. Ciclo de Ataque SQL Injection

O ataque geralmente segue estas etapas:

1. Reconhecimento – identificar campos vulneráveis


2. Testes de injecção – inserir caracteres como ' ou "
3. Exploração – manipular consultas SQL
4. Escalada de privilégios – obter acesso administrativo
5. Extração de dados – roubo de informação
6. Persistência ou destruição

10. Estratégias Avançadas de Prevenção

Além das práticas básicas, existem abordagens mais robustas:

 Web Application Firewall (WAF)

Filtra tráfego malicioso antes de chegar à aplicação.

 Stored Procedures

Reduzem manipulação directa de SQL.

 Hash de Senhas

Mesmo que haja vazamento, dados ficam protegidos:

$password = password_hash($password, PASSWORD_BCRYPT);

 Limitação de Tentativas

Evita ataques automatizados.

10
• Logs e Monitoramento

Detecta comportamentos suspeitos:

 Múltiplas tentativas de login;


 Queries anormais;
 Acessos fora do padrão.

10.1. Boas Práticas de Desenvolvimento Seguro

 Nunca confiar em dados fornecidos pelo utilizador;


 Utilizar sempre consulta parametrizado;
 Implementar camadas de segurança (backend e frontend);
 Realizar testes de segurança regularmente;
 Manter sistemas e bibliotecas actualizados;

11. Exemplo Prático

Fig1.: Janela de autenticação vulnerável

Fig.2: Código fonte vulneravel a SQL Injection

11
Fig.4: Código fonte seguro a SQL Injection

12. Conclusão
O SQL Injection continua a ser uma das vulnerabilidades mais críticas no desenvolvimento de
aplicações web, mesmo com o avanço das tecnologias e frameworks modernos. A sua
persistência deve-se, principalmente, à falta de implementação adequada de práticas de segurança
por parte dos desenvolvedores.

Ao longo deste trabalho, foi possível compreender o funcionamento do SQL Injection, identificar
os seus principais tipos, analisar os impactos causados e apresentar mecanismos eficazes de
prevenção. Verificou-se que a adopção de boas práticas, como o uso de consultas parametrizadas,
validação de entradas e utilização de frameworks seguros, é essencial para mitigar esse tipo de
ameaça.

12
Dessa forma, conclui-se que a segurança deve ser integrada desde as fases iniciais do
desenvolvimento de software, sendo responsabilidade de todos os envolvidos no processo
garantir a protecção dos sistemas e dos dados.

13. REFERÊNCIAS BIBLIOGRÁFICAS


HALFOND, W. G. J.; VIEGAS, J.; ORSO, A. (2006). A Classification of SQL Injection
Attacks and Countermeasures.

OWASP (2017). OWASP Top 10 – The Ten Most Critical Web Application Security
Risks.

STALLINGS, W. (2018). Computer Security: Principles and Practice.

RAMOS, A. et al. (2017). Segurança da Informação.

13
DURBANO, M. (2018). Fundamentos de Segurança da Informação.

SCHULTZ, E. (2020). Cybersecurity Essentials.

PAYÃO, R. (2017). Segurança em Aplicações Web.

RESENDE FILHO, J. (2019). Segurança de Sistemas Web.

MACÊDO, D. (2016). Análise de Vulnerabilidades em Aplicações Web.

DATE, C. J. (2004). An Introduction to Database Systems.

GARCIA-MOLINA, H. et al. (2001). Database Systems: The Complete Book.

DAITYARI, A. (2020). SQL Injection Attacks Explained.

14

Você também pode gostar