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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Проверка на существование и проверка данных (логинка и сессия)
  #1  
Старый 28.01.2009, 00:02
Аватар для Ru}{eeZ
Ru}{eeZ
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме:
956872

Репутация: 186
Отправить сообщение для Ru}{eeZ с помощью ICQ
По умолчанию Проверка на существование и проверка данных (логинка и сессия)

Как я где-то случайно заметил, ходят споры насчёт способов авторизации пользователей. Одни считают, что можно после первой проверки заносить данные в сессию и далее просто проверять переменную сессии на существование, другие утверждают, что можно подменить идентификатор сессии и таким образом зайти через чужой идентификатор. Даём свои "за" и "против" и обосновываем.
 
Ответить с цитированием

  #2  
Старый 28.01.2009, 00:39
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


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

Цитата:
можно подменить идентификатор сессии и таким образом зайти через чужой идентификатор
это можно сделать всегда независимо от кол-ва проверок, если есть скарденная сессия.
Главное не писать в куки пароль.

А вообще, если честно, сабж вообще не понял
 
Ответить с цитированием

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

Репутация: 3313


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

Сто процентно безопасно. Но я бы при логинке если авторизация прошла успешно, заносить md5 user_agent'a + соль в сессию, а уж потом сравнивать значения - тогда точно никто сессию не угонит, да и авторизация не будет слетать при смене ip.
 
Ответить с цитированием

  #4  
Старый 28.01.2009, 05:29
Аватар для astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

Попробуем разобраться

Для начала, определим участников:
Код:
    Алиса   - первый участник, в нашем случае - пользователь
    Боб     - второй участник, сервер
    Мэллори - злоумышленник
Итак, первый протокол:
Код:
  Переменные:
  
    sess_id - идентификатор сессии
    check   - процедура проверки данных
    
    
  Протокол:
  
      Алиса                        Боб
     -------                      -----
     
     name, pass         =>
      
                                  check(name, pass)
                        <=        sess_id
      
      
     sess_id            =>
    
                                  check(sess_id)
                        <=        data
Несложно заметить, что данные проверяются только в первый раз, после чего безопасность протокола основана только на
идентификаторе сессии (sess_id).

Насколько надёжен такой подход? По умолчанию, размер sess_id - 128 бит, а значит, чтобы найти его методом перебора, понадобится около 2^128 взаимодействий с удалённой системой. Это не кажется очень реалистичным.

С другой стороны, если sess_id станет известен Мэллори, он сможет отправлять и получать сообщения от имени Алисы.

Перейдём ко второму протоколу:
Код:
  
  Новые переменные:
    
    session - данные сессии
    salt    - случайная соль
    
    
  Протокол:
  
      Алиса                                 Боб
     -------                               -----
     
     name, pass, user_agent       =>
                                           check(name, pass)
                                           
                                           salt = random()
                                           session.hash = md5(concat(user_agent, salt))
                                           
                                  <=       sess_id
      
     
     sess_id, user_agent          =>
     
                                           check(sess_id, session.hash)
                                  <=       data
Теперь, казалось бы, надёжность должна значительно повыситься, и даже при компрометации sess_id система останется безопасной.

Но рассмотрим то, как осуществляется проверка.
При каждом запросе Алиса будет отсылать sess_id, которому соответствует некий набор данных на сервере - session. Чтобы проверить, действительно ли это её сессия, необходимо вычислить хэш и сравнить его с сохранённым.

Для этого, в свою очередь, нужно получить ту самую соль, которая была использована при авторизации. Проблема в том, что единственное, что связывает "ту" Алису и "эту" и говорит, какую соль использовать - это sess_id. Замкнутый круг.

Зачем же здесь тогда функция md5 и соль, если они не обеспечивают дополнительную проверку?

Очевидно, что хэширующая функция не даёт узнать начальное значение, а соль мешает эффективно использовать атаку по словарю, но... если у Мэллори есть права на чтение и ему удалось прочитать файл сессии, то атаковать хэш ему уже не понадобится.
 
Ответить с цитированием

  #5  
Старый 28.01.2009, 13:26
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

astrologer При нормальном разграничении прав - Мэллори не сможет прочитать файл сессии. Если же у Мэллори будут права на чтение того же пользователя, что и пользователь данного хостинга - то прочитать можно гораздо более интересные файлы, а это уже полная компрометация сервера

Хэш от юзерагента+соль делает бессмысленным XSS атаки, что в большинстве случаев и нужно
 
Ответить с цитированием

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

Репутация: 3313


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

Цитата:
Сообщение от Gifts  
astrologer При нормальном разграничении прав - Мэллори не сможет прочитать файл сессии. Если же у Мэллори будут права на чтение того же пользователя, что и пользователь данного хостинга - то прочитать можно гораздо более интересные файлы, а это уже полная компрометация сервера

Хэш от юзерагента+соль делает бессмысленным XSS атаки, что в большинстве случаев и нужно

О_о есть еще много способов как использовать xss.... К примену в активках реально устроить фрейм на связку, csrf... Ajax/json-hijacking, XML-injection иногда способов куча

Последний раз редактировалось ChaaK; 28.01.2009 в 13:57..
 
Ответить с цитированием

  #7  
Старый 28.01.2009, 14:09
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

ChaaK Угу, все это конечно очень относится к теме заданной ТСом - сессия и способы авторизации? Может вы еще перечислите вообще все виды атак? И это тоже будет очень в тему?

Возможно, конечно, не правильно сформулировал - пусть будет так - "бессмысленными XSS за тем, чтобы получить сессию"

Последний раз редактировалось Gifts; 28.01.2009 в 14:14..
 
Ответить с цитированием

  #8  
Старый 28.01.2009, 16:02
Аватар для astrologer
astrologer
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме:
3069349

Репутация: 808


По умолчанию

Цитата:
Сообщение от Gifts  
Возможно, конечно, не правильно сформулировал - пусть будет так - "бессмысленными XSS за тем, чтобы получить сессию"
Мне показалось, я подробно объяснил. Разумеется, саму сессию получить с помощью XSS нельзя - она храниться на сервере, можно получить её идентификатор, который может быть в куках или в адресе.

Как только он получен - хэш и соль становятся бессмысленными, имеет значение только строка user_agent, которую совсем несложно узнать, если это была XSS.

Даже если Мэллори не знает, какой браузер использует Алиса (что уже маловероятно), он будет просто по очереди использовать разные заголовки, в порядке убывания распространённости браузера. С учётом статистики понадобится всего около 5 попыток
 
Ответить с цитированием

  #9  
Старый 28.01.2009, 16:18
Аватар для AkyHa_MaTaTa
AkyHa_MaTaTa
Постоянный
Регистрация: 19.03.2007
Сообщений: 684
Провел на форуме:
3152874

Репутация: 1020


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

делать привязку к ип/индентификатор сесии, правдо при смене ип(например пров лаганул а ип динамический) надо заново логинется(кстати именно так на ачате), конечно сушествует вероятность того что угнавшему ид сесии удастся зайти с этого ипа(например одинаковый пров с nat) но это вероятность мала,имхо.
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посимвольный перебор в базах данных на примере MySQL LoFFi Чужие Статьи 5 30.04.2007 05:05
Перехват данных, кто, где и как? GreenBear Чужие Статьи 1 16.12.2006 16:43
Перехват данных: кто, где и как И.Г. Мировые новости 0 03.12.2006 22:46
Sql инъекция и Oracle, часть первая k00p3r Чужие Статьи 0 13.06.2005 11:23
SQL Injection в Oracle k00p3r Чужие Статьи 0 12.06.2005 12:41



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


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




ANTICHAT.XYZ