Bypass upload

Quando a aplicação possui alguma funcionalidade de fazer um upload de arquivo, podemos testar esse vetor para conseguirmos uma shell enviando um arquivo malicioso.

Bypass através do php

A primeira coisa a se testar, é enviar um arquivo que execute comandos do sistema para a aplicação (como a função sistem() do php). Só que algumas vezes, pode ser que seja bloqueado a extensão .php para impedir que isso seja feito. Uma das formas para tentar bypassar essa proteção, é colocarmos a extensão com alguma das letras maiúsculas, como por exemplo .phP, .Php ou .pHp, assim pode ser que a aplicação aceita.

Bypass através do .htaccess

Dependendo de como o servidor está configurado, podemos tentar enviar um arquivo .htaccess e se caso ele permitir o AllowOverride nós conseguimos enviar esse arquivo e ele irá ler o conteúdo do mesmo. Com isso, podemos inserir no .htaccess a dizer para o servidor interpretar um outro arquivo com a extensão que queremos. Podemos inserir o seguinte conteúdo:

AddType application/x-httpd-php .teste

Assim o servidor irá interpretar os arquivos com a extensão ".teste" como se fosse um arquivo php e por fim, nesse arquivo colocamos um comando do php para executar comandos do sistema operacional, dessa forma conseguindo bypassar o filtro e ganharmos uma shell.

Bypass tipo de conteúdo

Vamos supor que a aplicação só aceita apenas arquivos .pdf e queremos dar um bypass nessa proteção. Pode ser que além da verificação de extensão do arquivo, pode estar sendo verificado também o tipo de arquivo. Primeiro, precisamos entender que a verificação do tipo de um arquivo é feita através do seu cabeçalho, ele que indica qual é o seu tipo. Se visualizarmos a primeira linha de um arquivo pdf, por exemplo, irá conter isso.

Se utilizarmos o comando file podemos também ver o tipo do arquivo.

Sabendo disso, podemos criar um arquivo php e adicionarmos na primeira linha um %PDF-1.5 (que são os bytes que identifica como pdf) e assim ele será reconhecido como pdf.

Agora se visualizarmos o tipo desse arquivo, irá ser pdf, mesmo com a extensão php.

Se a aplicação apenas aceitar arquivos com extensão .pdf, podemos também renomear este arquivo como .pdf que irá funcionar da mesma forma. Com isso, podemos fazer o upload deste arquivo para testarmos se a aplicação irá aceitar.

Last updated