Ниже приведено сообщение, выдаваемое сервером при вводе символа апострофа (") в качестве имени пользователя (листинг 1.15).
   Листинг 1.15. Сообщение сервера об ошибке при вводе недопустимого символа
   An Error Has Occurred.
   Error Message:
   System.Data.OleDb.OleDbException: Syntax error (missing
   operator) in query expression 'username = ''' and password =
   'g''. at
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling (
   Int32 hr) at
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult
   ( tagDBPARAMS dbParams, Object& executeResult) at
   В первой части сообщения выводится часть запроса, вызвавшего ошибку. По этой информации злоумышленник может получить информацию об используемых параметрах запроса и месте запроса, в котором осуществляется внедрение кода.
   Обратный путь в директориях
   Данная техника атак направлена на получение доступа к файлам, директориям и командам, находящимся вне основной директории веб-сервера. Злоумышленник может манипулировать параметрами URL с целью получить доступ к файлам или выполнить команды, располагаемые в файловой системе веб-сервера.
   При подобных атаках потенциально уязвимо любое устройство, имеющее веб-интерфейс. Многие веб-серверы ограничивают доступ пользователя определенной частью файловой системы, обычно называемой web document root или CGI root. Эти директории содержат файлы, предназначенные для пользователя, и программы, необходимые для получения доступа к функциям веб-приложения. Большинство базовых атак, эксплуатирующих обратный путь, основаны на внедрении в URL-символов ../, чтобы изменить расположение ресурса, который будет обрабатываться сервером. Поскольку большинство веб-серверов фильтруют эту последовательность, злоумышленник может воспользоваться альтернативными кодировками для представления символов перехода по директориям. Популярные приемы включают использование альтернативных кодировок, например Unicode (..%u2216 или ..%c0%af), использование обратного слэша (..\) в Windows-серверах, символов URLEncode (%2e%2e%2f) или двойной кодировки URLEncode (..%2 55c). Даже если веб-сервер ограничивает доступ к файлам определенным каталогом, эта уязвимость может возникать в сценариях или CGI-программах. Возможность использования обратного пути в каталогах довольно часто возникает в приложениях, использующих механизмы шаблонов или загружающих текст их страниц из файлов на сервере. В этом варианте атаки злоумышленник модифицирует имя файла, передаваемое в качестве параметра CGI-программы или серверного сценария. В результате злоумышленник может получить исходный код сценариев. Довольно часто к имени запрашиваемого файла добавляются специальные символы – такие как %0 0 – с целью обхода фильтров. Следующие примеры иллюстрируют обратный путь в каталогах вебсервера:
   httр://example/../../../../../some/file
   httр://example/..%255c..%255c..%255csome/file
   httр://example/..%u2216..%u2216some/file
   Обратный путь в каталогах веб-приложения:
   ♦ исходный URL: httр://example/foo.cgi?home=index.htm;
   ♦ атака: httр://example/foo.cgi?home=foo.cgi.
   В приведенном сценарии веб-приложение генерирует страницу, содержащую исходный код сценария foo.cgi, поскольку значение переменной home используется как имя загружаемого файла. Обратите внимание, что в данном случае злоумышленник не использует специальных символов, поскольку целью является файл в той же директории, в которой располагается файл index.htm. Кроме того, возможен вариант обратного пути в каталогах веб-приложения с использованием специальных символов:
   ♦ исходный URL: http://example/scripts/foo.cgi?page=menu.txt;
   ♦ атака: http://example/scripts/foo.cgi?page=../scripts/foo.cgi%00txt.
   В приведенном примере веб-приложение загружает исходный текст сценария foo.cgi. Атакующий использует символы ../ для перехода на уровень выше по дереву каталогов и перехода в директорию /scripts. Символ %0 0 используется для обхода проверки расширения файла (приложение позволяет обращаться только к файлам TXT) и чтобы расширение не использовалось при загрузке файла.
   Предсказуемое расположение ресурсов
   Предсказуемое расположение ресурсов позволяет злоумышленнику получить доступ к скрытым данным или функциональным возможностям. Путем подбора злоумышленник может получить доступ к содержимому, не предназначенному для публичного просмотра. Временные файлы, файлы резервных копий, файлы конфигурации или стандартные примеры часто являются целью подобных атак. В большинстве случаев перебор может быть оптимизирован путем использования стандартного соглашения об именах файлов и директорий сервера. Получаемые злоумышленником файлы могут содержать информацию о дизайне приложения, информацию из баз данных, имена машин или пароли, пути к директориям. Скрытые файлы также могут содержать уязвимости, отсутствующие в основном приложении. На эту атаку часто ссылаются как на перечисление файлов и директорий (Forced Browsing, File Enumeration, Directory Enumeration). Вот и пример: атакующий может создать запрос к любому файлу или папке на сервере. Наличие или отсутствие ресурса определяется по коду ошибки (например, 4 04 в случае отсутствия папки или 4 03 в случае ее наличия на сервере). Ниже приведены варианты подобных запросов.
   ♦ Слепой поиск популярных названий директорий: /admin/, /backup/, /logs/, /vulnerable file.cgi.
   ♦ Изменение расширений существующего файла (/test.asp): /test.asp. bak, /test.bak, /test.
   ♦ Логические атаки (Logical Attacks). Атаки данного класса направлены на эксплуатацию функций приложения или логики его функционирования. Логика приложения представляет собой ожидаемый процесс функционирования программы при выполнении определенных действий. В качестве примеров можно привести восстановление паролей, регистрацию учетных записей, аукционные торги, транзакции в системах электронной коммерции. Приложение может требовать от пользователя корректного выполнения нескольких последовательных действий для решения определенной задачи. Злоумышленник может обойти или использовать эти механизмы в своих целях.
   Злоупотребление функциональными возможностями
   Данные атаки направлены на использование функций веб-приложения с целью обхода механизмов разграничения доступа. Некоторые механизмы веб-приложения, включая функции обеспечения безопасности, могут быть использованы для этих целей. Наличие уязвимости в одном из, возможно, второстепенных компонентов приложения может привести к компрометации всего приложения. Уровень риска и потенциальные возможности злоумышленника в случае проведения атаки очень сильно зависят от конкретного приложения. Злоупотребление функциональными возможностями очень часто используется совместно с другими атаками, такими как обратный путь в директориях и др. К примеру, при наличии уязвимости типа "межсайтовое выполнение сценариев" в HTML-чате злоумышленник может использовать функции чата для рассылки URL, эксплуатирующего эту уязвимость, всем текущим пользователям. С глобальной точки зрения, все атаки на компьютерные системы являются злоупотреблениями функциональными возможностями. Особенно это относится к атакам, направленным на веб-приложения, которые не требуют модификации функций программы. Примеры злоупотребления функциональными возможностями включают в себя:
   ♦ применение функций поиска для получения доступа к файлам за пределами корневой директории веб-сервера;
   ♦ использование функции загрузки файлов на сервер для перезаписи файлов конфигурации или внедрения серверных сценариев;
   ♦ реализацию отказа в обслуживании путем использования функции блокировки учетной записи при многократном вводе неправильного пароля.
   Ниже приведены примеры подобных уязвимостей, взятые из реальной жизни.
   Программа FormMail представляет собой приложение на языке PERL, используемое для передачи данных из HTML-формы на указанный почтовый адрес. Этот сценарий довольно удобно использовать для организации функции обратной связи на сервере. К сожалению, данная программа предоставляла злоумышленнику возможность передавать почтовые сообщения любому почтовому пользователю. Таким образом, приложение могло быть использовано в качестве почтового ретранслятора для рассылки спама. Злоумышленник применяя параметры URL GET-за-проса для указания получателя почтового сообщения, к примеру:
   httр://example/cgi-bin/FormMail.pl? recipient= email@victim.example&message =you% 20got%20spam
   В качестве отправителя почтового сообщения указывался адрес веб-сервера, что позволяло злоумышленнику оставаться полностью анонимным.
   Иногда базовый интерфейс администрирования, поставляемый вместе с веб-приложением, может использоваться с не предусмотренными разработчиками целями. К примеру, Macromedia's Cold Fusion по умолчанию имеет модуль, позволяющий просматривать исходный код сценариев. Злоупотребление этой функцией может привести к получению критичной информации веб-приложения. Удаление или отключение данной функции весьма проблематично, поскольку от нее зависят важные компоненты приложения.
   
Конец бесплатного ознакомительного фрагмента