Может ли хакер эмитировать IP адрес другого посетителя?

izx

Новичок
Может ли хакер эмитировать IP адрес другого посетителя?

Я использую сессии.
Идентификатор сессии иногда передается в строке запроса (метод GET).
Если хакер узнает идентификатор сессии другого посетителя,
то он сможет зайти на сайт под видом другого пользователя.

Для повышения безопасности я хочу перед стартом новой сессии также запоминать IP адрес посетителя
и в дальнейшем проверять, что бы посетитель этой сессии мог заходить только с этого IP адреса.

Вопросы.

Какие слабые места есть у этого механизма защиты.

1. Если хакер узнает идентификатор сессии, сможет ли он имитировать и IP адрес?

2. Не будет ли отказано в доступе не которым честным посетителям?

IP адрес я определяю Через $_SERVER['REMOTE_ADDR']
 

DiMA

php.spb.ru
Команда форума
Сможет. Он скажет, "Вася Пупкин, нажми этот URL: http://host.ru/login.php?command=remove_from_base&login=username". Юзер и нажмет. И ничего ты с этим не сделаешь. Правда, есть и защита элементарная (сделать проверку захода на страницу, где эта ссылка реально должна быть). Гемморно немного, но в чате у меня такая защита есть, задрали ламеры народ лохотронить таким способом =) Короче, тут тебя никакие сессии и IP-адреса не спасут.
 

Alien

Новичок
> 1. Если хакер узнает идентификатор сессии, сможет ли он имитировать и IP адрес?

может. но сложно технически (нужно канал от пользователя держать под контролем ... бэкдор/троян на его машине иметь ... и тп)

>2. Не будет ли отказано в доступе не которым честным посетителям?

будет. диалапщикам после реконнекта гарантированно.
 

izx

Новичок
Originally posted by DiMA
Сможет. Он скажет, "Вася Пупкин, нажми этот URL: http://host.ru/login.php?command=remove_from_base&login=username". Юзер и нажмет. И ничего ты с этим не сделаешь. Правда, есть и защита элементарная (сделать проверку захода на страницу, где эта ссылка реально должна быть). Гемморно немного, но в чате у меня такая защита есть, задрали ламеры народ лохотронить таким способом =) Короче, тут тебя никакие сессии и IP-адреса не спасут.
Не понял, что даст заход по адресу

http://host.ru/login.php?command=re...&login=username

И как работает элементарная защита.
 

Yurik

/dev/null
Называется это IP Spoofing и является высшей формой пилотажа. Такой хакер навряд будет заниматься вами.
А то, передается он в строке GET или в куках для хакера такого уровня пофигу.
 

izx

Новичок
Originally posted by Yurik
Называется это IP Spoofing и является высшей формой пилотажа. Такой хакер навряд будет заниматься вами.
А то, передается он в строке GET или в куках для хакера такого уровня пофигу.
А не могли бы Вы расказать, на чем основан IP Spoofing?
 

lunux

Новичок
Интересно, а можно ли изменять как то свой IP в интернете
 

balumbey

Guest
Originally posted by Yurik
Называется это IP Spoofing и является высшей формой пилотажа. Такой хакер навряд будет заниматься вами.
А то, передается он в строке GET или в куках для хакера такого уровня пофигу.
Собственно вот, убедитесь что никакого ИП спуфинга не существует. arp-spoofing - да, сегодня он актуален, но это только в локалках.
 

Wingley Dog

Guest
хм 8/
а допустим сделать так нельзя?

$mySID = md5(SID + IP + $my_secret_element);

И потом поверять? даже если знаешь айпи и сид, все равно остается одна штука известная только разработчику. Или это бред и ничего не дает? И вообще, раз нужна такая защита, почему бы не использовать SSI?
 

izx

Новичок
Originally posted by Wingley Dog
хм 8/
а допустим сделать так нельзя?

$mySID = md5(SID + IP + $my_secret_element);

И потом поверять? даже если знаешь айпи и сид, все равно остается одна штука известная только разработчику. Или это бред и ничего не дает? И вообще, раз нужна такая защита, почему бы не использовать SSI?
Не вижу смысла в этом.

Что даст этот $mySID?
Это будет просто случайное число, такое же случайное как и идентификатор сессии.
И его нужно будет передать на компьютер клиента и хакер его может точно так же перехватить как и идентификатор сессии.
 

izx

Новичок
Подытожу наше обсуждение.
Если я буду разрешать сессии работать только лишь с одного IP адреса,
то если хакер даже будет знать идентификатор сессии и его IP адрес,
То что бы зайти на сайт под видом посетителя,
хакеру придется ехать в город посетителя и заходить в интернет через его провайдера.
То есть эмитировать произвольный IP адрес у хакера возможности нет.

Я правильно подвел итог?
 

NEK

Guest
Автор оригинала: izx
Если я буду разрешать сессии работать только лишь с одного IP адреса,
А если кто-то сидит в одной локалке и/или под
анонимным прокси то и IP-ники будут в принципе похожи ...
 

ZaZa

Guest
у нас ещё юзер_агент есть... и нефик к нам с разными юзер_агентами ходить... :D
 

DiMA

php.spb.ru
Команда форума
> Не понял, что даст заход по адресу

выполнение команды юзером, которую заставляет сделать хакер. Например, удаление себя из базы. Или добавление нового админа в систему. Не понял что написано - сидишь и перечитываешь.

> у нас ещё юзер_агент есть... и нефик к нам с разными юзер_агентами ходить...

ой, детский сад... Еще есть: версии всех плагинов браузера, временная зона, точное время компа юзера (его проверять с погрешностью в пару минут) разрешение экрана, кол-во цветов. Еще можно при входе на сайт редиректить юзера на http://sess:[email protected] (где sess - номер сесстии, а key - случайный пароль в сессию), чтобы во-первых не терять сессию и самое главное проверять пароль при каждом запросе. Еще можно создать каталог site.ru/cookie, где выдавать куку только для данного каталога (т.е. чтобы браузер не слал куку во все остальные скрипты сайта). При важных операцих запращивать эту куку. Меньше шанса украть данную куку, если дырка в сайте будет в обычных скриптах, а не скрипте, выдающим куку в каталоге /cookie.
 

Cid

...двинутый новичок
>>2. Не будет ли отказано в доступе не которым честным посетителям?

>>IP адрес я определяю Через $_SERVER['REMOTE_ADDR']

Ну, во-первых - как ты определишь если к тебе ходят из сети, где используется NAT ? Например, 50 человек из одной сети в интернет прикрываются одним адресом ?

Есть вариант использовать $HTTP_X_FORWARDED_FOR, но это не всегда работает, ибо не все фаерволы/прокси-сервера позволяют его передавать.

Также не в пользу IP: если даже $HTTP_X_FORWARDED_FOR покажет реальный ИНТРАанетовский IP, то он все равно будет ИНТРАнетовским (192.168.... например, или 10.0....). Таким образом два абсолютно независимых друг от друга человека, сидящие в разных местах могут иметь абсолютно одинаковый внутрениий адрес.

User-Agent также как и Referrer очень часто обрезаются прокси-серверами (приходят либо пустые, либо подставляется что-то вроде "Via proxy такой-то").

IP-spoofing'a сильно пугаться не надо. Я бы не стал называть его высшим пилотажем. На сходном принципе, кстати, организван NAT (Network address translation). Чтобы присвоить себе чужой IP можно, например, попытаться взломать фаерволл или перенастроить маршрут. Но пострадавший, впрочем, может и среагировать :)

Резюмируя, могу сказать так: хакеров бояться - в интернет не ходить :) . Осторожность, безусловно, никогда не повредит, но до параноидального статуса, IMHO, ее доводить не стоит. В данном конкретном случае можно принять в качестве постулата, что хакер чужой IP-адрес не присвоит. Однако, проверка описанными методами, строго говоря, не надежна. Безусловно, кто-то может и пострадать. Разработки такого рода сравнимы, пожалуй, с оптимизацией сайтов под все типы браузеров, включая Lynx :) или с ее отсутствием (типа, у >90% стоит IExplore, а остальные уже не так интересны).

Ладно, что-то я больно уж разумничался для новенького :)
 

Yurik

/dev/null
что никакого ИП спуфинга не существует. arp-spoofing - да, сегодня он актуален
Там же: http://www.securitylab.ru/?ID=34607
о IP Spoofing (связанным именно с АРП таблицами)
и цитата:
Мы объясним, почему ограничение доступа, основанное на IP адресе, не надежно, и не должно использоваться во многих корпоративных сетях.
О IP Spoofing также из уст CERT
http://www.cert.org/advisories/CA-1996-21.html
http://www.ja.net/CERT/Bellovin/TCP-IP_Security_Problems.html
и также их история и детали
http://www.securityfocus.com/infocus/1674

А вы что-то спутали с TCP Spoofing. TCP != IP
 
Сверху