Hacking usando “rename()” do PHP, parte 2.

Essa semana mostramos um caso real de hacking explorando o rename(), e apesar de termos mostrado de uma forma didática a um exemplo mais técnico à algumas semanas, ele foi um pouco diferente.

Nesse vamos mostrar uma segunda opção de como causar problema ao sistema.

Então o que acontece internamente, porque o rename usado pode ter causado um problema para o sistema?

Veja os links anteriores sobre rename():

Em resumo o rename() recebe dois parâmetros, o primeiro com o nome antigo e o segundo com o novo nome, no exemplo anterior mostramos com a injeção no primeiro parâmetro , agora vamos mostrar um exemplo injetando dados no segundo parâmetro, no caso o novo nome.

O exemplo é simples:

$_GET['newName'] = 'index.php';
<?php 
     $oldName = 'imageOldName.jpg';
     rename( $oldName, $_GET['newName'] );
?>

O que vai acontecer?

Na prática o sistema vai criar um novo arquivo, e apagar o anterior.

Qual o problema?

Se existir um arquivo com o mesmo nome ele vai sobre escrever.

O que você pode fazer com isso?

Pode sobre escrever arquivos de sistema ou até mesmo sobre escrever imagem da logo de um site por exemplo ou criar arquivos que podem influenciar no sistema como .htaccess or index.html como o exemplo real.

Exemplo do ataque:

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

$_GET[‘newName’] = ‘../../index.php’;

<?php 
     $oldName = 'imageOldName.jpg';
     rename( $oldName, $_GET['newName'] ); // sobre escreve o index.php
?>

O sistema vai sobre escrever o index.php com conteúdo da imagem e o sistema vai parar. =)

Veja o vídeo de uma ação simples:

E o vídeo de um ataque real.

Está bom por rename por um tempo né.

Semana que vem, um assunto novo ou outro caso real?

Vejo vocês em breve.

=)

Deixe uma resposta

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