Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
2dl Еще баг в форуме нашел 08.10.01 13:20
Автор: paganoid Статус: Member
|
Ситуация такая. Зарегистрированный пользователь заходит в форум под своим логином и паролем. Его перекидывает на некую урлу, в которой есть всякие session id , ну да dl виднее. Жмёт кнопку ВЫХОД , что, в соответствии со здравым смыслом должно запирать просмотр форума по этой (предыдущей урле). Однако это не так. Т.е. "попробовав раз, ем и сейчас" . Надо на нажатие кнопы ВЫДОХ вычищать сешн ид откуда надо.
Эта бага весьма нехороша при чтении данного форума, к примеру, из интренет-кабака, поскольку любой может сесть за машину и, погуляв по хистори браузера, понаписать сообщений от чужого имени.
|
|
2dl ууу как все запущено 08.10.01 14:17
Автор: paganoid Статус: Member
|
ужас какой, да тут session_id вроде вечный, не меняется ...
заглянул через плечо человеку в урлу, подсмотрел буковки в урле после &cp= и всё,.... В совокупности с тем, что для смены пароля в настройках не требуется ввод старого пароля, это означает лёгкую возможность захвата ника....
|
| |
2dl ууу как все запущено 08.10.01 18:58
Автор: dl <Dmitry Leonov>
|
> ужас какой, да тут session_id вроде вечный, не меняется ... > заглянул через плечо человеку в урлу, подсмотрел буковки в > урле после &cp= и всё,.... В совокупности с тем, что для > смены пароля в настройках не требуется ввод старого пароля, > это означает лёгкую возможность захвата ника....
session_id привязан к текущему ip. На случай интернет-кабаков могу пока посоветовать только чистить хистори после выхода. Чтобы не светился адрес, можно использовать режим с куками и чистить их перед уходом, но это еще опаснее.
|
| | |
неправда твоя 09.10.01 11:31
Автор: paganoid Статус: Member
|
Что это за привязка к IP ?
Т.е, поставлю вопрос иначе, что это даёт? Это не праздный интерес. Вот сейчас я проделал следующую манипуляцию: зашел под своим логином без прокси и зашёл под своим логином с анонимного прокси. ИД разные. Но теперь я могу зайти в свой аккаунт И ПОД ТЕМ, И ПОД ДРУГИМ SESSION_ID CЛЮБОГОАДРЕСА (!)
ГДЕ_ПРИВЯЗКА_К IP ?
DL , открыть алгоритм генерации sess_id не так сложно (возможно).... Надо пересмотреть всю систему авторизации скрипта IMHO......
|
| | | |
неправда твоя 09.10.01 12:40
Автор: dl <Dmitry Leonov>
|
> Что это за привязка к IP ? > Т.е, поставлю вопрос иначе, что это даёт? Это не праздный > интерес. Вот сейчас я проделал следующую манипуляцию: зашел > под своим логином без прокси и зашёл под своим логином с > анонимного прокси. ИД разные. Но теперь я могу зайти в свой > аккаунт И ПОД ТЕМ, И ПОД ДРУГИМ SESSION_ID CЛЮБОГО > АДРЕСА (!) > ГДЕ_ПРИВЯЗКА_К IP ? > DL , открыть алгоритм генерации sess_id не так сложно > (возможно).... Надо пересмотреть всю систему авторизации > скрипта IMHO......
crypt(substr($ip, 5), substr($pass, 3));
|
| | | | |
хм... 09.10.01 14:54
Автор: paganoid Статус: Member
|
> > Что это за привязка к IP ? > > Т.е, поставлю вопрос иначе, что это даёт? Это не > праздный > > интерес. Вот сейчас я проделал следующую манипуляцию: > зашел > > под своим логином без прокси и зашёл под своим логином > с > > анонимного прокси. ИД разные. Но теперь я могу зайти в > свой > > аккаунт И ПОД ТЕМ, И ПОД ДРУГИМ SESSION_ID CЛЮБОГО > > АДРЕСА (!) > > ГДЕ_ПРИВЯЗКА_К IP ? > > DL , открыть алгоритм генерации sess_id не так сложно > > (возможно).... Надо пересмотреть всю систему > авторизации > > скрипта IMHO...... > > crypt(substr($ip, 5), substr($pass, 3));
хорошо что $pass в параметрах ф-ии есть :)
все равно как-то неспортивно..
впрочем, сдаюсь, что я привязался..
|
| | | | | |
хм... 09.10.01 18:24
Автор: dl <Dmitry Leonov>
|
> > crypt(substr($ip, 5), substr($pass, 3)); > хорошо что $pass в параметрах ф-ии есть :) > все равно как-то неспортивно.. > впрочем, сдаюсь, что я привязался..
Я открыт для любых предложений :)
Как бы есть всего два способа передавать сессию - либо через куки, либо через спрятанные поля/куски ссылок. На форуме используются оба. В режиме с включенными куками после нажатия "выход" все сбрасывается.
В принципе, есть еще вариант закрытия каталога средствами апача, и он, в общем-то, работает, но к общему использованию я его пока не готовил.
|
| | | | | | |
хм... 09.10.01 19:05
Автор: paganoid Статус: Member
|
> > > crypt(substr($ip, 5), substr($pass, 3)); > > хорошо что $pass в параметрах ф-ии есть :) > > все равно как-то неспортивно.. > > впрочем, сдаюсь, что я привязался.. > > Я открыт для любых предложений :)
;)
я все еще не могу понять, как же это по приведенной схеме мне удаётся войти под разными sessid с одного ip ....
> Как бы есть всего два способа передавать сессию - либо > через куки, либо через спрятанные поля/куски ссылок.
Это понятно. Просто, честно говоря, первый раз вижу такую схему.
Обычно так - зашёл, получил случайный sess_id, который занёсся в базу,
нажал "выход" - из базы sessid вытерли. И всё. Больше не зайдёшь.
А тут как-то.. хм... Вот всё думаю, что же тут не так, помимо возможности повторного входа ... Ну и про ф-ю crypt. Вот тут на сервере используется crypt с 9-значным salt (вроде) . Это хорошо. А обычно 2х значный. Если бы и тут был двухзначный, то всё бы это очень быстро ломалось перебором.
Т.е. вставил URL, все по нему сходили, записал IP всех людей, прикинул приблизительно ху из ху, и начинаешь шпарить маленький короткий перебор по всем 2значным комбинациям salt...
>На форуме используются оба. В режиме с включенными куками
> после нажатия "выход" все сбрасывается.
Угу, я подметил.
> В принципе, есть еще вариант закрытия каталога средствами > апача, и он, в общем-то, работает, но к общему > использованию я его пока не готовил.
тогда будет выскакивать это жуткое окно , енто не красиво... хотя...
|
| | | | | | | |
хм... 09.10.01 19:35
Автор: dl <Dmitry Leonov>
|
> я все еще не могу понять, как же это по приведенной схеме > мне удаётся войти под разными sessid с одного ip ....
Я тоже :)
> > Как бы есть всего два способа передавать сессию - либо > > через куки, либо через спрятанные поля/куски ссылок. > Это понятно. Просто, честно говоря, первый раз вижу такую > схему. > Обычно так - зашёл, получил случайный sess_id, который > занёсся в базу, > нажал "выход" - из базы sessid вытерли. И всё. Больше не > зайдёшь.
Ну можно, конечно. Просто этот вариант вообще всегда рассматривался как вторичный, возмущавшихся им до сих пор не было.
> А тут как-то.. хм... Вот всё думаю, что же тут не так, > помимо возможности повторного входа ... Ну и про ф-ю crypt. > Вот тут на сервере используется crypt с 9-значным salt > (вроде) . Это хорошо. А обычно 2х значный. Если бы и тут > был двухзначный, то всё бы это очень быстро ломалось > перебором. > Т.е. вставил URL, все по нему сходили, записал IP всех > людей, прикинул приблизительно ху из ху, и начинаешь > шпарить маленький короткий перебор по всем 2значным > комбинациям salt...
Угу, только не очень понятно, как прикидывать, ху из ху :) К тому же у большинства в настройках стоит использование cookie, при котором проверка идентификатора в поле не проводится... Кроме того, я не обещал, что дал абсолютно точный вид функции :)
|
| | | | | | | | |
хм... 10.10.01 11:02
Автор: paganoid Статус: Member
|
> > я все еще не могу понять, как же это по приведенной > схеме > > мне удаётся войти под разными sessid с одного ip .... > > Я тоже :)
уже не удаётся ;о . Обман зрения...
> > Вот тут на сервере используется crypt с 9-значным > salt > > (вроде) . Это хорошо. А обычно 2х значный. Если бы и > тут > > был двухзначный, то всё бы это очень быстро ломалось > > перебором.
кстати вроде он всётки двузначный..
> > Т.е. вставил URL, все по нему сходили, записал IP всех > > людей, прикинул приблизительно ху из ху, и начинаешь > > шпарить маленький короткий перебор по всем 2значным > > комбинациям salt... > Угу, только не очень понятно, как прикидывать, ху из ху :)
хм, очень просто. Сидишь и смотришь на того, "кто сейчас в чате" хехе. Как зашел к тебе на сервер - записал REMOTE_ADDR . На всякий случай еще и REFERER (вдруг куки выключены). Если лень сидеть, смотреть за списком юзеров, можно поглядеть по дате постинга сообщений.
> К тому же у большинства в настройках стоит использование > cookie, при котором проверка идентификатора в поле не > проводится... Кроме того, я не обещал, что дал абсолютно > точный вид функции :)
это я заметил :)
от скуки всё пытаюсь подобрать :)
выходит crypt( какая_то_функция(время и/или rnd при входе, IP), crypt("пароль","имя пользователя") )
или
substr(crypt("пароль","имя пользователя"),0,x ) + какая_то_функция(время и/или rnd при входе, IP)
|
| | | | | | | | | |
хм... 10.10.01 13:26
Автор: dl <Dmitry Leonov>
|
> это я заметил :) > от скуки всё пытаюсь подобрать :) > выходит crypt( какая_то_функция(время и/или rnd при входе, > IP), crypt("пароль","имя пользователя") ) > или > substr(crypt("пароль","имя пользователя"),0,x ) + > какая_то_функция(время и/или rnd при входе, IP)
Примерно так. Собственно, вчера я сюда уже добавил уникальный кусок идентификатора, сносящийся при выходе, так что спасибо за замечания :)
Правда, все равно остается шанс перехватить логин человека, сидящего за тем же прокси/маскарадом (типично для интернет-кафе, кстати), пока он еще не вышел.
|
|
|