Публиковался на милворме (http://milw0rm.com/author/1317), администратор проверял абсолютно все мои заметки и эксплоиты, отвечал по каждому лично, правда некоторые пропустил, но это наверное от большого числа писем, все равно неприятно :)
В нашем законе сказано не четко, предусматривается только пункт, звучащий примерно так — дизассемблируй для достижения работоспособности про граммы, если автор этого не делает, и друзьям не давай, только опять же в этом случае. Очень размыто
Те, кто уже двадцать раз прочитал о том, как не надо использовать mysql_query, include, eval и system, порой могут отмочить что нибудь еще :)
Часто вижу, что при проверке в базу данных переменные вроде User_agent или Client-IP (X-forwarder-for) кладутся вообще без проверок, безумное использование import_request_variables или extract и куча других. Вспоминаем недавний баг в WordPress, я думал авторы уже научены предыдущими уязвимостями.
В версии 2.5.0 они решили сделать cookies юзера более защищенными
COOKIEHASH md5 хеш от имени сайта USERNAME Имя пользователя EXPIRY_TIME Срок жизни cookies до того как они станут невалидными
HMAC представляет из себя хеш из USERNAME и EXPIRY_TIME, основанный на ключе, полученный путем преобразования USERNAME, EXPIRY_TIME и SALT, проще говоря формула такая
Вроде бы все хорошо, но нет, разработчикам надо было и тут ошибиться :)
Ошибка состоит в том, что при высчитывании хэша не используется разделительных знаков, те зарегестрировавшись с именем, полностью повторяющим уже существующее, но с добавлением в конце имени цифры позволит нам почувствовать себя в шкуре другого юзера.То есть кроме имени юзера, которым нам надо стать и аккаунта в блоге нам ничего не надо.
Объясняю популярно — имеем пользователя admin1, после входа в блог получаем куки
[admin1]|{1897534539}|hash
Теперь просто переделываем cookies так, чтобы левая часть перед hash была идентична для юзера admin
[admin|1](единичка переходит сюда){897534539}|hash
В новом билде хватились и исправили, но такое не забывается :)
Согласен, но каждый день на различных секьюрити — лентах появляются все новые и новые уведомления о подобных уязвимостях, а ведь сколько уже было написано…
Куча, поверь мне, куча уязвимостей даже в таких cms(f), как Drupal, Php-Nuke и прочих очень известных именно в файлах, которые по задумке автора должны только подключаться.
Согласен с вами, статья сводится к следующему — «не используй php, на другом сервере его может не быть».
Пятый пункт, в котором говорится о кэширование в файл — тоже спорный момент, кэширование в файл очень плохо сказывается на сервер при большой нагрузке.
Готов поспорить насчет первого правила, во многих популярных cms/cmf все инклуды имеют расширение .module или .inc, что сделано для безопасности. Можно конечно define`ом проверять, но суть в том, что первое правило не совсем правильное.
Стопроцентной вероятности конечно нет. А указывать причиной документ, определяющий стандарты сервера и браузера — неоправданный бред. Можно поменять строку с юзер агентом, но очередность тех же заголовков RFC не определяет.
В одном моем проекте ребром стал вопрос о необходимости узнать браузер юзера с точностью до ста процентов, долго собирал заголовки браузеров и нашел некоторую закономерность. Думаю, сейчас это уже в прошлом, но два года назад именно порядок заголовков помог задетектить браузер.
Вы правы, это скорее для очень специфичных случаев, раньше это было очень необходимо, до появления HTML 2.0 скажем, сейчас редко используется сервер — сайд определение браузера для фиксов верстки. В тоже время отлично подойдет для скрипта статистики. Функция get_browser в php появилась в 2000ом году, это о чем то говорит :)
Для меня тоже, мне двухсот — трехсот рублей на месяц хватает точно. Если бы я взял полностью разлоченный мне все равно пришлось бы класть на него эти двести рублей. Тем более софт я на него всегда поставлю, да и привязка к одному оператору для меня не проблема, ведь с аймобилкой заключают вроде все компании «большой тройки» — МТС, Мегафон, Билайн.
По неофициальным данным, будет такой тариф. Покупаешь за 199 уе айфон и каждый месяц с твоей кредитки списывают 25 уе в течение двух лет. Это будет оплачивать еще и мобильную связь, те, к примеру, за эти 25 баксов вы получаете 100 смс и 40 минут разговора. Считаем 200 + 25*24 = 800 уе за 2 года, и это при том, что связь уже оплачена. Тем, кому не хватит такого тарифа будет продажа полностью анлоченного телефона за 850 и 950. Повторюсь, данные неофициальны. Меня устроит покупка телефона за 199 баксов и выплата 25 в течение двух лет, тариф создан для меня :)
ААА! У меня все это было, хотя я сам 90ого года рождения. Были еще журналы для наклеек, помню как покупал наклейки с футболистами и менялся повторными с друзьями, фишки и битки еще помню, духарики… эх
Часто вижу, что при проверке в базу данных переменные вроде User_agent или Client-IP (X-forwarder-for) кладутся вообще без проверок, безумное использование import_request_variables или extract и куча других. Вспоминаем недавний баг в WordPress, я думал авторы уже научены предыдущими уязвимостями.
В версии 2.5.0 они решили сделать cookies юзера более защищенными
«wordpress_».COOKIEHASH = USERNAME. «|». EXPIRY_TIME. «|». HMAC
COOKIEHASH md5 хеш от имени сайта
USERNAME Имя пользователя
EXPIRY_TIME Срок жизни cookies до того как они станут невалидными
HMAC представляет из себя хеш из USERNAME и EXPIRY_TIME, основанный на ключе, полученный путем преобразования USERNAME, EXPIRY_TIME и SALT, проще говоря формула такая
HMAC_KEY = HMAC md5(USERNAME.EXPIRY_TIME, SALT), HMAC = HMAC md5(USERNAME.EXPIRY_TIME, HMAC_KEY)
$hmackey = hash_hmac('md5', $user. $time, $salt);
$hmacpass = hash_hmac('md5', $user. $time, $hmackey);
Вроде бы все хорошо, но нет, разработчикам надо было и тут ошибиться :)
Ошибка состоит в том, что при высчитывании хэша не используется разделительных знаков, те зарегестрировавшись с именем, полностью повторяющим уже существующее, но с добавлением в конце имени цифры позволит нам почувствовать себя в шкуре другого юзера.То есть кроме имени юзера, которым нам надо стать и аккаунта в блоге нам ничего не надо.
Объясняю популярно — имеем пользователя admin1, после входа в блог получаем куки
[admin1]|{1897534539}|hash
Теперь просто переделываем cookies так, чтобы левая часть перед hash была идентична для юзера admin
[admin|1](единичка переходит сюда){897534539}|hash
В новом билде хватились и исправили, но такое не забывается :)
Мы говорим про программистов вроде, а не о тех, кто код с книжек копирует.
Пятый пункт, в котором говорится о кэширование в файл — тоже спорный момент, кэширование в файл очень плохо сказывается на сервер при большой нагрузке.
Хоть люди из Mozilla и утверждают, что этот документ только история, все равно полезно прочитать — The Ultimate JavaScript Client Sniffer и Browser Detection and Cross Browser Support