В результате будет получено электронное письмо с копией файла паролей.
Исследование технологических ограничений серверов баз данных, Web-серверов, языков создания сценариев и приложений.
Например, технология активных серверных страниц ASP (ASP-Active Server Pages) на информационном сервере Интернет IIS не предусматривает выполнения команд командного процессора или программ с интерфейсом командной строки. Поэтому в данной ситуации нет необходимости подставлять метасимволы UNIX в параметры запроса.Поиск выражений равенства, формул или фрагментов программного кода.
Если удастся найти что-нибудь, похожее на выражения равенства, формулы или фрагмент программного кода, то обычно это указывает на возможность передачи значений параметров функции типаПоставьте себя на место разработчика.
Если вам недоплатили, вам скучно или у вас нет времени, какую программу вы напишите? Скажем, вы администратор одного из новых доменов верхнего уровня TLD (Top Level Domain). В практике администрирования широко используются формы «whois» для определения доступности домена. С их помощью можно зарезервировать домен, если он доступен. Если разработчику предоставить выбор – написать собственную программу поддержки формы «whois» или воспользоваться стандартной командного интерпретатора UNIX, то он, практически не задумываясь, выберет более легкий путь: возьмет за основу стандартную программу и адаптирует ее для нужд своего приложения.Обнаружение неполадок в сетевых службах и локальных приложенияхВ мире существует не только бесчисленное множество Web-приложений. Приведем несколько советов по поиску неполадок в сетевых службах.
1. Если сетевой сервис использует опубликованный протокол (например, установленный RFC (Requests for Comments) – серия документов IETF под названием «Запросы на комментарии», начатая в 1969 году и содержащая описания набора протоколов Интернет и связанную с ними информацию), то обязательно просмотрите протокол и найдите описания областей хранения строк переменной длины и массивов данных. Они могут быть уязвимы к атакам переполнения буфера.
2. Поищите спецификации протокола, определяющие, что строка не должна быть больше установленной длины. Любая из них является источником потенциальной уязвимости для атак переполнения буфера, поскольку предполагает, что никто не станет нарушать спецификации протокола.
3. Установите связь с тестируемой сетевой службой и перешлите ей большой массив случайных данных. Некоторые приложения неверно обрабатывают не описанные в протоколе данные и аварийно завершаются, что приводит к ситуации «отказ в обслуживании».
4. Установите связь с тестируемой сетевой службой и, не посылая никаких данных, узнайте, сколько времени потребуется для того, чтобы сетевая служба выдала сообщение о разрыве соединения и завершила сеанс. Некоторые приложения окажутся в состоянии постоянного ожидания, что может привести к истощению ресурсов, если злоумышленник попытается установить соединение с многочисленными копиями программы сетевой службы. Проблема усугубляется, если сетевая служба не обслуживает нескольких пользователей одновременно (одна сервисная служба обслуживает одно обращение к серверу), поскольку в этом случае обращения других пользователей сетевой службой не обрабатываются.
Но, естественно, ошибки могут быть и в локальных приложениях. При тестировании локальных утилит
1) переслать приложению большой массив данных, задав соответствующие параметры командной строки. Многие приложения
2) присвоить переменной окружения PATH значение локальной директории, в которой хранятся копии пораженных «троянцами» программ и к которым обращается приложение. Узнать о вызове приложением внешних программ можно дизассемблированием приложения или, что лучше, при помощи утилиты
3) присвоить переменной окружения LD_PRELOAD ссылку на библиотеку, пораженную «троянцем». Некоторые приложения и системы позволяют с ее помощью задавать дополнительные динамические библиотеки. В результате приложение может повысить свои привилегии. Отметим, что это в большей степени ошибка операционной системы, чем приложения;
4) проверьте, не использует ли приложение функцию
5) постарайтесь изменить содержимое конфигурационного файла приложения, если он может быть изменен пользователем. Во многих приложениях реализован не самый лучший вариант анализа конфигурационного файла. Цель изменения файла заключается в вызове ситуации переполнения буфера путем присваивания различным атрибутам очень длинных строковых значений.
Анализ исходных текстов программ
Аудит приложения более эффективен, если доступен исходный текст его программ. Тогда можно использовать поиск различий (диффинг) различных версий приложения (поиск различий был описан в главе 5). Поиск различий заключается в сравнении версий одного и того же приложения для нахождения в них уязвимостей или изменений. Но как найти уязвимость, вызванную передачей приложению не предусмотренных разработчиком входных данных или данных неверного формата?
Для этого следует найти вызовы системных функций и проследить, откуда берутся передаваемые им данные. Связаны ли они как-нибудь с входными данными? Если связаны, то следует попытаться определить, как именно. Часто трассировка хода выполнения приложения от точки ввода непредусмотренных данных заводит в тупик. Поэтому лучше начать с системных функций и проследить историю появления входных данных системных функций.
Синтаксис системных функций и их входных данных зависит от языка, в котором они используются. Прежде всего следует обратить внимание на точки вызова программ (функции exec,