На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

Использование свойств файловой системы

Файловая система общедоступного сервера — это весьма "оживленное" место. В раз­ных местах остаются данные всех видов, что напоминает мусор на улицах после мно­голюдного концерта или парада. Для многих серверов проблема заключается в не­возможности поддержания порядка.
Есть несколько решений этой проблемы. Временные файлы должны храниться в безопасной области, недоступной для глаз злоумышленника. Это же касается и ре­зервных файлов. Это вопрос аккуратности.
Опять прибегая к аналогиям, обычный сервер можно рассматривать как участок земли для "сада" данных. Создаются копии этих данных, которые остаются в различ­ных местах. Временные и резервные файлы остаются доступными для всех желающих. Не устанавливается ограничивающих прав доступа к важным каталогам. В результате пираты могут обойти процедуру аутентификации при подключении к порносайту и получить непосредственный доступ к материалам конкурентов. Любое хранилище, в которое можно записать данные, становится источником распространения пиратского программного обеспечения (предназначен ли ваш сайт для этой цели?). Вы когда-нибудь наблюдали при подключении к UNIX-серверу, что осуществляется одновременная загрузка 1400 копий файла quake. iso? Большинство системных админист­раторов сталкивались с этой проблемой хотя бы однажды.
Обычно серверное программное обеспечение интенсивно использует файловую систему. В частности, Web-сервер всегда читает или исполняет файлы. Чем слож­нее сервер, тем сложнее гарантировать безопасность файловой системы. В Internet существует множество Web-серверов, которые разрешают читать или исполнять любой файл па жестком диске \ Программный код между потенциально квалифи­цированным хакером и файловой системой служит "красной тряпкой" для зло­умышленников и просто "просит", чтобы его взломали. Как только хакер получит доступ к хранилищу данных, можно поспорить, что он сумеет распорядиться им как следует.
Давайте рассмотрим уровни доступа между хакером и файловой системой. Ши­роко применяются несколько стандартных атак, например, простой запрос файлов и их получение. Однако для этого хакеру нужны хотя бы минимальные сведения о структуре файловой системы. Но в этом нет ничего сложного, ведь большинство систем очень похожи друг на друга. Более хитрые способы используются для полу­чения списка каталогов и составления "карты" неизвестной файловой системы.
Шаблон атаки: переменная пользователя передается в вызов функции файловой системы
В приложениях широко применяются обращения к функциям файловой системы. Во мно­гих случаях пользовательские данные используются, чтобы задать имена файлов и другие данные. Без соответствующего контроля безопасности это приводит к классическим пробле­мам безопасности, когда хакер получает возможность передавать различные данные в каче­стве параметров для вызовов функций файловой системы.
Существует две основные категории атак с помощью передачи входных данных: атаки на переполнение буфера (наиболее популярный метод) и передача данных в при­вилегированные вызовы функций API (лишь немного уступает по популярности ата­кам на переполнение буфера). В атаках этого типа предоставленные пользователем данные передаются в качестве аргумента вызову функции файловой системы. Рас­смотрим две основные формы этой атаки.
Использование имен файлов
ЕСЛИ пользователь должен передать программе имя файла, хакер может просто изменить имя этого файла. Рассмотрим файл журнала, имя которого задается исходя из имени сервера. Предположим, что популярное приложение для общения в чате пытается установить соединение с компьютером, IP-адрес которого, например, 192.168.0.100. Это чат-приложение хочет создать файл журнала для сеанса. Сна­чала устанавливается соединение с DNS-сервером и выполняется поиск по заданно­му IP-адресу. DNS-сервер возвращает соответствующее имя, например server. exploited.com. После получения искомого имени чат-приложение создает файл журнала под названием server.exploited.com.LOG. Догадайтесь, как хакер ис­пользует подобный механизм в своих целях?
Рассмотрим, что произойдет, если хакеру удалось взломать DNS-сервер. Или, пред­положим, он хочет исказить содержимое кэша DNS на клиентском компьютере. Теперь


он опосредованно управляет именем файла журнала, задавая имя DNS. Хакер может предоставить DNS-ответ в виде server. exploited/ ../../../.. /NIDS/Events . LOG, что, вероятно, приведет к уничтожению ценного файла журнала.
Переход к другим каталогам
Предположим, что Web-приложение предоставляет пользователю доступ к набо­ру отчетов. Путь к каталогу отчетов может выглядеть как web/username/reports, где username — это имя пользователя. Если имя пользователя передается в скры­том поле, злоумышленник может предоставить подложное имя пользователя напо­добие ../../../../.. /WINDOWS. Если хакеру необходимо удалить окончание строки (например /reports), то он может просто добавить достаточное число сим­волов, чтобы эта строка была обрезана. Альтернативным вариантом является добав­ление в качестве завершающего символа NULL (%00), чтобы задать точку заверше­ния строки.
Шаблон атаки: добавление завершающего символа NULL
В некоторых случаях, особенно при использовании языка написания сценариев, строка данных для проведения атаки может заканчиваться символом NULL. Используя альтернатив­ный вариант написания символа NULL (например %00), можно добиться желаемого преоб­разования символов. Если в строках разрешается передавать символы NULL ИЛИ преобразо­вание не предполагает автоматического добавления символа завершения строки NULL, TO В результирующей строке могут содержаться многочисленные символы NULL. В зависимости от метода анализа в языке написания сценариев, символ NULL может быть использован для удаления последующих данных при атаках с внесением вредоносных данных.
Можно назвать следующие варианты написания символа NULL. РАТН%ОО
РАТН[0х0 0]
РАТН[альтернативное   написание   символа NULL] <scriptx/script>%00
Шаблон атаки: окончание строки, символ null и обратная косая черта
Если строка передаваемых данных проходит через определенный фильтр, то завершаю­щий символ NULL может оказаться недопустимым согласно правилу этого фильтра. Использо­вание альтернативных вариантов написания символа NULL позволяет хакеру вставить символ NULL в середину строки, а в качестве окончания этой строки использовать разрешенные дан­ные, чтобы избежать блокирования фильтром. В качестве примера можно привести фильтр, который проверяет наличие завершающего символа косой черты. Если возможен ввод дан­ных, но в конце строки должна присутствовать косая черта, то хакер может использовать аль­тернативный вариант кодировки символа NULL и внедрить его в середину строки.
Еще раз приведем примеры популярных форм подобной атаки.
РАТН%00%5С РАТН[0х00][0х5С]
РАТН[альтернативная   кодировка  NULL][дополнительные   параметры для прохождения  через фильтр]


Ввод данных для перехода в нужный каталог
В следующем адресе URL приведен пример довольно простого ввода строки вредоносных данных.
http://getAccessHostname/sekbin/
helpwin.gas.bat?mode=&draw=x&file=x&module=&locale=[путь к каталогу] [%00][%5C]&chapter=
Эта атака периодически повторяется с определенной степенью регулярности. Существует множество вариантов ее реализации. Затратив не так уж много времени на внесение данных для Web-приложений, всегда можно обнаружить новую про­грамму атаки.
Шаблон атаки: переход в нужный каталог
Как правило, текущим рабочим каталогом для процесса является какой-то подкаталог. Чтобы получить какие-то более интересные данные из системы, хакер может предоставить от­носительный путь для перехода из одного каталога в другой (более интересный для него). Этот метод позволяет не использовать полные имена файлов (те, которые начинаются с корневого каталога). Удачное свойство метода использования относительных путей заключается в том, что после перехода в корневой каталог файловой системы дополнительные попытки подняться еще на один уровень просто игнорируются. То есть, для гарантированного перехода в корне­вой каталог достаточно ввести побольше наборов";. /" в передаваемой строке данных.
Если текущий рабочий каталог является подкаталогом третьего уровня, то срабо­тает следующая команда перехода.
../../../etc/passwd
Обратите внимание, что она эквивалентна следующей команде.
../../../../../../../../../../../../../etc/passwd
Ниже приведено несколько распространенных строк для перехода в нужный каталог.
../../../winnt/
. Л . Л . Л. .\winnt
../../../../etc/passwd
../../../../../boot.ini
Переход к нужному файлу, строка запроса и HSphere
Это простые примеры, но они описывают реальные атаки. Удивительно, но такие уязвимые места действительно существуют. Их наличие свидетельствует о том, что Web-разработчики обычно гораздо меньше задумываются о безопасности про­граммного кода, чем простые программисты, работающие с языком С.
Ошибка! Недопустимый объект гиперссылки.
Ъ ../../etc/passwd
Переход к нужному файлу, строка запроса и GroupWise
Интересно, что для этой атаки требуется использование завершающего символа NULL.
Ошибка! Недопустимый объект гиперссылки.   webacc?User.html = ../../../../../boot.ini%00


Использование возможностей программы для сетевого мониторинга
От этой проблемы страдают Web-приложения всех видов и всех размеров. В большей части серверного программного обеспечения отсутствует уязвимое место, позволяющее хакеру непосредственно перейти в нужный каталог. Однако в некото­рых редких случаях можно найти систему, в которой вообще не выполняется фильт­рации входных данных. Для загрузки файлов достаточно использовать следующую HTTP-команду.
GET    /cgi-bin/../../../../WINNT/system32/target.exe HTTP/1.0
После появления многочисленных уведомлений об этой проблеме компании ис­правили ошибку на своих серверах. Однако во многих ситуациях исправление было неполным. Существует альтернативный вариант проведения этой атаки с помощью URL-адреса, подобного приведенному ниже.
GET     /cgi-bin/PRN/../../../../WINNT/system32/target.exe HTTP/1.0
Этот альтернативный вариант является хорошим подтверждением того, почему создание "черных списков" блокируемых данных достаточно сложно и всегда пред­почтительнее создавать "белые списки".
Рассматриваемое программное обеспечение также нередко предоставляет интер­фейс на основе PHP-сценариев для взаимодействия с программой мониторинга се­тевых ресурсов (например Alchemy Eye). Это позволяет хакеру получать нужные файлы непосредственно по HTTP.
Ошибка! Недопустимый объект гиперссылки.
5>    =album01&id=aaw&op=modload&name=gallery&. le=index&include
Ч> =../../../../../../etc/hosts
Переход к нужному каталогу с помощью базы данных Informix
Чтобы нас не называли лентяями, которые не добавили в список уязвимых про­грамм популярную базу данных, попробуйте использовать следующую строку для атаки на базу данных Informix.
Ошибка! Недопустимый объект гиперссылки. хос^/ifx^LCP../../../etc/

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика