общественности. Найти их – наша с тобой задача. Освободи свой разум, перешагни грань неведомого и зайди на сервер с той стороны, с которой на него еще никто не заходил.
Вскрытие скрипта
Нормально работающий Web-сервер никогда не выдает исходный код скрипта, а только результат его работы. Между тем, вездесущие ошибки реализации приводят к тому, что код скрипта в некоторых случаях все-таки становится доступным, причем виновником может быть как сервер, так и обрабатываемый им скрипт. Естественно, в скриптах ошибки встречаются намного чаще, поскольку их пишут все кому не лень, порой не имея никакого представления о безопасности. Серверы же проходят более или менее тщательное тестирование, и основные дыры обнаруживаются еще на начальной стадии.
Подробнее об этом можно прочитать в моей статье «Безопасное программирование на языке Perl» (kpnc.opennet.ru/safe.perl.zip).
Исследуя тело скрипта, можно нарыть немало интересного, например, имена полей, названия таблиц, мастер-пароли, хранящиеся открытым текстом, и т.д.
ЛИСТИНГ
…
if ($filename eq «passwd») #проверка имени на корректность
…
Определение наличия SQL
Прежде чем начинать атаку на SQL-сервер, неплохо бы определить его присутствие, а в идеале – еще и распознать тип. Если сервер расположен внутри DMZ (где ему находиться ни в коем случае нельзя), то атакующему достаточно просканировать порты.
Противодействие вторжению
Когда ручной поиск дыр надоедает, взломщики, в сердцах обложив всех Web-программистов смачным матом, запускают свое средство автоматического поиска уязвимостей и идут на перекур.
Одним из таких средств является Security Scanner, разработанный компанией Application Security и официально предназначенный для тестирования MySQL на стойкость к взлому. Ну, хакерам официоз не грозит. Как и всякое оружие, Security Scanner может использоваться и во вред, и во благо.
Он позволяет искать дыры как в самом сервере БД, так и в Web-скриптах. При этом БД проверятся на предмет уязвимости к атакам типа Denial of Service, наличия слабых паролей, неверно сконфигурированных прав доступа и т.д. В скриптах сканер позволяет обнаружить ошибки фильтрации ввода, позволяющие осуществлять SQL-инъекции, что значительно упрощает атаку.
Никита Кислицин, редактор рубрики «Взлом» журнала «Хакер»:
«Базы данных всегда были лакомым кусочком для хакеров. И в этом нет ничего удивительного: в них можно найти миллионы номеров кредитных карт, пароли к сетевым ресурсам, конфиденциальную информацию и даже планы террористических организаций по захвату цивилизованного мира. Увы, порой администраторы сетевых баз данных не уделяют должного внимания безопасности, часто их подводят и программисты, разрабатывающие программные интерфейсы. Следует знать, что в более чем половине случаев взлома SQL-серверов используется технология SQL-инъекции в разных ее проявлениях, то есть эти проблемы лежат на совести Web-программистов. Однако бывают и вовсе комические случаи. За примером далеко ходить не надо. „Xакер“ недавно писал о взломе cygwin.com и экспроприации оттуда вкуснейшей базы данных. Высокопрофессиональный админ этого сервера почему-то решил не указывать вообще никакого пароля к администраторскому аккаунту MySQL, что и позволило нашему партизану при помощи детского бага в скрипте совершить столь дерзкую вылазку».
Размещать сервер базы данных на одном узле с Web-сервером категорически недопустимо не только по техническим, но и по юридическим соображениям.
Сервер БД, как и любой другой сервер, подвержен ошибкам проектирования, среди которых доминируют переполняющиеся буфера.
Многие сервера хранят информацию об авторизации в кукисах (cookie), находящихся на машинах удаленных пользователей.
Почти 30% всех скриптов в сети подвержены ошибке SQL-инъекции.
Запросы, передаваемые методом POST, протестированы значительно хуже, поскольку передаются скрыто от пользователя и не могут быть модифицированы из браузера.
Сетевая дактилоскопия / Технология remote fingerprinting
Антон Карпов ([email protected])
Идея удаленно определять версию ОС или запущенного на хосте сервиса не нова. Все знают, что популярный сканер nmap, будучи запущенным с параметром -O, пытается определить версию операционки. Известно также, что около года назад тот же nmap научился определять и версии сервисов, запущенных на сканируемом хосте. Наша задача – понять технологию работы сканера, а также убедиться в том, что одним лишь nmap'ом понятие fingerprinting не ограничивается.
Пакетные игры
Сканер nmap, запущенный с повышенной вербозностью (параметр -vvv), выдает примерно следующее:
ЛИСТИНГ
TCP/IP fingerprint:
SInfo(V=3.55%P=i386-portbld-freebsd6.0%D=7/29%Time=410833C8%O=21%C=-1)
T1(Resp=Y%DF=Y%W=FFFF%ACK=S++%Flags=AS%Ops=MNWNNT)
T2(Resp=N)
T3(Resp=N)
T4(Resp=Y%DF=Y%W=0%ACK=S++%Flags=R%Ops=)
T5(Resp=N)
T6(Resp=N)
T7(Resp=N)
PU(Resp=N)
Многие не обращают внимания, а ведь в этом кажущемся мусоре и содержится вся сермяжная правда об операционке. Это результаты восьми тестов для определения версии ОС; их, разумеется, намного больше, но мы рассмотрим только стандартные. Никто не сможет рассказать о них более подробно, чем Fyodor в своей статье, которая была опубликована в езине Phrack #54 в далеком 1998 году.
Первая строчка – просто информация о системе, на которой работает nmap, версия сканера, оси, на которой он собран, и т.п.
Далее идет набор из семи тестов (T1-T7), каждый из которых заключается в посылке специально сформированного TCP-пакета на целевой хост и изучении ответа.
Итак, первый тест – это отправка пакета с установленным флагом SYN на открытый порт. Это штатный запрос, и система обязана на него прореагировать. Ответ (в скобках) интерпретируется следующим образом. Resp=Y означает, что от системы был получен ответ. DF=Y означает, что бит Don't Fragment, выставленный в отправленном пакете, сохранился. W – размер окна (Window Size) удаленной системы. ACK – значение Acknowledge Number в ответном пакете, S++ говорит о том, что оно было равно полученному ISN