Ну вот наконец яндекс, спустя полтора года, очухался и я получил ТИЦ 10

Правда, как оказалось, апдейт ТИЦ был аж 10 дней назад, и я его пропустил, хотя не скажу что я слежу за апдейтами. В общем то это мало что меняет. Но это можно назвать значимым событием для этого блога =)
Читать далее →
Асимметричное шифрование. Как это работает?
182 комментария
Мало кто знает как именно работает асимметричное шифрование. К примеру есть люди которые не считают протокол https какой-либо адекватной защитой передаваемых данных. И как правило на попытку убедить в обратном, они отвечают что-то в духе «если мы передаем зашифрованные данные, то мы должны сказать как их расшифровывать, а эту информацию можно перехватить и, следовательно, расшифровать данные». А на аргументы, что это не так и в основу положено асимметричное шифрование, поступает ответ «Ну и что?».
Ладно, я понимаю, знать все тонкости реализации асимметричного шифрования нужно далеко не всем. Но общий принцип работы, я считаю, должен знать каждый, кто как-либо связан с компьютерами.
Хочу вынести суть данного поста в эту аннотацию: Запомните, асимметричное шифрование безопасно, естественно при выполнении всех условий. И чтобы доказать это я попробую описать алгоритм понятным языком, чтобы каждый смог понять, что он безопасен. Встречайте Алису, Боба и Еву и передачу их секретного сообщения под катом.
Читать далее →
Необычная защита от PHP Include
7 комментариев
Давайте с вами подумаем кто такой хакер? Хакер — это не взломщик! Люди часто путают эти понятия. Хакер — это прежде всего человек с нестандартным мышлением, и в этом его сила, если можно так сказать.
Чтобы успешно противостоять хакеру, нужно также научится нестандартно мыслить. Как говорится, клин клином вышибают.
Сегодня я предложу вам очень необычный способ защитится от атак типа php include. Подходит он конечно далеко не всем. И если чесно защищает он не от самой атаки, а от ее обнаружения. Заинтриговал?
Читать далее →
Решаем проблему CGI и PHP.ini
3 комментария
Вспоминаем статью PHP и CGI. Обход ограничений безопасности. Основная мысль:
В общем мало или много кто знает, что при подключении php к апачу через cgi, есть возможность конфигурировать чуть ли не каждый скрипт отдельно. А если более конкретно, то для каждой папки с php скриптами может быть создан свой файл php.ini со своими настройками, которые перезапишут глобальные настройки.
А это создает огромную брешь в безопасности, т.к. можно обойти любые запреты и ограничения указанные в оригинальном php.ini. Причем на просторах интернета отсутствует какая либо внятная информация о запрете данного поведения
Наконец поднял для тестов сервер с fastcgi+php для тестов, и, во-первых, разобрался почему так происходит, а, во-вторых, нашел способ отключить это.
Читать далее →
SQL Injection Netcat 5.0 Extra
6 комментариев
Не так давно я уже писал о том что находил уязвимость в CMS NetCat. Но сегодня вот, совершенно случайно нашел еще одну уязвимость класса SQL Injection.
Уязвимость работает только на серверах где PHP работает через CGI (или FastCGI), сервера с PHP подключенным через модуль апача неуязвимы. Также необходима отключенная дирректива magic_quotes_gpc.
Если прикинуть соотношение подключения PHP к апачу через CGI и через mod_php как 50 на 50, и если считать что magic_quotes отключенны тоже в половине случаев, то получаем 25% уязвимых сайтов.
На оффициальном сайте написанно:
в 2012 году сайтов, успешно работающих на нашей CMS, создано более 18 000
Получается около 4500 уязвимых сайтов.
Уязвимость находится в генерации и обработке капчи.
http://netcat/netcat/modules/captcha/img.php?code=1'
Результат эксплуатации уязвимости отображается довольно забавно — на картинке =)
Подробнее о том как оно работает, как эксплуатировать и как защитится, читайте под катом
Читать далее →
Концепт защиты PHP сайта
24 комментарияВсе мы, так или иначе, хотели бы быть уверенны в том, что наш сайт или блог никто не сможет взломать. Но увы, реальность такова, что любая система уязвима, как бы сильна она не была бы защищена. Все упирается лишь в ресурсы и в упорство взломщика… Хм… Что то меня не туда потянуло… Будем считать это предисловием =)
Не так давно я писал о том как правильно загружать файлы на сервер. Но допустим вы взяли уже готовую CMS и не знаете, как там реализованна загрузка, да и вобще вся защита. Конечно, особо пытливые и грамотные разработчики изучат код этой цмс прежде чем поставят на свой сайт. Но что делать тем у кого нет столько времени?
Хорошо, или допустим вы из тех кто считает что безопасность и правильная настройка сервера лишней не бывает? Если так то добро пожаловать под кат.
Нет, в статье вы не найдете какой-то супер пупер плагин, фильтрующий все данные, который нужно приинклудить ко всем файлам. Моя идея заключается в использовании директивы auto_prepend_file и постройки списка разрешенных файлов… Но в общем читайте сами…
Данная идея у меня давно сидела в голове, но наконец у меня дошли руки, хоть ничего сложного тут и нету, и я смог эту систему реализовать и написать статью =)
Читать далее →
XML Data Retrieval
2 комментарияСтатья взята с Positive Research
(на данный момент, к сожалению, она не доступна на оригинальном сайте, и упоминаний о ней в интернете не осталось, но так как статья довольно интересная, то я решил выложить ее тут)
Язык XML потихоньку становится все более популярным, все чаще встречается в анализируемых веб-приложениях. И поэтому глубокие исследования в алгоритмах работы этого языка и создание новых способов атаки на него также становятся популярными: сейчас изучены техники, позволяющие читать данные с файловой системы с помощью ошибок (error-based attack), посимвольно перебирать содержимое XML-файлов с помощью XSD-схем (blind attack)…
Ничего не напоминает? :)
Да-да, когда-то давно таким же образом изучались атаки на язык SQL. Сейчас техники эксплуатации SQL-инъекций изучены максимально глубоко для большинства типов СУБД. Это же ждет и XML: он рано или поздно сдастся под напором пытливых умов. Мы же предлагаем вашему вниманию очередную ступень развития атак на XML, способ аналогичный методике Data Retrieval over DNS при эксплуатации SQL-инъекций.
Читать далее →
Почему надо чистить ноутбук
12 комментариевБуду отходить от сложившегося мнения, что у меня в блоге только содержательные статьи) Здесь ничего интересного нет, простой рассказ о том как я разбирал ноутбук.
Вот и ответ на вопрос «почему надо чистить ноутбук»:

Какой интересный кусочек довольно плотного «войлока»)
У меня довольно старенький ноутбук Toshiba Satellite A300. Профилактику делал ему год назад, отдав в сервис (тогда он тоже начал сильно греться, но я побоялся сам его разбирать).
Но вот последнее время мой ноут опять стал очень сильно греться, тормозить, и при сильных нагрузках отрубаться совсем. Помогало снижение частоты процессора, но впрочем это припарки мертвому, ибо работать за таким компом нереально. Сегодня вот наконец решился почистить ноут.
Читать далее →
Правильный ресайз прозрачных картинок на PHP
26 комментариев
Я думаю каждый веб программист сталкивался с задачей ресайза картинок. Впрочем это касается не только ресайза, а любой обработки изображений в своих проектах. И думаю каждый уже имеет свой небольшой велосипед, класс, функцию которая ресайзит картинки. Но задумывались ли вы о том, что ваш велосипед наверняка не умеет работать с прозрачными картинками?
Честь и хвала тем программистам, которые могут удержать все в голове, и при написании подобного функционала они не забыли про прозрачность. А я вот забыл в одном из своих проектов… Хотя, чесно говоря, я взял нагугленный пример, чутка переделал для себя и встроил в проект. Но кто же знал, что клиент любит загружать прозрачные картинки…
В большинстве случаев отресайзенные картинки получали черный фон вместо прозрачного (как на картинке в заголовке статьи). Новый фон конечно может получится любого цвета, это все же зависит от самой картинки, и от ее формата. Но данная проблема известна все же как «черный фон при ресайзе прозрачных картинок».
Читать далее →
А как Вы загружаете файлы на сервер?
20 комментариев
«…или почему фильтрация по черному списку это плохо?»
Представим обычную загрузку файлов с помощью php. Я думаю все с этим сталкивались. Отбросим извращенные варианты, типа хранения файлов в базе, их переименовывание и прочее. Возьмем именно обычную наипростейшую форму загрузки файлов.
Обычно это форма на хтмл, затем серверная валидация по расширению загружаемого файла и последующий перенос загруженного файла из временной папки в папку загрузок. Отбросим все миллионы ошибок, которые совершают программисты в этих, казалось бы простейших, вещах, и посчитаем что этот функционал реализован грамотно и без ошибок.
Встает вопрос, а как именно фильтровать расширения файлов? Существуют два варианта:
- По белому списку — составляем список допустимых расширений файлов, а все остальные блокируем
- По черному списку — составляем список блокируемых расширений, а все остальные загружаем
Беда в том что для реализации фильтрации по белому списку нужно предусмотреть все возможные варианты нужных расширений которые будет загружать наш скрипт. И если для мест где необходимо загружать только картинки — все просто, то во многих других случаях прийдется составить довольно большой список легитимных расширений. Поэтому многим разработчикам кажется, что следует пойти от обратного, и запретить опасные расширения.
И если в первом случае многие уверены, что будут залиты файлы только с требуемыми расширениями (в статье я расскажу вам как можно обойти и это), то вот во втором случае не все так просто.
Эта статья о том чем плоха фильтрация по черному списку, и как этот фильтр можно обойти. А также приятным бонусом добавлю способ обхода фильтра по белому списку (и даже это возможно! о как!)
