Главная » Заметки » День 11. Веб-анализ при помощи Nikto, OWASP ZAP, Burp Suite и Paros
День 11. Веб-анализ при помощи Nikto, OWASP ZAP, Burp Suite и Paros
Автор статьи никого не призывает к правонарушениям и отказывается нести ответственность за ваши действия. Вся информация предоставлена исключительно в ознакомительных целях. Все действия происходят на виртуальных машинах и внутри локальной сети автора. Спасибо!

Сегодня начинаю тестировать веб-приложения (глава 10 книги Парасрам Шивы). Ранее уже использовал сканер уязвимостей Nessus. Сегодня будем использовать нечто похожее.

Для начала необходимо скачать OWASP (https://sourceforge.net/projects/owaspbwa/) – это набор уязвимых веб-приложений. Скачиваю 1.2/OWASP_Broken_Web_Apps_VM_1.2.ova.

Запустил OWASP на VirtualBox. Теперь необходимо найти этот хост:

nmap -sP 192.168.56.0/24 

Замечательно. Будем работать с 192.168.56.108 – это целевая машина на сегодня. Перешел на сам сайт OWASP с атакующей машины. На главной странице множество ссылок, как я понял на первый взгляд, на различные «тестовые площадки», в которых есть уязвимости.

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

$ nikto -h 192.168.56.108 -p 80

Как обычно, очень много информации, которую сходу не понять. Из первых строк становится понятно об использовании Apache/2.2.14 (Ubuntu) с некоторыми модулями (mod_mono/2.4.3 PHP/5.3.2-1ubuntu4.30 with Suhosin-Patch proxy_html/3.0.1 mod_python/3.3.1 Python/2.6.5 mod_ssl/2.2.14 OpenSSL/0.9.8k Phusion_Passenger/4.0.38 mod_perl/2.0.4 Perl/v5.10.1). Далее, как я понимаю, перечислены уязвимости. Попробую разобраться в них (погуглить, то есть):

Server may leak inodes via ETags, header found with file /, inode: 286483, size: 28067, mtime: Thu Jul 30 22:55:52 2015

Речь про утечку «инодов». Инод – это структура данных, используемая в Linux. У каждого файла и каталога есть индексный дескриптор, в котором хранится его имя, размер и другие данные. У каждого индекса есть уникальный номер. Apache некоторое время использовал ETag. Номер инода – это техническая информация о файловой системе. Если эта информация раскрыта, то этот инод нельзя использовать. Далее, кто-то пишет, что это ложное срабатывание nikto, а кто-то считает, что знание номера инода можно применить, чтобы понять в каком месте системы мы находимся: «chroot jail» или нет Chroot jail, это «песочница», в которой можно запустить сомнительный процесс, который не сможет изменять данные за пределами заданного дела каталогов.

The anti-clickjacking X-Frame-Options header is not present.

Clickjacking – это когда злоумышленник использует несколько прозрачных слоев, чтобы заставить нажать пользователя на кнопку на странице по фрейме, когда последний намеревался нажать на страницу «верхнего» уровня. Получается нечто перехвата кликов и нажатия клавиш. Например, пользователь может думать, что вводит данные в поле ввода для пароля от почты, но это не так.

Утилита nikto сообщает, что у нас отсутствует заголовок X-Frame-Options, защищающий от кликджекинга.

The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS

Отсутствует заголовок X-XSS-Protection, защищающий от атаки с использованием межсайтового скриптинга (XSS). Данные, передаваемые в веб-приложение «заражаются» вредоносным кодом. Вредоносный код, как правило, написан на интерпретируемом браузером языке, например, JavaScript. Целью XSS является получение конфиденциальных данных: файлы cookie или другая информация о сеансе.

The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type

Отсутствует заголовок X-Content-Type-Options. Сниффинг типов MIME – обычная процедура браузеров для поиска подходящего способа отображения данных, когда заголовки HTTP, отправляемые сервером, неубедительны. Опасность возникает, когда пользователь может загружать контент на веб-сервер. Таким образом, злоумышленник может выполнить атаку XSS. Например, будет выполняться вредоносный код при просмотре изображения на сайте. (https://www.invicti.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/)

OSVDB-3268: /cgi-bin/: Directory indexing found.

Индексируется каталог cgi-bin. Не совсем понятно, в чем состоит уязвимость. Здесь возвращаюсь к книге. Что означает код OSVDB. Это аббревиатура базы данных уязвимостей с открытым исходным кодом. В 2016 году сервис перестал работать. Однако, команда CVE, добавила все собранные данные себе. Его можно посмотреть здесь: http://cve.mitre.org/data/refs/refmap/source-OSVDB.html. Использовать эту справочную карту – отдельное искусство.

/crossdomain.xml contains a full wildcard entry. See http://jeremiahgrossman.blogspot.com/2008/05/crossdomainxml-invites-cross-site.html

Найден файл crossdomain.xml, который позволяет включить больше сайтов в круг доверия. То есть, с помощью этого файла разрешается всем сайтам вне домена читать его (сайта) данные. Если злоумышленник находится в кругу доверия, то он может скомпрометировать пользовательские данные. Статья 2008 года. Не знаю, как сейчас обстоят дела (никогда не встречался с этим файлом), но тогда многие сайты этим злоупотребляли.

Python/2.6.5 appears to be outdated (current is at least 2.7.8)

Старая версия Python, к тому же, еще вторая.

Apache/2.2.14 appears to be outdated (current is at least Apache/2.4.37). Apache 2.2.34 is the EOL for the 2.x branch.

Apache тоже устарел.

proxy_html/3.0.1 appears to be outdated (current is at least 3.1.2)
mod_ssl/2.2.14 appears to be outdated (current is at least 2.8.31) (may depend on server version)
Perl/v5.10.1 appears to be outdated (current is at least v5.20.0)
OpenSSL/0.9.8k appears to be outdated (current is at least 1.1.1). OpenSSL 1.0.0o and 0.9.8zc are also current.
mod_mono/2.4.3 appears to be outdated (current is at least 2.8)
PHP/5.3.2-1ubuntu4.30 appears to be outdated (current is at least 7.2.12). PHP 5.6.33, 7.0.27, 7.1.13, 7.2.1 may also current release for each branch.
Phusion_Passenger/4.0.38 appears to be outdated (current is at least 4.0.53)
mod_perl/2.0.4 appears to be outdated (current is at least 2.0.8)

И все модули тоже не обновлялись.

IP address found in the 'location' header. The IP is "127.0.1.1".

На данный момент, не понятная уязвимость.

OSVDB-630: The web server may reveal its internal or real IP in the Location header via a request to /images over HTTP/1.0. The value is "127.0.1.1".
OSVDB-39272: /favicon.ico file identifies this app/server as: owasp.org
Uncommon header 'tcn' found, with contents: list

С этими уязвимостями разберусь в процессе.

Apache mod_negotiation is enabled with MultiViews, which allows attackers to easily brute force file names. See http://www.wisec.it/sectou.php?id=4698ebdc59d15. The following alternatives for 'index' were found: index.css, index.html

Модуль mod_negotiation включен в MultiViews, то есть злоумышленник может перебирать имена файлов.

+ mod_ssl/2.2.14 OpenSSL/0.9.8k Phusion_Passenger/4.0.38 mod_perl/2.0.4 Perl/v5.10.1 - mod_ssl 2.8.7 and lower are vulnerable to a remote buffer overflow which may allow a remote shell. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-0082, OSVDB-756.
+ Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE 
+ OSVDB-877: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ Retrieved x-powered-by header: PHP/5.3.2-1ubuntu4.30
+ Cookie phpbb2owaspbwa_data created without the httponly flag
+ Cookie phpbb2owaspbwa_sid created without the httponly flag
+ OSVDB-3092: /phpmyadmin/changelog.php: phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts.
+ OSVDB-3268: /test/: Directory indexing found.
+ OSVDB-3092: /test/: This might be interesting...
+ OSVDB-3268: /icons/: Directory indexing found.
+ OSVDB-3268: /images/: Directory indexing found.
+ OSVDB-3233: /icons/README: Apache default file found.
+ /phpmyadmin/: phpMyAdmin directory found
+ OSVDB-3092: /phpmyadmin/Documentation.html: phpMyAdmin is for managing MySQL databases, and should be protected or limited to authorized hosts.
+ 8877 requests: 1 error(s) and 35 item(s) reported on remote host
+ End Time:           2022-04-02 03:38:29 (GMT-4) (39 seconds)

Одним словом, множество уязвимостей. В книге, к сожалению, ничего не расписано и вряд ли будет. Показано только как применять утилиту nikto.

Сканер OWASP ZAP

Проект OWASP, помимо уязвимого веб-приложения, создал сканер с открытым исходным кодом. В моей версии Kali Linux нет OWASP ZAP, поэтому для начала установим его:

$ zaproxy

После скачивания и установки запускаем ZAP. Предлагается сохранить сеанс. Пока не будем его сохранять. Для начала разберемся с теорией. Существует пассивное и активное сканирование. При пассивном сканировании данные сайта не изменяются – это более безопасный вид. Активное сканирование может изменять данные и вставлять вредоносные скрипты. Таким способом можно сканировать только специально развернутые на локальном хосте сайты.

Хорошо расписано про начальную работу с OWASP ZAP на хабре (https://habr.com/ru/company/alexhost/blog/530110/). Минут двадцать искал, как добавить сайт для анализа. Оказалось все просто, необходимо открыть браузер (через OWASP ZAP) и перейти на нужный сайт. Даже не ожидал, что ZAP настолько автоматизированный. Пока не буду углубляться в работу с этим сканером, оставлю на потом.

Инструмент Burp Suite

Еще одно мощное средство для тестирования веб-приложений. Открываем его:

$ burpsuite

Открываем вкладку Proxy, далее Intercept (перехват) и убеждаемся, что перехват включен (intercept is on). Далее пробуем посетить целевой сайт (http://192.168.56.108/dvwa/). Не открывается.

Все правильно, браузер должен оставаться в режиме подключения. Далее нажимаем кнопку Forward, чтобы «продвинуть» загрузку. На вкладке HTTP History сохраняется история запросов HTTP. Далее в книге предлагается использовать Spider (но, как я понял, в последней версии такой команды нет). Поэтому пока пропустим это, может быть дальше будет понятнее.

Далее введем случайные данные в поля для логина/пароля. В запросе появится:

username=admin&password=12345&Login=Login

Данные, которые использовал для авторизации. Конечно же они неправильные. Далее нажимаю Send to Intruder, перехожу на вкладку Intruder, а там на Position. Данные, которые были введены, подсвечиваются и обрамлены знаком доллара.

Захожу во вкладку Payloads. Для первого поля (имя пользователя) устанавливаю Simple List и в Payload Options ввожу имя admin, например.

На вкладке Position необходимо выбрать Cluster bomb, иначе попросту нельзя будет выбрать второе поле для установки нагрузки.

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

К сожалению, ничего не получилось. Даже не смотря на знание логина/пароля (admin/password).

Что же, пока запишем это в неудачную попытку и отложим на потом.

Прокси-сервер Paros

Сначала его необходимо установить. Далее в браузере устанавливаем прокси сервер 127.0.0.1:8080. Открываем paros и страницу 192.168.56.108.

На вкладке Sites появился хост. Нажимаю вкладку Analyse, далее Spider для обхода сайта.

Для поиска уязвимостей нажимаю Analyse, далее Scan. В результате получаю все найденные уязвимости. С Paros тоже познакомился.

Инструменты W3AF и WebScarab оставлю на потом, так как с ними я все равно просто познакомлюсь. После работы с предыдущими, я понял о необходимости изучения дополнительной информации.

Сегодня установил OWASP для тестирования, познакомился с Nikto, OWASP ZAP, Burp Suite и Paros. Разобрался с некоторыми уязвимостями.

Ссылки дня:

  1. Пока искал информацию по уязвимостям, часто попадал на сайт: https://www.invicti.com/web-vulnerability-scanner/vulnerabilities/
  2. Про OWASP ZAP: https://habr.com/ru/company/alexhost/blog/530110/
Просмотров: 51
02.04.2022
Автор