Netsparker и SQLmap: сканим сайты на уязвимости. Руководство для самых маленьких и терпеливых.

ВНИМАНИЕ! АДМИНИСТРАЦИЯ САЙТА НЕ СОВЕРШАЕТ И НЕ РЕКОМЕНДУЕТ ВАМ СОВЕРШАТЬ ПРОТИВОПРАВНЫХ ДЕЙСТВИЙ. НАПОМИНАЕМ, ЧТО...

Netsparker и SQLmap: сканим сайты на уязвимости. Руководство для самых маленьких и терпеливых.
Файл:Biohazard symbol.svg — Википедия

ВНИМАНИЕ! АДМИНИСТРАЦИЯ САЙТА НЕ СОВЕРШАЕТ И НЕ РЕКОМЕНДУЕТ ВАМ СОВЕРШАТЬ ПРОТИВОПРАВНЫХ ДЕЙСТВИЙ. НАПОМИНАЕМ, ЧТО СКАНИРОВАТЬ МОЖНО ТОЛЬКО СВОИ СОБСТВЕННЫЕ СИСТЕМЫ ИЛИ ТЕ, НА СКАНИРОВАНИЕ КОТОРЫХ ВЫ ПРЕДВАРИТЕЛЬНО ПОЛУЧИЛИ РАЗРЕШЕНИЕ. ОПИСАННЫЕ В СТАТЬЕ ИНСТРУМЕНТЫ ИСПОЛЬЗУЮТСЯ ПРОФЕССИОНАЛАМИ ДЛЯ ПРОВЕДЕНИЯ ТЕСТОВ НА ПРОНИКНОВЕНИЕ ПО ВСЕМУ МИРУ. МЫ НЕ РЕКОМЕНДУЕМ ВАМ ИСПОЛЬЗОВАТЬ ИХ ДЛЯ СКАНИРОВАНИЯ ЧУЖИХ СИСТЕМ. СТАТЬЯ НАПИСАНА НЕ АВТОРОМ НАШЕЙ РЕДАКЦИИ И ОПУБЛИКОВАНА НА ПРАВАХ КОНФИДЕНЦИАЛЬНОСТИ ЖУРНАЛИСТКОЙ ТАЙНЫ.

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

Сегодня мы будем работать с профессиональным софтом. А именно с Netsprker’ом и SQLmap’ом. Пора отвыкать от соски, в роли которой выступают такие программы как Webcruiser и Albaloo. Для начала предлагаю скачать всё, что мы будем использовать на протяжении всей статьи.

Нельзя не упомянуть, что именно эту “связку” в 2016 году использовал американский хакер Ray Buttler прямо из тюрьмы и добился внушительных результатов, вскрыв несколько подпольных “шопов” и биткоиновых обменок. Прошли те времена, но не стоит забывать, что в 19% веб-приложений есть уязвимости, позволяющие получить контроль как над самим приложением, так и над ОС сервера. Нетспаркер их найдёт.

Работу с софтом будем рассматривать под Windows, поскольку NetSparker работает только на этой платформе. Однако, автор рекомендует использовать Kali Linux и NetSparker на виртуалке.

Netsparker 5.0.0.19747 – Версия, которую использую я.
Netsparker 5.3.0.24388 – Поновее моей, но в целом ничем не отличается кроме возможного дополнительного функционала), поэтому эта статья должна быть актуальной и для этой версии
SQLmap git или Sqlmap Git rar
Python 2.7 (для работы с SQLmap’ом)
Burp Suite

Почему же именно Netsprker и SQLmap?
NetSparker – мощнейший сканер, SqlMap – консольный инструмент эксплуатации найденных уязвимостей.

Netsparker представляет из себя мощный сканер онлайн-ресурсов, сайтов и веб-приложений на ошибки, уязвимости и мелкие недочёты. В ходе работы он генерирует отчет, максимально подробно описывая каждую часть сканируемого ресурса, составляя его “карту”. Гибкие настройки, понятный интерфейс, подсказки и огромная база уязвимостей, плюс уникальный инструмент обнаружения ложных срабатываний делают этот инструмент де-факто лидером индустрии. У него есть и недостатки: NetSparker – тяжеловес, сканирование ресурса может занять часы, но при этом “спаркер” прогонит сайт и все его приложения на наличие всех возможных и невозможных вариантов уязвимостей.

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

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

Для того, чтобы открыть программу – нужно дважды кликнуть на файл Netsparker.exe. После запуска программы мы видим следующее:

Стартовое окно программы имеет шесть секций, которые нам стоит рассмотреть:

Save Profile – Сохранить настройки
Save As New Profile – Сохранить настройки этого скана отдельно
Default – Стандартное сканирование
Previous Settings – Настройки предыдущего скана

Start Scan – Начало работы. Без заморочек.
Crawl and Wait – Сканирование без атак.
Manual Crawl (Proxy Mode) – Тот же тихий режим, но через прокси. Должен предупредить, что нужно будет установить сертификат:

Scan Imported Links Only – Сканирование только определённых ссылок.
Schedule Scan – сканирование “по расписанию”.

После того, как мы разобрали интерфейс пора приступать к детальному изучению пунктов меню. Сначала рассмотрим третью секцию – Scan Settings. Всего мы видим пять пунктов. Рассмотрим их по порядку

Для начала рассмотрим Scan Policy. Это правила по которым будет производится сканирование ресурса. С помощью этого пункта можно оптимизировать наш скан, если мы у нас уже есть какая-либо информация о цели. Для этого нужно нажать на ннопку, напоминающую волшебную палочку:

Открывается следующее меню:

Это окно приветствия. Его можно пропустить. Смотрим дальше.

Здесь мы выбираем операционную систему, установленную на сканируемом сервере.

В этом окне нам предстоит выбрать сервер, установленный на сканируемой машине.

Четвёртое окно – выбор языка на котором написаны приложения сканируемого ресурса. Можно выбрать сразу несколько, если не уверены.

В этом окне выбираем базу данных, которую использует сканируемый ресурс. Можно выбрать несколько, если не уверены.

На этом этапе мы указываем количество динамичного контента на сайте:
Little or no dynamic content – мало динамического контента, или он декоративный, то есть никак не взаимодействует с бэк-эндом сайта
Moderately sized dynamic web site – много динамического контента и страниц с ним. Под эту категорию попадает большинство сайтов.
Complex Single-Page-Application – Сложные приложения, обновляющие контент одной страницы.

Седьмое окно это поиск скрытого контента. Нетспаркер перебирает возможные имена и названия содержимого удаленного сервера. Здесь возможно задать лимит перебора.

Последнее – это отчет выбранных нами ранее параметров.
Scan Policy Name – название созданной\оптимизированной нами политики.

Нажимаем Finish, и в главном меню настройки скана можем выбрать нашу политику. Обычно она становится активной по умолчанию.

Следующее, что мы рассмотрим в основном меню – это Report Policy. Этот пункты, по которым программа будет давать отчеты. Если вам важно узнать только об одной детали, например, есть ли у цели уязвимость к той же SQL инъекции – нажимаем на три точки и из всего списка оставляем отмеченным только SQL инъекцию:

Удобно, что список отсортирован от минимума к максимуму.

Здесь лучше ничего не отключать – пусть отчет будет максимально полным.

Custom Cookies – пункт меню, где можно вставить свои собственные кукисы, например перехваченные:

Последний пункт – настройка Crawling АКА составление карты сайта

Find & Follow New Links – Переход по найденным ссылкам.
Enable Crawl & Attack at Same Time – Атака одновременно со сканированием
Pause Scan After Crawling – Остановка работы софта после составления полной карты сайта.
Incremental Scan – Дополненное сканирование основанное на предыдущем скане. Нельзя использовать без готовой карты ресурсов или при новом сканировании

Включает в себя всего три поля:

Scope
Выбор масштаба сканирования:

Entered Path and Below – Сканирование страницы и глубже
Only Entered URL – Сканирование только введённой страницы
Whole Domain – Сканирование всего домена

Следующее – Exlude URLs with RegEx

Исключения. Регулярные выражения, страницы с которыми программа будет пропускать

Чтобы инвертировать эту функцию, достаточно отметить Include вместо Exclude в нижнем правом углу этого пункта:

Inlude URLs with RegEx – Регулярные выражения, страницы с которыми программа будет сканировать в первую очередь

Disallowed HTTP methods – Запрещённые типа запросов

Всего программа поддерживает 13 типов запросов:

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

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

Дело в том, что netsparker не сканирует страницы, домен которых отличается от основного. В пример могу привести мою предыдущую статью, где был сайт ixi.store. При переходе на партнерскую программу нас перекидывало на домен partner.ixi.store. Так вот программа будет сканировать только ixi.store, но не будет составлять карту сайта partner.ixi.store

Поэтому чтобы добиться полного сканирования нужно добавить этот домен в списки дополненного сканирования:

Для этого достаточно вставить нужную нам ссылку в текстовое поле и нажать на квадратик справа в столбце Canonicial, чтобы появилась галочка. Стоит так же предупредить, что программа принимает ссылки только в правильном виде. То есть в виде http://partner.ixi.store/. Ссылки вида partner.ixi.store будут считаться неправильными:

Изучим основные функции этого меню.

Add – добавление ссылок

После нажатия на эту кнопку открывается новое окно настройки:

Это форма создания запроса для сканирования и добавления ссылки в список сканируемых. Всё очень просто, ведь программа сделает автоматически всё за вас.

Предположим, у нас есть ссылка https://rybolov.org/customers/delivery, которую мы хотим добавить. Для этого достаточно вставить эту ссылку в строку Host. Туда обычно вписан домен, который мы будем сканировать. Но если мы собираемся “проводить расследование” на отдельных ссылках и сайтах – можем смело вставлять скопированное в это поле. Программа автоматически всё отредактирует:

Если у нас в профиле сканирования находится совершенно другой сайт, то нетспаркер нас предупредит об этом и предложит изменить header.

Yes – Изменить
No – Не изменять

Edit – редактировать введённую ссылку. Тоже самое можно сделать двумя кликами по нужной строчке

Delete – удалить выбранную строчку. Другой вариант – нажать кнопку delete на клавиатуре

Clear – полная очистка списка, удаляет все строки

Search – поиск по списку. Вызвать эту функцию можно комбинацией клавиш Ctrl+F

Import From File – импорт данных из файлов. Так же принимает отчеты других программ:

После выбора типа импортируемого файла – выбираем этот файл у себя на компьютере.

Enter Links – ввод ссылок вручную.

Помимо этого можно выбрать формат вводимых ссылок. В моём случае это Relative or Absoute Links

После ввода ссылок видим следующую картину:

Всё импортировалось успешно

Use Heuristic URL Rewrite Support – Программа будет автоматически определять другие правила перезаписи URL. Также будут действовать как пользовательские, так и эвристические правила.

Root Path Maximum Dynamic Signatures – максимум динамичных сигнатур в корневом пути. По умолчанию их значение равно 60.

Sub Path Maximum Dynamic Signatures – максимум динамичных сигнатур дополнительного пути. Обычно значение равно 30.

Block Separators – разделители. Классические разделители это /$.,;|:

Analyzable Extensions – расширения, которые будут анализироваться. В нашем случае htm и html.

Use Custom Rewrite Rules – нетспаркер будет использовать кастомные (пользовательские) правила перезаписи ссылок.

Чтобы создать\протестировать правило – нажимаем на кнопку New

Открывается окно, где мы будем редактировать ссылку для примера. Мы будем использовать https://rybolov.org/customers/delivery.

Здесь нам нужно выбрать, где мы будем переписывать и что:

Выбираем переписываемый параметр, выбираем его тип и вводим имя параметра. Типов параметра очень много, но если вы не хотите возиться – выбирайте Any.

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

Чтобы удалить правило – выберите нужную строку и нажмите на Delete:

No URL Rewrite – не преобразовывать ссылки

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

Рассматривать эту функцию мы будем через авторизацию на сайте php.testsparker.com. Он предназначен для тестирования нетспаркера, и мне кажется, что он отлично отлично подходит для наглядного примера. Начнём же!

Чтобы “включить” автоматическую авторизацию – необходимо поставить галочку на пункте Enabled:

Теперь нам нужна ссылка на форму ввода данных для входа в личный кабинет. В нашем случае это ссылка http://php.testsparker.com/auth/login.php. Её мы вводим в Login Form URL:

После этого вводим данные для входа. Вводятся они в поле Personas.
Active – выбор комбинации логина и пароля, которая будет использоваться
Username – Имя пользователя
Password – Пароль пользователя

Мы будем заполнять данные следующим образом:
Логин – admin
Пароль – admin123456
Эти данные написаны на самом сайте:

После ввода всё должно выглядеть так:

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

Interactive Login – Программа вводит данные а после передаёт управление пользователю. Используется в основном для обхода капчи, пользователь программы вводит её здесь вручную, а затем завершает авторизацию и передаёт управление обратно программе.

Override Target URL with authenticated page – Использование конечной страницы процесса аутентификации в начале введённой url. Если этот параметр выбран, то netsparker не будет делать запрос на указанный целевой Url-адрес

Detect Bearer Authorization Token – если после авторизации на сайте будет получен запрос AJAX, то перехваченные токены будут использованы при сканировании.

Теперь давайте верифицируем функции входа и выхода. Делается это с помощью кнопки Verify Login & Logout. Выглядит она следующим образом:

Сразу (ну или почти сразу) открывается окно:

Это окно можно условно разделить на две секции:

Сразу после открытия этого окна netsparker начнётся инициализация входа.

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

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

Если программа справилась с задачей – круг в каждом углу будет зелёным:

Проверить, верифицирована ли страница входа можно в меню настроек формы аутентификации, которое мы рассмотрели ранее. Должен был появиться следующее сообщение рядом с пунктом Enabled:

В случае, если вход не был верифицирован – мы будем писать скрипты для входа. Всё не так сложно как вы думаете. Я вам помогу. Для создания “сюжета” по которому нетспаркер будет инициализировать вход нажимаем на пункт Custom Script:

После нажатия программа сама пробует объяснить нам, каким образом мы будем писать скрипты:

Этот скрипт я создавал ранее, поэтому рассмотрим для начала левое меню. Я объясню, каким образом работают скрипты

netsparker.auth.login(username, password); – команда должна быть по умолчанию. Это инициализация переменных с логином и паролем, которые мы вводили в форму в самом начале.

Насколько я понял, программа заполняет форму используя CSS-селектор, копирование которого происходит в автоматическом режиме.

Для того, чтобы создать свой скрипт – нажимаем правой кнопкой мыши на поле для ввода логина. Ищем его в окошке справа:

Щелчок правой кнопкой мыши на любой элемент будет всегда вызывать одно и то же меню. Состоит оно из четырёх пунктов, из которых использовать мы будем от силы только два. Но разберём мы сразу все:

Log element to console – логирование выбранного нами элемента в консоль. Очень удобная штука, чтобы не искать элемент в коде элемента

После нажатия на этот пункт найти наш элемент в консоли ниже:

Эта функция очень удобна в случае если нам требуется колдовать с элементом отдельно. Например, скопировать Selector, или просто изменить.

Generate Element code – автоматическое создание кода с участием выбранного элемента.

После клика по этому пункту появляется строка кода в левом меню.

Конечно, сразу так мы ничего не поймём поэтому я специально для вас разберу строку этого кода:

netsparker.auth.setValueByQuery(‘#content > div.post > form > input[type=”text”]:nth-child(1)’, username);

Он состоит из четырёх элементов

Этот пункт добавляет паузу. По умолчанию это две тысячи миллисекунд (что равно двум секундам). Дописывается это значение в случае с текстовым полем после вписываемой переменной, например, username:

Если говорить о кнопках, то клик по кнопке авторизации будет выглядеть так: netsparker.auth.clickByQuery(‘#content > div.post > form > input[type=”submit”]:nth-child(7)’);. В случае с паузой значение дописывается сразу после пути, так как переменные, как я говорил, не принимают никакого участия. Выглядит вариант с паузой так: netsparker.auth.clickByQuery(‘#content > div.post > form > input[type=”submit”]:nth-child(7)’, 2000);

Теперь сформулируем маску, по которой строится код:
ЧтоДелать(‘путь’, переменная, пауза);

Теперь с этими знаниями мы можем написать собственный скрипт (или сгенерировать через Generate element code). Готовый вариант будет выглядеть так:

Чтобы протестировать его – жмём на кнопку Test Script:

И наблюдаем работу скрипта:

Если всё работает – нажимаем на OK, после чего нас выкидывает в главное стартовое меню, а пункт Custom Scripts пополняется:

С этим пунктом мы закончили.

Мы задержимся в этой теме немного подольше, чтобы разобраться, что же это за протоколы такие.

Базовый протокол можно встретить, например, при попытке подключиться на FTP любого из сайта через браузер.

NTLM – протокол сетевой аутентификации, который был разработан майкрософтом специально для своих операционных систем

Kerberos – тоже протокол сетевой аутентификации, механизм которого представляет из себя взаимную аутентификацию между клиентом и сервером. Его так же поддерживают операционные системы семейства Windows. Более безопасный протокол, основанный на принципе Single Sign-On

Помимо этих трёх программа поддерживает ещё два типа: Digest и Negotiate. Рассмотрим и их:

Digest (в простонародье известный как дайджест) – Его используют обычно веб-сервера для обработки учетных данных пользователя, вводимых в веб-браузер. Аналогичный метод использует VoIP

Negotiate – схема, присущая семейству Windows, которая предлагает выбрать между NTLM и Kerberos

Теперь можем приступать к изучении самой формы. Она состоит из пяти элементов – тип аутентификации (всего пять типов, которые поддерживает прогрмма: Basic, NTLM Kerberos, Digest и Negotiate)

Чтобы протестировать введённые учетные данные или просто посмотреть на работу программы – используем кнопку Test Credentials

Так же есть ещё одна настройка, последняя в этом окне.
Do not expect challenge (Basic Authentication) – означает, что после аутентификации никаких проблем или дополнительных требований возникнуть не должно, ровно как при базовой аутентификации

Помимо всего этого в нетспаркере существуют подсказки к каждому пункту. Находятся они в нижней части меню:

Поэтому если вы ничего не поняли из того, что я рассказал – можете почитать подсказки. А мы идём к следующему пункту.

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

Name – имя заголовка

Value – значение для заголовка.

Пример: имя – auth, значение – true. Выглядеть будет так:

Можно воспользоваться неким встроенным конструктором, который вызывается на кнопку Add Authorization Header

После нажатия на эту кнопку открывается следующее окно:

В Type мы выбираем тип, а в Credentials же значение.

Чтобы не застрять на этом пункте я впишу случайное значение, дабы показать, что записывается на выходе. Чтобы сохранить данные нажимаем Save

Чтобы удалить строку – нажимаем на любое значение (Name или Value), и нажимаем Delete:

По умолчанию это DO_NOT_TRUST_NetsparkerRoot, но вы можете добавить и свой, нажав на кнопку Add New

Программа принимает файлы типа PFX и P12

PFX и P12 являются расширениями стандарта PKCS#12. Понятнее не стало, как я вижу. Этот стандарт применяется в криптографии. Само же название PKCS является сокращением от “Public Key Cryptography Standards“, что переводится как “Стандарты Криптографии с Открытым Ключом”. По-нашему PKCS будет звучать как СКОК. В нашем случае это PKCS#12, который является форматом файлов для хранения ключей, который распознается и используется многими браузерами и почтовыми агентами. PFX и P12 же его расширения.

Если у вас имеется подобная карта – активируем пункт

Чтобы добавить данные – нажимаем на Import Smart Carf Certificate

После чего netsparker начнёт искать драйвер для считывания карт, а затем сохранит считанный им сертификат.

После считывания карты вводим пинкод в поле PIN, и нажимаем на Get Certificates. После этой процедуры жмём Import и в главном меню выбираем нужный нам сертификат, который программа считала ранее.

Настройку сканирования мы разобрали. Теперь можем приступать к основному окну программы Netsparker!

Начнём пробное сканирование.

Итак. Давайте проведём полный скан сайта php.testsparker.com. Просто скан, без настроек. Разве что авторизацию добавим через логин и пароль. Как это сделать – смотрите выше. На всякий случай напомню:

Теперь немного подождём, чтобы увидеть полную картину.

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

Для начала изучим функции меню под номером один (1):

Изучим же эту функцию:

Здесь находятся все автосейвы и сейвы предыдущих сканов. Чтобы загрузить – находим нужный нам сейв и загружаем через двойное нажатие по нему.

Можно загрузить чужой (или свой, если сохранял отдельно) отчет, кнопкой Browse

Чтобы экспортировать отчёт – используем кнопку Export в левом меню

После чего создаём файл с расширением nss. По факту создаётся два файла:

Всё в порядке, часть – отчет, часть – база отчета.

После чего в центре экрана появляется значок загрузки данных:

Как загрузка кончится – откроется страница Home. А чтобы вернуться в него без загрузки отчета – в верхнем левом углу есть кнопка:

Ещё можно посмотреть на красивое и минималистичное оформление окно About:

Ну и Exit, если вам вдруг всё надоело и хотите заняться чем-то другим:

Всё понятно? Странно, если нет. Если всё-таки не понятно – перечитайте ещё раз.

Пора разбираться со вкладкой Home.

New – новый скан

Schedule Scan – сканирование “по расписанию”.

Incremental Scan – Дополненное сканирование основанное на нашем

Schedule Incremental – отложенный дополнительный скан, требует ввода отчета по которому будет проводиться работа.

New Instanse – открывает новый netsparker.

Retest all – ретест всех найденных уязвимостей, чтобы узнать, пофиксили их, или нет. Полезно, если проверяете свой ресурс.

Hawk Check – проверка на уязвимости Out-of-band. К этим уязвимостям относятся такие уязвимости как: Blind SQL Injection​, Blind Cross-site Scripting​ и т.д.. Так же относится к пост-сканированию.

Import – импортировать отчёт\сессию

Export – экспортировать нашу сессию\отчет

Scan Policy Editor – редактирование политики сканирования ресурса:

Рассмотрим этот пункт.

Здесь можно изменить политику прямо во время сканирования. Например, если в ходе сканирования выяснилось, что это Linux система, все тесты под Windows можно отключить для ускорения работы.

Если разбирать интересности, то тут есть парочка достаточно вкусных параметров. Например, список игнорируемых почтовых аккаунтов. Если имеете подобные – впишите. Пункт называется Ignored Email Addresses

Для настройки скопируем пункт Extensive Security Checks. Чтобы скопировать пункт – сначала выделяем нужный нам пункт, а потом нажимаем на кнопку Clone:

Скопированный пункт появится в самум низу.

Security Checks – Уязвимости, на предмет которых будет сканироваться ресурс.

Более того. У каждой уязвимости есть свои настройки сканирования. Например, взять наш любимый SQL injection:

Crawling – поиск ссылок, составление карты сайта, изучение ресурса.

Crawling Page Limit – Лимит страниц.

Maximum Signature – максимальное количество сигнатур сайта

Maximum Page Visits – Максимальное количество посещений страниц сайта

Wait for Resource Finder Checks to Finish – ожидание завершения проверки поиска ресурсов

Text Parser – парсер текста со сканируемого ресурса

Parse SOAP Web Services – Типа парсинга файлов WSDL (WSDL – язык описания веб-сервисов и доступа к ним)

Parse REST Web Services – Парсит WADL файлы и Swagger (фреймворк и спецификация для определения REST APIs).

Fallback to GET – а можно мы перейдём уже к работе? нет? ну ладно… Программа шлёт особые запросы типа HEAD, чтобы выявить скрытые файлы и директории. Если ничего не получается, то нетспаркер возвращается к варианту с GET. Обычно выключено

Add Related Links – Указывает, нужно ли выполнять обход всех связанных ссылок при обнаружении новой. Добавляет все связанные друг с другом ссылки в карту сайта. Обычно включено

Enable Parameter-Based Navigation – если целевой веб-сайт использует параметры для работы с другим контентом вместо страниц. Например, вместо страницы tovar.php он использует параметр типа page=tovar. Обычно выключено

Navigational Parameter RegEx – навигационные регулярные выражения для работы программы по ресурсу.

Maximum Page Visits – максимальное количество посещений страницы, которая содержит параметры навигации, мы говорили о них выше.

Load Preset Values – Загрузка предустановок всех пунктов для разных типов сайтов.

DOM Load Timeout – Таймаут в миллисекундах ожидания загрузки страницы сайта перед началом симуляции JS DOM. DOM – это Document Object Model, что переводится как “объектная модель документа”. Программный интерфейс, позволяющий программам и скриптам получить доступ к содержимому файлов типа HTML и XML

DOM Simulation timeout – Таймаут в миллисекундах (все таймауты в миллисекундах, больше я писать этого не буду, всё) перед окончанием JS DOM симуляции.

Intervent Timeout – таймаут после триггера JS события перед началом новых событий. Прям как в жизни.

Max Simulated Elements – максимальное количество элементов в симуляции.

Skip Threshold – Порог пропуска. Количество элементов, которые будут симулированы\имитированы перед началом тотального пропуска всех других элементов.

Elements to skip – количество пропускаемых элементов после прохождения порога пропуска (отсылка к пункту выше).

Max Modified Element Depth – Симуляция начинает пропускать рассмотрение каждого из каскадных элементов после прохождение через порог глубины.

Pre-simulation Wait – таймаут перед началом моделирования\симуляции и после загрузки страницы

Exclude by CSS Selector – Исключение HTML элементов из моделирования событий с помощью функции CSS Selector. Все совпадающие элементы будут исключены, включая их производные. Выбирать элементы нам придётся вручную:

После выполнения работы нажимаем на Select, и радуемся записанным данным.

Max Option Elements – максимальное количество опционных элементов на выбранный элемент для имитации.

Persistent JavaScript Cookies – Разделенные точкой с запятой имена файлов cookie.

Open Redirect Conf. Timeout – таймаут перед окончанием симуляции JS DOM для подтверждения открытого перенаправления. Во как. Куда – не спрашивайте. Куда идёт перенаправление туда и будет подтверждение.

XSS Confirmation Timeout – таймаут перед окончанием симуляции JS DOM для подтверждения XSS. Да, такое тоже есть.

Filter document events – Фильтр событий, прикрепленных к документу по имени для уменьшения количества запускаемых событий во время симуляции.

Ignore document events – игнорирование событий, прикрепленных к документу

Filter ‘colon’ events – фильтр событий, содержащих в себе двоеточие. Обычно используются фреймворками.

Extract static resources – извлечение статичных ресурсов из элементов DOM.

Allow out-of-scope XML HTTP requests during simulation – Полезная функция, если цель не выгружается из-за криворукой настройки профиля сканирования

Теперь постепенно переходим к другим настройкам.

Attacking

Maximum Number of Parameters to Attack on Single Page – максимальное количество атакуемых параметров на одной странице.

Enable Proof Generation – генерировать отчета по эксплоиту после подтверждения уязвимости.

Attack Parameter Names – Генерирование доп. атаки, используя имя параметра запроса.

Attack User-Agent Header – Генерирование доп. атаки, используя заголовок юзер-агента

Optimize Header Attack – я не понял как эта функция работает. Понял только то, что атака по заголовку будет проходить на все ссылки

Optimize Attack to Recurring Parameters – поиск повторяющихся параметров в разных URL’ах. Аттакует всё, что входит в лимит по атакуемым элементам на странице (Maximum Number of Parameters to Attack on Single Page)

Recurring Parameters Attack Limit – Лимит страниц для атаки по повторным параметрам

Anti-CSRF Token Names (Comma Separated) – разделённые запятыми имена токенов для защиты от CSRF атак (Сross Site Request Forgery в переводе как “межсайтовая подделка запроса”)

Enable Random Parameter Attacks in Cross-site Scripting Engine – использование дополнительных параметров на страницах для обнаружения уязвимостей типа Cross-site Scripting

Продолжаем страдать, изучая все функции программы.

Custom 404

Настройка страниц 404, как я понял. Некоторые сайты юзают свои собственные, красивые. И вот они очень сильно отличаются от стандартных 404. Чтобы программа не тупила и не сканировала пустые ответы – выбираем, какие значения имеют страницы 404 для их обнаружения.

Auto Custom 404 – Автоматическое распознавание. Нужно ввести максимальное количество сигнатур 404’ых.

Manual Custom 404 – Придётся вводить регулярки для 404 вручную.

Disabled – стандартные 404.

Maximum 404 pages to Attack – количество страниц 404 для обхода и атаки.

Переходим в пункт Scope

Case Sensetive – увеличение отчета по SQL инъекциям. Хотя скан будет и чувствительнее, но на результате ни разу не сказалось, сколько бы я не использовал netsparker. Да и по умолчанию обычно всегда выключено.

Bypass Scope for Static Checks – обнаружение уязвимостей даже если указан скан от определённой страницы и дальше, не спускаясь до домена.

Enable Content-type Checks – программа будет игнорировать и не анализировать страницы, заголовок содержимого которых совпадает с приведёнными в списке значениями.

Block Ad Networks – Всегда включено. Если есть отсылка на рекламный ресурс из списка, то программа будет игнорировать скан этого ресурса.

Следующая в списке – Ignored Parameters

Просто игнорируемы параметры.

всё ближе к концу – Form Values

Данные форм. Можете добавить свои данные через URL или загрузив прошлые сканы. Будем считать это за регулярки.

Brute Force

У Netsparker’а около шестидесяти комбинаций для брутфорса. Можно использовать эту функцию для проверки на стандартные пароли формы для входа.

Autocomplete

Данные для поиска форм с автозаполнением.

Netsparker Hawk

Всё просто, настройка одного из пост-сканов. URL вставлен по умолчанию.

Ignored Email Adresses

регулярки игнорируемых почтовых ящиков.

CSRF

Настройка CSRF-атаки

Web Storage

Веб-хранилище данных

Auto Send To

Настройка автоматической отправки

Extensions

Сканируемые расширения и некоторые настройки под них: Атакуемый параметр или нет, исследовать или нет и так далее. Чтобы поменять тот или иной параметр – нажмите на него и из списка выберите нужный вам вариант.

Переходим во вкладку HTTP

Изучим пункт Request

User Agent – данные юзер-агентов. Имя и значение

Requset Timeout (seconds) – программа повторит запрос, если предыдущий запрос занял больше заданного времени. Задаётся в этот раз таймаут в секундах.

Accept – настройка заголовков, которые нетспаркер будет использовать во всех запросах.

Accept Charset – настройка кодировки для всех последующих запросов.

Accept Language – Настройка языка, который будет юзаться во всех запросах

Далее просто три чекбокса: Поддержка Gzip, уменьшение нагрузки на сервер, поддержка файлов кукис.

Concurrent Connections – количество подключений к цели. Если поставить слишком много, то могут возникнуть проблемы с подключением и\или отказ сервера (DoS). Ха-ха, дудос

Второй пункт – Proxy

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

Предпоследний пункт – Headers

Это настройка заголовков.

Последнее же – SSL/TLS

Настройка поддерживаемых протоколов.

Теперь третий пункт меню – Knowledge Base.
И сразу же первая страница меню – General

Подключение этой самой базы к скану. Штука полезная, оставляем включенной.

Последний в этом окне пункт – Comments

Регулярные выражения для поиска информации по комментариям. Можете добавить свои регулярки для поиска, если знаете, что искать.

Всё! Можем возвращаться к самой программе. Надеюсь, таких масштабных меню больше не будет.

Продолжаем изучать наше верхнее меню:

У еас осталась пара неизученных пунктов. Например, Report Policy Editor

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

Ещё один важный пункт – Options

Это настройки программы. Всё очень просто и понятно, давайте разберёмся. Поверь, ты будешь иногда сюда заходить. Не так часто, как в настройку сканирования (которая мне будет сниться после этой статьи), но заходить будешь.

Вот так выглядит окно:

Теперь всё по очереди.

Language – язык программы. Поддерживает обычно только два языка: Английский и Корейский.

Sounds – настройка звуков программы. Типа звуковых оповещений при “поимке” уязвимости

Чтобы добавить свои звуки или настроить уже имеющиеся – существует кнопка Configure sounds:

Настройка мест хранения.

Data Directory – место хранения данных сканирования и тому подобных.

Password Encryption Scope – сортировка паролей для настройки аутентификации.

Внутренние прокси.

Listening port – порт проксей

Register as the System Proxy – подключение системных настроек прокси от IE.

Allow Remote Connections – программа будет слушать все подключаемые интерфейсы “извне”

Use Custom Root Certificate – использование собственного корневого сертификата. Программа будет считывать файлы с расширением .cer и .pfx (о них мы говорили ранее, кстати).

Ведение журнала и его настройка.

Enable Logging – Включение функции логирования.

Perfomance Analysis – Анализ производительности.

Show Attack Possibilites Knowledge Base Node – показывать потенциальные уязвимости узла в дереве функции “Knowledge Base”.

Default Log Level – Выбираем, о чем будет сообщать и что будет логировать прогармма. Чем дальше двигаем ползунок, тем больше будет логироваться. Посмотреть на количество логируемых элементов можно посмотреть чуть ниже ползунка:

Categories – категории логирования.

Автоматические обновления. А почему это у меня включено? Выключаем.

Suggest Optimization – предупреждение об оптимизации политики сканирования.

Настройка внешних проксей.

Use System Proxy – Использование проксей с IE

Use Custom Proxy – использование своих собственных проксей. Потребуется ввод данных. Как в брутфорсе. Я рассказывал об этом ранее, кстати. И в прошлой статье про базы вы можете встретить подобную функцию. Ничего сложного. Вводим Имя пользователя, Пароль, домен на котором будет проходить аутентификация и т.д.

Настрйока облачного хранения Netsparker’a. Отключаем функцию и пропускаем этот пункт.

Ну и последнее меню – Extensions с единственным пунктом Send To Actions

Настройка автоматической отправки данных. Если будете использовать – легче всего настроить отправку на GitHub

Я вот экспериментировал с этой функцией, и как-то всё не очень сложилось. Функция необязательная, поэтому пропускаем её.

Если вы поняли, что намудрили с настройками, то их можно сбросить до стандартных:

Всё поняли? Отлично! Осталось немного.
Переходим в новое меню: View

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

Encoder и Request Builder можно использовать вне скана, как отдельные функции. Повезло, что они рядом друг с другом

Сначала рассмотрим утилиту Encoder. Полезная утилита для расшифровки закодированного\зашифрованного текста. Единственное, что он не декодирует – хэши . Имеет два поля. Ввод текста:

И вывод текста:

Между ними есть меню настроек. Кодировать текст, или декодировать:

А теперь моё любимое. Request Builder. Очень удобная штука для работы с запросами. Правда, утилита поддерживает всего семь запросов: GET, POST, HEAD, PUT, PATCH, DELETE и OPTIONS. О них я говорил, и повторяться не буду.

Чтобы послать запрос – используем кнопку в верхнем правом углу Send Request

Программа настроит всё автоматически – достаточно вставить ссылку в строку Host.

От вас зависит только выбор типа запроса.

Собственно, с этим всё. Основные функции я показал, далее всё зависит от того, что вы хотите.

Чтобы вернуть окна по умолчанию – используйте кнопку Reset Layout

Следующая вкладка на изучение – Reporting

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

Кто до сих пор не понял, что такое “база знаний” – прошу ознакомиться:

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

Ого, осталось ещё 10 пунктов. Давайте я упрощу задачу.

Всего три варианта экспортируемого списка: в CSV, JSON и XML файлах.

Последняя десятая функция – детальный отчет о найденных уязвимостях в формате XML. Vulnerabilities List – Detailed (XML)

Перед тем, как закончить с разбором отчётов – разберу окно сохранения отчёта:

Path – путь, куда будет сохранён отчёт

Policy – политика составления отчётов. По умолчанию это Default Report Policy

Export as HTML – Сохранить отчёт в HTML-документ

Export as PDF – Сохранить отчёт в PDF-документ

Open Generated Report – Открыть сохранённый отчёт. Если будете делать два отчёта – PDF и HTML, то по созданию откроются оба.

Save – сохранить

Следующая вкладка – Help.

Это меню никак не относится к функционалу программы, поэтому рассматривать его не будем

Активные элементы во вкладке Vulnerability зависят от того, какого рода уязвимость нашёл Netsparker

Для примера давайте возьмём одну из найденных ранее уязвимостей:

Помимо этого добавляются страницы в основном блоке. Обычно всего новых страниц две – Vulnerability и Browser View. Их мы рассмотрим позже, когда будем работать с основным интерфейсом.

Retest – перепроверить найденную уязвимость.

Copy as cURL – копирование cURL запроса этой ссылки

Generate Exploit – создание XSS и CSRF уязвимости, работает только на уязвимость типа Cross-site Scripting. Соответственно, чтобы получить возможность сгенерировать подобную уязвимость – нужно выбрать ссылку, которая имеет подтверждённый Cross-site Scripting.

Execute SQL commands – выполнение SQL команд. Работает только в с уязвимостями типа SQL инъекций

Get Shell – использование шелла для удалённого выполнения. Можно эксплуатировать только при условии наличия уязвимости Code Evaluation.

LFI Exploitation – скачиваем системные и просто важные файлы с сервера сайта при наличии уязвимости типа Local File Inclusion

Short Names – сокращение имён. Ни разу не использовал.

Ignore from this Scan – игнорирование уязвимости или пункта для этого скана

Configure Send To Action – смотри меню Extensions, пункт Send To Actions.

ModSecurity – Как я понял, это отчет уязвимых параметров и правил брандмауэра ModSec конкретно на эту ссылку.

Сосбственно, с этим пунктом меню всё. Осталось рассмотреть последнее. Link

Controlled Scan – контролируемый скан конкретно этой страницы.

Send Request Builder – Это мы уже разбирали

Copy URL – копирование URL’a. Ещё можно скопировать URL можно из вкладки Vulnerability

Далее целая куча бесполезных функций, который я ни разу не использовал – открыть эту страницу в выбранном браузере. Не в программе, а у тебя в браузере.

Кстати, мне всегда было интересно, почему иконки всех браузеров всегда круглые. Амиго не в счёт – это вирус.

Последний рывок. Изучим основное окно поподробнее. Это надо было сделать в самом начале, но я решил отлажить сладкое и простое на потом.

Sitemap – карта сайта.

Чтобы получить отчет по тому или иному явлению, странице и найденной уязвимости – нужно нажать на интересующий нас пункт.

Если нажать правой кнопкой мыши, то можно вызвать быстрое меню с основными функциями. Все мы рассмотрели ранее

Стоит рассмотреть только парочку отдельных, которые нам очень сильно помогут в будущем.

Copy SQLmap Command – программа генерирует команду для SQLmap’a и копирует в буфер обмена. Пожалуй, одна из самых полезных функций.

Exclude This Branch from Attack – исключить все страницы этого узла из списка атакуемых

Expand – развернуть узел

Collapse – свернуть узел

Controlled Scan – контролируемый скан.

Чтобы начать работу – нужно выделить нужный параметр в карте сайта, выделить его в верхнем списке, выбрать на предмет чего мы будем сканировать в нижнем списке и нажать на кнопку Scan. Я несколько раз уже рассказывал о нём. Ещё раз скажу, что очень полезно, когда сканом ты не атакуешь, а просто составляешь карту сайта, и бьёшь после этого по конкретным узлам, а не насилуешь всю систему.

Одно большое окно. Несколько вкладок. Начнём с первой – Scan

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

HTTP Request/Response – лог HTTP запросов и ответов, есть функция поиска по ответу.

Attack Radar – визуализация проблемных сторон и их критичности.

Красиво, да? А ещё можно отключить сетку пунктом Logarithmic.

остальные две мы уже рассмотрели ранее.

Browser View – просмотр этой страницы “в браузере”. Чисто визуальная функция, не более. Страница как таковая не работает

С этим всё. Это основные страницы, которые будут у нас по умолчанию.

Приступаем к окну Knowledge Base. Это окно связано с предыдущим, и при нажатии на интересующий нас элемент открывается новая страница в предыдущем окне.

Я думаю, мне не нужно объяснять, что здесь есть что. Можете наугад тыкать, и смотреть, что открылось. Всё интуитивно понятно по иконкам. Но так как я обещал рассмотреть его подробнее, то стоит разобраться с каждым пунктом отдельно:

Comments – Комментарии, найденные программой

Crawling Perfomance – отчет о производительности сканирования каждой функции

CSS Files – Найденные файлы CSS

Email Addresses – Найденные на сайте почтовые адреса

External Frames – Внешние фреймы

External Scripts – Внешние скрипты

File Extensions – все расширения файлов на сайте

Interesting Headers – Заголовки, на которые программа обратила внимание

MIME Types – найденные MIME-типы

Out of Scope Links – ссылки и страницы, которые были исключены из сканирования

Proofs – основные данные, вытянутые с сервера через эксплоиты (например, данные из C:\windows\win.ini или список процессов сервера)

Scan Perfomance – Отчёт о производительности всего скана

Site Profile – профиль сайта

Slowest Pages – страницы, на загрузку которых было затрачено больше всего времени

Web Pages With Inputs – страницы, на которых есть функция ввода

Issues – краткий отчёт по найденным проблемам, уязвимостям и просто информации.

Можно группировать по серьёзности, по виду уязвимости, по “доказанности” и по страницам.

Всё. Мы полностью разобрали Netsparker. Сразу скажу: не забывайте настраивать программу, когда проверяете серьёзные ресурсы! У админов не возникнут вопросы, если вдруг кто-то будет перерывать весь сайт, составляя карту. Но если вы будете насиловать сайт, то это непременно заметят.

Поэтому пользуйтесь настройками, и работайте правильно!

Давайте приступим к следующему инструменту. Это можно считать последней частью этой статьи – в ней я научу вас использовать SQLmap. Но для начала расскажу, что это и что нам потребуется для работы.

SQLmap автоматизирует процесс поиска и эксплуатации SQL-инъекций, и не просто найдет дыру в безопасности, а проэксплуатирует ее по полной программе. Поддерживает все виды инъекций. Функционал sqlmap позволяет: дампить базы, автоматически искать в базе, извлекать и расшифровывать логины и пароли, запускать cmd shell, запускать интерактивный sql shell, в котором тебе нужно только писать SQL-запросы в базу, а sqlmap сам составит payload для инъекции. Существует отличный Cheet Sheet, который в двух страничках показывает все возможности данной тулзы.

Для работы с этой утилитой нам потребуется Python версии 2.7. Все ссылки даны в самом начале и я не вижу смысла рассказывать, что скачивать и что устанавливать.

В этой статье я использую операционную систему семейства Windows, потому и разбор будет для этой ОС. На самом деле работа с SQLmap’ом на шинде фактически ничем не отличается от работы с ним же на Linux. В интернете полно мануалов по этой программе, поэтому рассмотрим только основной функционал.

Есть пять основных классов SQL-инъекций, и все их поддерживает
sqlmap:

Несмотря на то что сканер умеет автоматически эксплуатировать найденные уязвимости, нужно детально представлять себе каждую из используемых техник. Если тема SQL-инъекций тебе пока знакома только на пальцах, рекомендую полистать архив ][ или прочитать мануал Дмитрия Евтеева “SQL Injection: От А до Я“. Важно также понимать, что для разных DBMS реализации атаки зачастую сильно отличаются. Все эти случаи умеет обрабатывать sqlmap и на данный момент поддерживает MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, SQLite, Firebird, Sybase и SAP MaxDB.

Помните, что до этого мы научились пользоваться NetSparker-ом? Если Netsparker нашел хотя бы одну Sql-инъекцию, то SqlMap позволит ее эксплуатировать.

Обычные инъекции мне наскучили, поэтому предлагаю рассмотреть “Слепую” инъекцию, чтобы было интереснее. Долго искать не будем – возьмём ссылку с сайта, который мы сканировали ранее.

http://php.testsparker.com/artist.php?id=test

Кстати, при установке питона есть пункт, добавляющий исполняемый файл питона в path, чтобы не писать каждый раз путь к нему. Я тот ещё фрукт и исходя из своих фруктовых соображений делать этого не буду. Просто потому что я не ищу лёгких путей. А на самом деле я просто понял, что проебался, и пишу этот абзац в конце статьи

Теперь открываем командную строку. Я установил питон на диск C. Рядом с питоном же я поставил и sqlmap. Теперь нам нужно проверить, всё ли работает. Для этого командой CD переходим в корень: CD C:\

Чтобы запустить утилиту нужно прописать сначала путь к исполняемому файлу питона: Python27\Python.exe, а затем через пробел путь к самой утилите: SQLmap\sqlmap.py и жмём Enter. Не копируйте SQLmap в папку с питоном!

Не волнуйтесь, эта ошибка вызвана “пустым” запуском. Проверим одну из предложенных опций. Используем -h для получения списка команд. Опять жмём Enter (в этот раз для продолжения), и вписываем:

Python27\Python.exe SQLmap\sqlmap.py -h

Всё работает.

Чтобы начать работу нужно использовать опцию -u. Она используется для обозначения атакуемой ссылки. Правильная команда будет выглядеть так:

Python27\Python.exe SQLmap\sqlmap.py -u http://php.testsparker.com/artist.php?id=test

Нужно следить за всем процессом, так как программа может спросить нас, как ей действовать дальше:

Обычно нас спрашивают простое “да” или “нет”. Чтобы ответить да – вводим Y или y, иначе – N или n. Заглавная буква в вопросе означает выбор по умолчанию, и если вам лень нажимать на две кнопки – можете нажать на одну – Enter, и программа продолжит работу с выбором по умолчанию. Что? Вам лень? Хорошо. Чтобы программа действовала по собственному усмотрению – используем –batch. Прошу заметить, два дефиса. Вписываем же эту опцию в конец команды:

Python27\Python.exe SQLmap\sqlmap.py -u http://php.testsparker.com/artist.php?id=test –batch

Остаётся ждать, когда программа закончит. Она сама вам сообщит о завершении работы, и предоставит найденный материал

Чтобы получить список баз данных – используем опцию –dbs.

Узнать, что именно программа делает и какие методы использует можно прочитав лог работы.

А так как это слепая инъекция, утилита будет постепенно, по буквам узнавать названия всех баз.

отличный и наглядный пример работы со слепой инъекцией. Делать это вручную вы бы бросили на второй минуте работы.

При работе с другими ресурсами утилита может прекратить свою работу, сообщая про истекшее время ожидания: “connection timed out to the target URL”. При этом ваша цель будет работать и спокойно открываться в браузере. Проблема заключается в том, что некоторые ресурсы распознают SQLmap и обрывают с ним соединение. Во избежание подобной проблемы советую использовать функцию –random-agent. Таким образом мы маскируемся и продолжаем работу:

Python27\Python.exe SQLmap\sqlmap.py -u http://php.testsparker.com/artist.php?id=test –random-agent –dbs

Хорошо, мы получили список всех баз данных, и теперь нам нужно получить их содержимое. Наше гордое –dbs превращается в простое -D, после которого мы вписываем название интересующей нас базы данных. В моём случае это mysql. Чтобы достать таблицы добавляем –tables в самый конец.

Python27\Python.exe SQLmap\sqlmap.py -u http://php.testsparker.com/artist.php?id=test –random-agent -D mysql –tables –batch

Так как это слепая инъекция, то нам так же придётся ждать получения всех данных. Да, долго, но иначе как?

Утилита обнаружила достаточно много таблиц. Чтобы получить столбцы используем ту же систему, что и с получением таблиц, только –tables меняем на -T, вписываем нужные таблицы а затем дописываем –columns:

Python27\Python.exe SQLmap\sqlmap.py -u http://php.testsparker.com/artist.php?id=test –random-agent -D mysql -T proc –columns –batch

Да, нам снова ждать. Надо было заранее изучить внутренности цели для статьи. Это для вас проходит всего пара секунд, а я тут сижу с чаем, уже час жду.

Я жду уже пятый час, поэтому просто забил, и ушёл работать с другой базой logs. Всё тоже самое, только названия баз и таблиц другое:

Python27\Python.exe SQLmap\sqlmap.py -u http://php.testsparker.com/artist.php?id=test –random-agent -D logs -T logs –columns –batch

Наконец-то! Мы получили список столбцов. Теперь, чтобы достать их содержимое делаем следующее: –columns эволюционирует (или деградирует, кому как удобнее) в -C, вписываем интересующие нас колонки\столбцы через запятую и в конец добавляем ключевое –dump.

Python27\Python.exe SQLmap\sqlmap.py -u http://php.testsparker.com/artist.php?id=test –random-agent -D logs -T logs -C IP,useragent –dump –batch

После этого программа начинает сливать данные:

Мне придётся очень долго ждать, чтобы показать готовый результат, поэтому покажу, как будет выглядеть дамп на чужом примере:

https://hackware.ru/wp-content/uploads/2016/12/12-1.jpg

проблема заключается во времени, которое будет затрачено на слепую инъекцию.

В принципе с этим всё. Но специально, как дополнение, я покажу пару фишек. Например, как насчёт исполнения наших команд сервером? для этого нам нужно создать оболочку. Для этого мы будем использовать команду –sql-shell:

Python27\Python.exe SQLmap\sqlmap.py -u http://php.testsparker.com/artist.php?id=test –sql-shell

Работает не всегда, но в случае удачи мы получаем полный доступ, и можем даже добавить своих пользователей. Например, попробуем достать пользователя командой SELECT user(). Чтобы выполнить эту команду нам достаточно вписать её прямо в командную строку. SQLmap уже создал оболочку и готов отправлять наши команды на исполнения. Давайте же попробуем:

Воаля. Объяснять полезность этой функции я не буду, мне кажется это очевидным. А чтобы выйти из этого режима – вводим x или q. Если вы хотите использовать CMD, то легче это сделать в Netsparker’e, если имеется подобная уязвимость.

Помимо этого я обязан рассказать вам, как атаковать уязвимость если данные передаются параметром POST. Если в Netsparker-e вы увидели сообщение, что это POST SQL Injection, то нажав на нее в спаркере, в рабочем окне найдите название передаваемой переменной (TYPE) и её значение (VALUE), затем просто подставляем эти значения в sqlmap:

Python27\Python.exe SQLmap\sqlmap.py -u http://php.testsparker.com/artist.php –data “username=admin, password=admin123456”, дальше все так же.

Также для разбора POST инжектов можно использовать Burp Suite. Можно обойтись и без этой программы, но об этом потом, но этот инструмент очень уж интересный и мы должны замолвить за него хоть словечко. После установки и запуска от нас потребуют выбрать проект. Мы создавать ничего не будем, и поэтому выберем временный и жмём далее:

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

Нажимаем на старт и ждём, когда программа откроется

Сразу после открытия программы мы переходим в меню настроек прокси:

Сейчас сразу покажу, как добавить свои, но добавлять мы будем немного специфичные. Жмём на кнопку Add. После этого настраиваем всё как у меня и нажимаем OK:

Использовать мы будем наш новый прокси. Для этого зайдём в настройки браузера. Так как я использую Firefox (и вам советую), то и настройка прокси у меня в пункте “Параметры сети

Вручную настраиваем прокси, которые мы вводили в Burp Suite.

Перед тем, как принять настройки – отдельно открываем форму ввода данных для входа: http://php.testsparker.com/auth/internal.php. После этого принимаем настройки, вводим данные и нажимаем на кнопку логина.

Страница будет грузиться, но нам нужен не этот процесс, а данные, которые находятся в Burp Suit’e:

Нам потребуется только одна строка. Строка вводимых данных: username=admin+&password=admin123456&token=11940

для работы с этими данными в SQLmap’e мы будем использовать опцию –data:

Python27\Python.exe SQLmap\sqlmap.py -u http://php.testsparker.com/auth/internal.php –random-agent –data “username=admin+&password=admin123456&token=11940” — dbs –batch

В нашем случае инъекция не удалась. Однако, я рассказал, как использовать POST в SQLmap для атаки.

Как я и обещал, расскажу вам как ловить POST сразу в браузере. для этого нам нужно открыть страницу где будем вводить логин и пароль, и открываем консоль клавишей F12. Далее нам потребуется открыть вкладку Сеть и отметить пункт Непрерывные логи

После этого вводим данные на сайте и начинаем искать наш POST запрос в логах. Чтобы получить нужные нам данные – нажимаем на нужный нам запрос и в меню справа выбираем вкладку “параметры“.

В параметрах есть пункт “полезная нагрузка“, в котором и лежит нужная нам строка.

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

Статья подошла к концу. Не буду скрывать, большая часть усилий ушла именно на Netsparker. Причина тому отсутствие подобного материала на русском языке. Есть краткие описания, но нет полного разбора. Я решил поменять ситуацию, написав полный разбор функций данного продукта. Дело в том, что на тот же SQLmap вы найдёте сотни, если не тысячи статей и полных разборов всех функций, команд и даже примеры успешных атак. Но вот полного разбора Netsparker’a вы вряд ли найдёте.

От себя хочу добавить, чтобы профессионалы, читающие этот материал не кидались в меня тухлыми помидорами. Я правда старался.

Удачи. Берегите себя, не нарушайте закон и помните, что сканировать чужие ресурсы можно только с разрешения их владельцев. Тем не менее, описанные нами утилиты позволят провести великолепный пен тест даже самого сложного приложения.

Очень злой админ
Очень злой админ Автор статьи

Админ сайта. Публикует интересные статьи с других ресурсов, либо их переводы. Если есть настроение, бывает, что пишет и что-то своё.