Поиск по этому блогу

понедельник, 14 февраля 2011 г.

XSS (Cross Site Scripting)

XSS (Cross Site Scripting) - межсайтовый скриптинг, уязвимость, которой уже около 13 лет, но при этом ее возможности ничуть не ослабли. Причина в том, что тут атака будет идти не совсем на сервер. Атака будет идти уже на пользователей.
Аббревиатура Cross Site Scripting выглядит несколько неправильно на первый взгляд, но причина в том, что аббревиатура CSS уже используется (Cascading Style Sheets, каскадные таблицы стилей).


Что же это за уязвимость?

Чем-то уязвимость напоминает уже описанный PHP-include, вместе с тем кардинально от него отличается. Итак, данная уязвимость позволяет злоумышленнику встраивать в страницу свои скрипты. Сама по себе возможность скриптов не такая опасная, однако она позволяет украсть cookies, в том числе и админские.

Уязвимость бывает двух видов. 
  1. Пассивная XSS. Хотя она и позволяет злоумышленнику украсть cookies, провернуть ее крайне трудно, потому их не очень любят. Злоумышленник должен сгенерировать вредоносный запрос, дать ссылку админу, убедить его в том, что нужно щелкнуть (социальная инженерия), и в случае, если админ в момент захода был залогинен, злоумышленник получит куки.
  2. Активная XSS. Тут все просто. Она не требует никаких действий со стороны пользователя, она сработает автоматически при открытии страницы. Пожалуй, тут стоит привести пример.
Представим, что на этом сайте блога есть XSS уязвимость (надеюсь, что нет). Некий Вася Пупкин заходит на сайт, ковыряется в моих сообщениях, и решился все-же написать комментарий. Только вместо "Молодец, хорошо сделал/ Шел бы ты отсюда с таким блогом" он набрал комментарий <script>alert()</script>. Отправляет комментарий, обновляет страницу. Разумеется, что когда начнет обрабатываться его комментарий, на странице появится небольшое окошко. Юный хацкер правит скрипт, чтобы он был незаметным, ну и чтобы позволил ему получить мои куки. Ждет, когда я захожу в сеть, проверяю комментарии. Пока я сижу и радуюсь, он уже с моими куками готовит нецензурную запись на главной странице. 


(Написал, и прям как то не по душе стало. Надо вернуть премодерацию назад)


Как же бороться с этой напастью?

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

воскресенье, 13 февраля 2011 г.

PHP Include. Что это, с чем едят, что же делать?

PHP Include - столь же опасная уязвимость, как и SQL-инъекция, да и примерно такая же популярная. Если данные, используемые как параметры функцией include, не проверяются, это может привести к печальным последствиям (или радостным, для кого-то).


Что за функция include? Какая тут вообще уязвимость?

Все просто. Функция include подключает к PHP сценарию любые дополнительные модули, исполняя их (будет выполнено все между тегами <?php (<?) и ?>, если есть что-то вне этих тегов - просто вывод на экран).
Зачастую вызов функции выглядит так: include($filename), где параметр функции - имя (и путь) модуля, который внезапно оказался необходим. При этом в качестве параметра можно передавать не только путь, но и URL.






Представим себе такую картину. Гений IT (где-то 5-6 класс) поднял свой веб-сервер, красота и так далее. С помощью функции include он подгружает следующие модули:
  home.php 
  aboutme.php
  againaboutme.php
  contacts.php
  ...
Идея проста. Нужна домашняя страница? Вот твой home.php. Срочно нужны контактные телефоны? Contacts.php. Все просто.

Такой же гений ИТ, только немного почитавший про то, как стать кулхацкером, меняет запрос на все тот же пресловутый index.php?file=/etc/passwd.  Бинго! Ему выведется файл passwd на экран (на самом деле, процесс этот слегка труднее, но для понимания процесса сойдет).
А если он введет URL, по которому будет расположен некий вредоносный скрипт? А судя по всему, он его введет.

В общем, уязвимость достаточно опасная. Напрашивается вопрос:

Как с ней бороться?

Ну методов то много. Но два самых первых, напрашивающихся - это:

  1. Экранируй кавычки, слэши, тире, любые спецсимволы, быть которых не должно в параметре. Это уже сильно порадует кулхацкера. Разумеется, все твои модули тогда будут в одной папке, иначе зачем экранировал?
  2. Можно, конечно, поступить более жестко: составить список модулей, если пытаются запустить модуль, которого тут нет, рисуем пативен на всю страницу. 
Хоть уязвимость и известная, но о ней почему-то забывают. Парадокс.



SQL-инъекция.

SQL-инъекция. Внедрение SQL-кода. Называйте как хотите. Вроде бы такая древняя уязвимость, но сейчас ее можно встретить очень часто.
Wiley Web Application Hacker's Handbook утверждает, что SQL-инъекция встречается в 36% уязвимых веб-приложений. Не берусь проверять эту информацию, но стоит признать, что будь это число в три раза меньше, это все равно бы осталось проблемой.


Что такое SQL-инъекция?

SQL-инъекция (внедрение SQL-кода) - способ взлома сайтов, программ, работающих с базами данных, основанный на внедрении в запрос произвольного SQL-кода.

Иными словами, из-за некорректной обработки вводных данных мы можем составить такой запрос, который позволит нам прочитать содержимое любых таблиц (например, users), добавить новую таблицу либо удалить существующую. Это далеко не все возможности SQL-инъекции, но и их достаточно, чтобы оценить опасность.


Как это выглядит?

Часть информации взята с Википедии, там очень наглядный пример, потому и будем его использовать:

Сервер создает SQL запрос на основе параметра id (допустим, номер страницы, номер новости, и т.д.). Пусть обрабатывать это будет такой РНР-скрипт:

   # Предыдущий код скрипта...   $id = $_REQUEST['id'];
   $res = mysql_query("SELECT * FROM table WHERE id = $id");
   # Следующий код скрипта...
Когда передается id, равный числу (обычный запрос), (script.php?id=10),  составляется SQL запрос:
   SELECT * FROM table WHERE id = 10
Некто передает в качестве параметра id строку -1 OR 1=1 (script.php?id=-1+OR+1=1).
Запрос видоизменится:
 
   SELECT * FROM table WHERE id = -1 OR 1=1
Значит, мы можем изменять запрос таким образом, что логика выполнения запроса изменится тоже. Например, классический случай: в поле Login вводится строка, из-за которой не происходит проверка пароля, так как эта часть отбрасывается в комментарий, а происходит проверка на истинность заведомо истинного события, то же сравнение 1=1.

Как с этим бороться?

Предвижу, что многие скажут следующее: "Это элементарно, я знаю это уже давно". Но несмотря на это, всегда находятся умники, которые, даже зная о SQL-инъекции, о ее опасности, забывают предотвратить ее возможность.

Итак, вот способы борьбы с SQL-инъекцией:

  1. Берем в кавычки все текстовые параметры. В параметре экранируем спецсимволы.
  2. Проверяем численные параметры, если не число - не выполняем.
  3. Если известна максимальная длина параметра (к примеру, максимальный id=37, два символа), то из всего введенного параметра оставляем некое разрешенное число символов слева (в нашем примере - 2 символа слева). Трудновато провести инъекцию, используя 2 символа, особенно, если они заняты.
  4. Многие сервера баз данных поддерживают возможность отправки параметризованных запросов. При этом параметры внешнего происхождения отправляются на сервер отдельно от самого запроса либо автоматически экранируются клиентской библиотекой.

пятница, 11 февраля 2011 г.

DDoS. Как с ним бороться?

DDoS (distributed denial of service attack).

Цель DDoS - вывести сервер из рабочего состояния (положить, заставить упасть). Самые популярные причины:
  1. За время простоя конкурент несет потери (финансовые, если главный злой - то и человеческие)
  2. Конкурент понесет финансовые потери, так как задаром поднимать не будут.
  3. Вот у  Васьки с соседнего подъезда как зависнет сейчас!
Мало кто будет заходить на сайт, если тот не работал неделю-две. Если владелец сайта вел Серьезный бизнесс, то ему можно посочувствовать.

DDoS подразумевает метод грубой силы - забиваем канал, открывая максимально возможное количество соединений на некий сервис или отправляя огромное кол-во информации, которое сервер не в состоянии обработать. Все это ведет к потере скорости или полной остановке (зависанию) атакуемого ресурса. 
Для непонятливых - представим, что есть гигантская стена с 500 дверями. У каждой двери охранник, который должен обыскать человека (он делает это достаточно быстро, если человек обычный). Регулярно через эти двери проходят обычные люди, все работает как часы.
Внезапно 100 вождей племен Злых Троллей решило сделать подлянку. Каждое племя разбилось на 5 отрядов (а племена большие, считай бесконечные), и отправляет эту ораву к дверям. Мало того, что все 500 дверей заняты, так еще и очереди гигантские (троллей куча, они будут бежать, пока вождю не надоест), да еще каждого тролля надо обыскать (а он толстый, зараза, пока обыщещь). Обычный человек наврядли сможет пробиться к двери.


DDoS - это distributed атака, то есть распространенная,  сервер атакуется не в одиночку, зачастую используются сотни и тысячи машин. Очень часто владельцы этих машин и не понимают, что они DDoSят.
Как такое возможно?

Зомби - зараженный сервер, который может выполнять команды управляющего сервера. Заражается через дыры ОС, троянов и т.д.



КАК БОРОТЬСЯ С DDoS?
1) На уровне сервера. На сервере необходима функция удаленной перезагрузки, вывода консоли сервера на иной IP по ssh. Так как порой ддосят ssh на сервере вместе с самим вебсервером, эти две функции будут просто спасением на первом этапе.

2) На уровне сервисов сервера.  Аудит безопасности должен быть сделан, в сервисах не должно быть уязвимостей.

 3) На уровне сети. Блокируем ping, trace, прячемся под nat. Скрываем ip.

4) На уровне провайдера. Через анализ пакетов или через блокирование ip адресов.


5) На уровне железа. Придется потратиться на решения фирм Сisco, 3com, nortel и тп. Комплексные решения обойдутся около 50-80 тыс долларов.

6) На уровне админов вашего сервера. Ищите в логах машину, которая даст вам информацию. При некоей доле везения вы найдете атакующего.

При написании статьи была взята информация с сайта http://articles.org.ru

Тор. Анонимен ли он?

http://www.pgpru.com/forum/anonimnostjvinternet/podozriteljnajainformacijaodeanonimizaciitor?show_comments=1&p=1#Comment21799

Честно говоря, настораживает. Ваши мнения, господа?

(Классика) Интернет-анонимы объявили войну петербургским подросткам, которые убили прохожего колесом

Анонимные "мстители" из интернета утверждают, что установили личные данные подростка, который подозревается в убийстве по неосторожности прохожего Виктора Губина в Санкт-Петербурге. Кроме того, они обнародовали шокирующую переписку предполагаемого убийцы с любимой девушкой. Пользователи Сети опасаются, что подросток, в порыве ярости сбросивший с 11 этажа автомобильное колесо, которое попало в голову Губину, останется безнаказанным, поэтому решили расправиться с ним самостоятельно - средствами виртуальной травли.
Следователи, возбудившие уголовное дело по статье "Причинение смерти по неосторожности", быстро вычислили подозреваемого и его девушку, пишет газета "Комсомольская правда", но их имен и фотографий по понятным причинам не публиковали. Зато это сделали активисты, назвавшие себя "Независимым комитетом расследования": они взломали личную переписку 16-летнего Эрика Николаева и 15-летней Дарьи Клюкиной и вместе с их адресами выложили на всеобщее обозрение.
- Новое видео: женщина бросила раненого умирать

Судя по переписке, больше всего Дарья переживает не из-за совершенного поступка, а из-за того, что родители запретили ей встречаться с Эриком, и теперь им остается только переписываться и встречаться тайком по несколько минут в день. "Пипец, у нас в стране уже любить запрещают из-за убийства. Бред!" - возмущается Клюкина.
"Киса, все будет хорошо"

"Я люблю тебя, убийца мой. Только не грузись на эту тему, тебя это коснулось, и все в порядке. Я понимаю, что тебя совесть мучает, но что с этим поделать? Судьба у мужика такая", - якобы пишет Дарья Эрику. "Мы на видео красавчики. Мы самые лучшие. Только мы можем сотворить такое и угорать. Киса, не волнуйся, все будет хорошо", - якобы отвечает Эрик.

"На меня завели дело. Когда-нибудь будет суд, на котором будут решать, что делать со мной. Маме сейчас 30 тысяч искать надо будет", - цитируют анонимные "следователи" комментарий Эрика по поводу заведенного дела. Для допроса молодого человека задержали, но потом отпустили под подписку о невыезде.


Друг или брат Эрика под ником Masta Blax пишет: "Короче, надо найти того, кто нас заложил". Клюкина отвечает ему: "И скинуть на них колесо!" "Хах) Нее... Просто я (лицо) хочу увидеть этого человека", - пишет Masta Blax.
Фрагменты переписки, выложенные "Независимым комитетом расследований", свидетельствуют также, что Дарья забеременела от Эрика и что он употребляет наркотики.
Мать подростка, обвиняемого в невольном убийстве, уверена, что в смерти 44-летнего Виктора Губина виноват не только ее сын, но и сотрудники скорой помощи. "Если бы пострадавшего повезли не в Александровскую больницу, которая находится далеко от места происшествия, а в ближайшую, мужчину можно было бы спасти", - заявила она Life News.
Уполномоченная по правам ребенка: травля недопустима

Уполномоченная по правам ребенка в Санкт-Петербурге Светлана Агапитова считает неэтичной развернувшуюся в интернете и ряде электронных СМИ травлю подростков. "Это очень неправильно и неэтично.... Публикации в таком виде имен и фотографий этих подростков недопустимы", - сказала Агапитова в четверг РИА "Новости".
Она напомнила, что следственные органы пока не установили вину подростков. Агапитова добавила, что аппарат омбудсмена не имеет рычагов воздействия на интернет-сайты и СМИ и не может заставить убрать эту информацию. В то же время, по ее словам, попробовать добиться этого могут законные представители подростков, то есть родители.
Кроме того, Агапитова не исключила, что этим вопросом может заняться следственный комитет. "Мы вчера (в среду) вечером рассказали им об этом. Представители следственного комитета были возмущены", - добавила она.
"Независимый комитет расследования" успел отреагировать на это высказывание Агапитовой: "К счастью, в стране еще остались добропорядочные люди, развернувшие в интернете травлю малолетних изуверов. Но уполномоченный по правам ребенка в Санкт-Петербурге Светлана Агапитова считает эту травлю, видите ли, неэтичной. Прочие факторы уважаемого слугу народа не волнуют. Горжусь Россией!"

Новое видео: женщина прошла мимо раненого, бросив его умирать
Тем временем оперативники Санкт-Петербурга разыскивают женщину, которая стала свидетельницей происшествия, но при этом оставила пострадавшего в беде. Камеры видеонаблюдения, установленные на доме по улице Ольги Форш, зафиксировали свидетельницу драмы: женщина обернулась на шум, на несколько секунд приостановилась, а потом продолжила свой путь, даже не вызвав скорую помощь, сообщает Life News, публикуя видеозапись.
Женщина могла спасти жизнь 44-летнему Владимиру Губину, считает сотрудница больницы. "В таких случаях каждая минута на вес золота. Скорую вызвали поздно. Если бы врачи оказались на месте раньше, шансов на спасение человека было бы намного больше", - сказала медработница.

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

Материал взят с сайта NEWSru.com
http://www.newsru.com/russia/19nov2010/wheelkill.html

Все помнят этот классический случай. Анонимный мститель, ты Герой Интернета.

Анонимные мстители.

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

Мы помогли задержать убийцу, того, кто кинул колесо в человека. Убийца не ушел от расплаты. Так будет с каждым.

Мы помогли найти многих людей. Некоторые этого не заслуживали, некоторые были не достойны этого. Но мы их нашли, ибо они не подумали о своей безопасности. Так будет с каждым.

Мы сделали много полезного, хорошего. Никто не знает об этом. Это великолепно. Нам не нужна слава. Мы будем расти, а они деградировать. Так будет с каждым.

Мы - Легион. Мы - Аноним. Мы не прощаем. Так будет с каждым.

П.С. Просто накатило вдохновление, решил наваять. Не поесть ли мне томатной пасты на ужин?