Листинг 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. Атакующий использует символы ../ для перехода на уровень выше по дереву каталогов и перехода в директорию