Загрузил Artem

theory

реклама
Русский
Java Secure Programming
Теория
Рейтинг
Мои курсы
Поддержка
Глоссарий
100
28 дней
Полезная информация и описание инструментов
Прогресс
Основы основ
Платформа
При первом входе на платформу вам откроется список доступных курсов. Вы можете активировать и начать любой
из них. Однако, некоторые курсы могут находиться в разработке.
SHO-323547
Открыв курс, вы увидите список уроков. Уроки открываются поочередно, по мере выполнения всех заданий и тестов
Подробнее
в предыдущем уроке. Рекомендуем начинать с изучения теории и сдачи тестов после каждого урока (если они
доступны). После этого можно приступать к практическим заданиям.
NB! Если запущен тест или практическое задание, невозможно запустить другой тест или задание, пока не будут
завершены текущие упражнения.
9107 /9107
Платформа
Linux
Практическое задание - это виртуальная среда, созданная специально для каждого пользователя. Каждый раз, когда
вы запускаете задание, создается новая виртуальная машина. Таким образом, если вы остановите задание до его
полного выполнения, все данные будут утрачены. Сохранятся лишь правильные ответы в чате с ботом. Если вы
Инструменты
Code Editor
перезапустите задание, вам придется повторить некоторые дествия.
Burp Suite
Сложность задания выражена в количестве молний. Чем больше молний, тем оно сложнее:
SQLmap
Одна молния - низкая
TPLmap
Две или три молнии - средняя
Nmap
Четыре или пять молний - высокая
Чем выше сложность задания, тем меньше подсказок есть у вас и тем сложнее вопросы.
Также как и уроки, новые задания открываются по мере выполнения предыдущих заданий:
Чтобы начать, нажмите Начать и подождите. Создание виртуальной машины требует времени. Когда она будет
готова, вы увидите кнопки Открыть и Остановить:
Нажмите Открыть. Вы автоматически подключитесь к удаленному рабочему столу виртуальной машины:
Нажмите
в левом верхнем углу, чтобы перейти в полноэкранный режим или выйти из него;
В окне чата нажмите на книгу, чтобы открыть теорию;
Нажмите Остановить в чате, чтобы завершить практическое задание.
Чтобы выполнить задание, необходимо ответить на все вопросы бота. Общение с ботом происходит в чате
практического задания: бот будет отправлять вам вопросы, а вам надо будет на них ответить. За каждый
правильный ответ вы получите какое-то количество хаккоинов и очков.
Вы можете попросить у бота подсказку, но помните, что за них нужно платить хаккоинами. Чем больше подсказок
вам потребуется, тем дороже они становятся. Таким образом, если у вас недостаточно хаккоинов, вы не сможете
купить подсказки.
Как только вы ответите на все вопросы, появится уведомление о выполнении задания. С этого момента вы можете
остановить его.
Копирование текста с локальной машины на виртуальную и обратно.
Чтобы скопировать данные с виртуальной машины на локальную и наоборот, используется инструмент Clipboard,
который можно найти слева:
Копирование с виртульной машины в буфер вашего компьютера:
Откройте инструмент Clipboard;
На виртуальной машине мышью выделите фрагмент текста. Текст автоматически появится в поле Clipboard:
Теперь вы можете скопировать текст из поля Clipboard на ваш компьютер.
Копирование с компьютера на виртуальную машину:
Откройте Clipboard;
Вставьте текст в поле Clipboard;
Теперь вы можете вставить этот текст на виртуальной машине, используя стандартные операции (
CTRL+C/CTRL+V ).
Linux
1. cd
2. pwd
3. ls
4. echo
5. cat
6. find
7. grep
8. cp
9. mv
10.rm
При работе с пользовательской виртуальной машиной вам потребуются базовые навыки работы с Linux и знание
основных команд.
Вот список самых необходимых команд (полный список команд вы найдете тут: https://fossbytes.com/a-z-list-linuxcommand-line-reference/):
cd
Выполняет переход в другой каталог.
Применение:
cd Desktop/Tools
- переход в директорию Desktop/Tools
cd ~
- переход в домашнюю директорию
pwd
Выводит название текущего рабочего каталога.
Применение:
admin@ip-10-0-1-11:~$ pwd
/home/admin
ls
Выводит список содержимого каталога.
Опции:
-a --all
– список всех файлов
-d --directory
-F --classify
– вывод информации о самом каталоге, а не о его содержимом
– добавляет в конец каждого имени символ-индикатор
-h --human-readable
-l
– отображает размеры файлов не в байтах, а в величинах с единицами измерения
– выводит результаты с использованием длинного формата
Применение:
admin@ip-10-0-1-11:~$ pwd
/home/admin
admin@ip-10-0-1-11:~$ ls
BurpSuiteCommunity Desktop Downloads Pictures
admin@ip-10-0-1-11:~$ ls -lh
total 16K
drwxr-xr-x 5 admin admin 4.0K Sep 3 23:03 BurpSuiteCommunity
drwx------ 3 admin admin 4.0K Sep 3 23:43 Desktop
drwx------ 2 admin admin 4.0K Sep 3 23:04 Downloads
drwxr-xr-x 2 admin admin 4.0K Sep 3 23:16 Pictures
echo
Выводит строку текста.
Применение:
admin@ip-10-0-1-11:~$ echo HELLO
HELLO
admin@ip-10-0-1-11:~$
cat
Выводит содержимое файлов.
Применение:
admin@ip-10-0-1-11:~$ echo HELLO > test.txt
admin@ip-10-0-1-11:~$ cat test.txt
HELLO
admin@ip-10-0-1-11:~$
find
Осуществляет поиск файлов.
Опции:
-name шаблон
– поиск файлов и каталогов по шаблону
-nouser
– поиск файлов и каталогов, не принадлежащих какому-либо пользователю
-nogroup
- поиск файлов и каталогов, не принадлежащих к какой-либо группе
-size n
– поиск файлов и каталогов размера n
-type c
- поиск файлов и каталогов типа c
-user имя
- поиск файлов и каталогов, принадлежащих определенному пользователю
Применение:
admin@ip-10-0-1-11:~$ find . -name test.txt
./test.txt
admin@ip-10-0-1-11:~$ find /home -name test.txt
/home/admin/test.txt
admin@ip-10-0-1-11:~$
grep
Осуществляет поиск по содержимому файлов.
Опции:
-i --ignore-case
-r
– игнорировать регистр символов
- рекурсивный поиск
Применение:
admin@ip-10-0-1-11:~$ grep HELLO test.txt
HELLO
admin@ip-10-0-1-11:~$ grep -r HELLO
test.txt:HELLO
cp
Осуществляет копирование файлов.
Применение:
admin@ip-10-0-1-11:~$ cp test.txt test2.txt
admin@ip-10-0-1-11:~$ ls test*
test2.txt test.txt
mv
Перемещает / переименовывает файлы и каталоги.
Применение:
admin@ip-10-0-1-11:~$ mv test.txt newfile.txt
admin@ip-10-0-1-11:~$ ls -la newfile.txt
-rwxrwxrwx 1 admin admin 6 Sep 13 09:41 newfile.txt
mkdir
Создает каталог.
Применение:
admin@ip-10-0-1-11:~$ mkdir folder
admin@ip-10-0-1-11:~$ ls
BurpSuiteCommunity Desktop Downloads folder Pictures
rm
Удаляет файлы и каталоги.
Важно!
В Unix-подобных операционных системах нет команды, отменяющей удаление;
Будьте осторожны с групповыми символами, например, если в команде rm *.html случайно поставить пробел
rm * .html, rm удалит все файлы в каталоге и сообщит, что не нашла файла .html
Применение:
admin@ip-10-0-1-11:~$ ls
BurpSuiteCommunity Desktop Downloads newfile.txt Pictures test2.txt
admin@ip-10-0-1-11:~$ rm -f test2.txt
admin@ip-10-0-1-11:~$ rm -f newfile.txt
admin@ip-10-0-1-11:~$ ls
BurpSuiteCommunity Desktop Downloads Pictures
chmod
Изменяет режим доступа к файлу.
Опции:
r
– чтение файла
w
– разрешает записывать в файл (однако файл нельзя переименовывать)
x
– разрешает интерпретировать файл как программу и выполнять ее
Применение:
admin@ip-10-0-1-11:~$ ls -la test.txt
-rw-r--r-- 1 admin admin 6 Sep 13 09:41 test.txt
admin@ip-10-0-1-11:~$ chmod 777 test.txt
admin@ip-10-0-1-11:~$ ls -la test.txt
-rwxrwxrwx 1 admin admin 6 Sep 13 09:41 test.txt
Инструменты
В этом разделе мы подробно рассмотрим инструменты, необходимые для выполнения упражнений, и научимся с
ними работать. Итак, нам понадобятся:
1. Code Editor
2. Burp Suite
3. SQLmap
4. TPLmap
5. Nmap
Эти инструменты уже установлены на пользовательских виртуальных машинах. Однако в будущем они могут вам
пригодиться, поэтому вы найдете все необходимые ссылки с более подробным описанием всех инструментов.
Code Editor
CodeEditor служит для редактирования кода, сборки и установки приложения. С помощью него, вы будете
исправлять уязвимости в исходном коде того или иного приложения. Приложение находится на рабочем столе
пользовательской виртуальной машины. Чтобы запустить его, нажмите на ярлык Code Editor.
При запуске CodeEditor, проект подгружается автоматически.
В Code Editor четыре основные кнопки:
Compile - компиляция кода
Deploy - компиляция и установка приложения. Установленное приложение доступно по адресу
http://www.hacktory.lab/.
Test your code - тестирование кода на предмет устранения уязвимости.
Reload source code - востановление первоначального состояния исходного кода.
Исправление кода программы
Алгоритм исправления уязвимостей может быть представлен следующей схемой:
Чтобы исправить уязвимость, для начала необходимо найти ее в коде, а затем изменить исходный код. После всех
изменений, необходимо запустить компиляцию. Для этого нажмите на кнопку Compile.
Если данный процесс прошел без ошибок, то исходный код может быть в дальнейшем собран в приложение.
Нажмите на кнопку Deploy, чтобы запустить компиляцию исходного кода приложения и установить приложение на
сервер. Приложение будет доступно по адресу http://www.hacktory.lab. После установки, необходимо запустить
проверку приложения на предмет устранения уязвимостей. Для этого нажмите на кнопку Test your code.
Если уязвимость была устранена корректно, то в окне терминала будет сообщение об успешном завершении всех
тестов и флаг. Если нет, вы увидите сообщения о провале тестов с дополнительной информацией, например:
уязвимость была некорректно устранена.
основная функциональность приложения была нарушена.
Burp Suite
Burp Suite – это интегрированная платформа для тестирования безопасности веб-приложений. С помощью этого
приложения можно находить такие уязвимости, как HTTP request smuggling, Cross-site request forgery (CSRF), XML
external entity (XXE) injection, SQL injection, Cross-site scripting и т.п. Полный список уязвимостей можно посмотреть
тут:https://portswigger.net/web-security/all-materials)
Burp Suite содержит множество инструментов для выполнения различных задач по тестированию безопасности. Для
работы нам понадобятся:
1. Proxy (прокси) – перехватывающий веб-прокси, который работает как человек-посередине между конечным
браузером и целевым веб-приложением. Он позволяет вам перехватывать, проверять и модифицировать сырой
трафик, проходящий в обоих направлениях.
2. Intruder – это инструмент для проведения автоматизированных индивидуальных атак на веб-приложения.
3. Repeater(повторитель) – это инструмент для ручного манипулирования и повторной отправки отдельных HTTPзапросов и анализа ответов приложения.
Полный список инструментов Burp Suite можно посмотреть тут: https://hackware.ru/?p=2622.
Как устанавливать Burp Suite вы найдете тут: https://hackware.ru/?p=2569.
Как работать в Burp Suite?
1. Запустите Burp Suite с рабочего стола виртуальной машины;
2. В Главном окне мастера выберите Temporary project и нажмите Next:
В окне Конфигурации проекта выберите опцию Use Burp Defaults (стандартные настройки Burp). Для
упражнения нам не нужны другие опции, однако в дальнейшем вы можете использовать любую из 3-х
предложенных:
Нажмите Start Burp. Откроется окно проекта:
Далее мы расскажем, какие настройки необходимы для запуска Burp Suite.
Как настроить Proxy?
Burp Suite предназначен для работы в паре с браузером. HTTP-прокси перенаправляет весь HTTP/S трафик из
вашего браузера проходит чечерез Burp. Для тестирования вам нужно настроить ваш браузер для работы с Burp.
На виртуальных машинах практических упражнений Proxy уже настроен. Вам нужно только убедиться, что он
включен, для чего откройте Burp Suite:
1. Перейдите на вкладку Proxy Options;
2. В секции Proxy Listener в столбце Interface должно быть 127.0.0.1:8080:
1. Откройте браузер Firefox;
2. В правом верхнем меню браузера Firefox установлен плагин FoxyProxy. Откройте этот плагин и активируйте
опцию burp, чтобы Burp Suite мог перехватывать запросы.
3. Теперь трафик будет идти через Burp Suite.
Опция HTTP History
На вкладке HTTP History хранятся все перехваченные запросы (Proxy HTTP History). Здесь можно просматривать
запросы и отправлять их в любые инструменты Burp Suite для дальнейшего анализа безопасности.
Опция HTTP History нам понадобится для того, чтобы не заполнять данные для запросов вручную, что значительно
сократит и ускорит анализ.
Чтобы в списке запросов появились нужные данные, исследуйте сайт. При переходе по страницам сайта и при
выполнении каких-либо действий на сайте (например, загрузка или скачивание файлов) запросы будут появляться
на вкладке HTTP History.
Чтобы просматривать на вкладке HTTP History только нужные запросы, вы можете настроить фильтры:
1. На вкладке HTTP History нажмите на строку Filter
2. В выпадающем меню выберите нужные фильтры
3. Закройте меню. Фильтры применятся ко всем запросам в списке
4. Чтобы вернуть стандартные настройки фильтров, нажмите Revert changes.
Для просмотра запроса выберите в списке нужный запрос. В нижнем поле вы увидите содержимое запроса:
Чтобы отправить запрос в другие инструменты Burp Suite:
1. В списке выберите нужный запрос;
2. Нажмите по запросу правой кнопкой мыши;
3. В выпадающем меню выберите нужный инструмент:
Запрос будет перемещен в выбранный инструмент. Теперь его можно использовать для тестирования.
Инструмент Intruder
Замена – это самое простое, что можно сделать с помощью Intruder. Этот инструмент позволяет выполнять атаки
различных видов, например, атаку перебора пароля, идентификаторов, фаззинг и многое другое.
В качестве примера давайте выполним анализ страницы на уязвимость к SQL-инъекциям. Для этого выполните
следующие шаги:
1. На вкладке HTTP History выберите запрос (например, http://www.hacktory.lab и правой кн. мыши отправьте его в
Intruder с помощью опции Send to Intruder (горячие клавиши Ctrl+I). Программа автоматически заполнит тело
запроса;
2. Перейдите на вкладку Intruder. Вкладка Target будет заполнена автоматически (Host www.hacktory.lab, Port: 80):
1. Перейдите на вкладку Intruder Positions;
2. Выберите Attack Type (тип атаки):
Sniper - одно поле - один payload
Battering ram - все поля - один payload
Pitchfork - то же, что и первый вариант, но позволяет связывать между собой данные из разных полей
Сluster bomb - поочередно перебирает все данные по всем полям
Для примера мы разберем два типа атаки – Sniper и Clusterbomb:
1. На вкладке Positions выберите тип атаки Sniper или Cluster bomb;
2. Отметьте участки текста или позиции, в которые вы будете подставлять свои значения и нажмите Add $:
1. Теперь в каждый выбранный участок текста или позицию можно подставить свои значения. Для этого
перейдите на вкладку Intruder Payloads;
2. На вкладке Payloads для выбранного типа атаки укажите следующие значения:
Если выбран тип атаки Sniper, то вам нужно будет заполнить только один набор Payload, например:
Payload Set: 1;
Payload type: Simple list (для упражнения другие списки нам не понадобятся)
В секции Payload Options в поле рядом с кнопкой Add введите любое значение и нажмите кнопку Add
(значений может быть сколько угодно):
Если выбран тип атаки Cluster bomb, то вам нужно будет указать несколько наборов Payload (PayloadSet: 1,2,
… n) для каждого выбранного участка текста или позиции в теле запроса:
Payload Set: 1, 2, … n;
Payload type: Simple list;
В секции Payload Options в поле рядом с кнопкой Add введите любое значение и нажмите кнопку Add
(значений может быть сколько угодно). Повторите действие для всех наборов Payload (PayloadSet: 1, 2, … n):
Нажмите Start Attack чтобы начать проверку. Атака откроется в новом окне, и по ее окончании вы увидите
результат: в таблице появятся статус-код и размер ответа.
На вкладке Response вы сможете более подробно посмотреть ответ для интересующих вас запросов:
Инструмент Repeater
Давайте теперь рассмотрим инструмент Repeater.
Используя Repeater, вы можете практически полностью изменить выбранный HTTP-запрос и повторно отправить
его для анализа ответов приложения. Таким образом в ответах запросов можно находить скрытую информацию
или узнать, как получить те или иные файлы сайта.
1. На вкладке HTTP History выберите запрос (например, http://www.hacktory.lab) и правой кн. мышки отправьте
его в Repeater с помощью опции Send to Repeater (горячие клавиши Ctrl+R). Программа автоматически
заполнит тело запроса;
2. На вкладке Raw в тело запроса подставьте свои параметры или измените ссылку так, как вам это
необходимо;
3. Нажмите Send. Справа появится ответ. В нашем случае 404 notfound: либо сайт хорошо защищен, либо мы
не там искали:
Подробную информацию об использовании Burp Suite вы найдете тут: https://losst.ru/kak-polzovatsya-burp-suite#1.
SQLmap
SQLmap автоматизирует поиск и эксплуатацию SQL-инъекций, работает с несколькими диалектами SQL, имеет в
своем арсенале огромное количество различных техник, начиная от кавычки "в лоб" и заканчивая сложными
векторами для time-based SQL-инъекций. Также имеет множество техник дальнейшей эксплуатации для различных
СУБД, поэтому полезен не просто как сканер для SQL-инъекций, а еще и как мощный инструмент для эксплуатации
уже найденных SQL-инъекций.
Как использовать SQLmap?
Чтобы запустить SQLmap на пользовательской машине, необходимо выполнить следующие шаги:
1. Запустите консоль LXTerminal;
2. В командной строке введите команду:
sqlmap -u http://www.hacktory.lab/
где,
sqlmap
– исполняемый файл программы
Опции:
-u --url http://www.hacktory.lab/
--data
- URL цели
– указываем параметры для тестирования, передающиеся в POST запросе, (например,
data="txtLoginID=skan&txtPassword=pass&cmdSubmit=Login" )
--crawl
– сканирование сайта с целевого URL. С помощью этой опции можно выставить глубину, ниже
которой sqlmap не будет сканировать (например, --crawl=3)
-f --forms
-dbs
– парсинг и анализ форм на целевом URL
– ключ для перечисления имеющихся баз данных
-D db\_name
– указываем конкретную базу данных (например -Ddvwa)
-T table\_name
– указываем конкретную таблицу (например, -Tusers)
--dump-all
– вытягиваем значения из всех перечисленных столбцов
Примеры использования:
sqlmap --url http://www.hacktory.lab/?id=1
- сканировать параметр id в интерактивном режиме
sqlmap --url http://www.hacktory.lab/?id=1 --batch
sqlmap --url http://www.hacktory.lab/?id=1 --dbs
- сканировать параметр id автоматически
- получить список БД
sqlmap --url http://www.hacktory.lab/?id=1 -D db --tables
- для БД db получить список таблиц
sqlmap --url http://www.hacktory.lab/?id=1 -D db -T table --dump-all
- для БД db и таблицы table получить все
данные
Полный список опций и настроек SQLmap: https://github.com/sqlmapproject/sqlmap/wiki/Usage
TPLmap
TPLmap – инструмент на Python для автоматического выявления и эксплуатации уязвимостей Server-Side Template
Injection. TPLmap имеет схожие с SQLmap настройки и флаги. Использует несколько различных техник и векторов
(включая blind-инъекции), а также техники выполнения кода и загрузки/выгрузки произвольных файлов.
TPLmap имеет в своем арсенале техники для десятка разных движков и шаблонов. А также обладает некоторыми
техниками для поиска eval()-подобных инъекций кода в Python, Ruby, PHP, JavaScript. В случае успешной
эксплуатации открывает интерактивную консоль.
Как использовать TPLmap?
Запустите консоль LXTerminal;
Перейдите в папку Tools/tplmap:
cd Desktop/Tools/tplmap
В командной строке введите команду:
./tplmap.py --os-shell -u http://www.hacktory.lab/
где,
./tplmap.py
– исполняемый файл программы
-u --url http://www.hacktory.lab/
- URL цели
--os-shell
– запускает псевдотерминал в целевой операционной системе для выполнения желаемых кодов
и команд
Полный список опций и настроек TPLmap: https://github.com/epinna/tplmap.
Nmap
Nmap (network mapper) – это набор инструментов для сканирования сети. Nmap может быть использован для
проверки безопасности сети. Он помогает определить, какие компьютеры подключены к сети, и получить
информацию о них, например узнать имя компьютера, идентифицировать операционную систему и используемое
ПО, а также узнать, какие типы фильтров (Firewall) применяются на сканируемом узле.
С помощью Nmap мы будем сканировать сеть и находить интересную информацию о найденных узлах.
Как использовать Nmap?
1. Запустите консоль LXTerminal;
2. В командной строке введите команду:
Примечание: для запуска Nmap требуются привилегии супер-пользователя.
nmap [опции] [url/port]
где,
nmap
url/port
– исполняемый файл программы;
– целевой адрес/порт;
Опции:
-О
– определить ОС
-p
– указать диапазон портов для проверки
-sn
– сканировать порты с использованием опции ping всех IP адресов
-sV
– детальное исследование портов для определения версий служб
-sS/sT/sA/sW/sM
-sU
- TCP сканирование
- UDP сканирование nmap
Полный список опций и настроек Nmap: https://losst.ru/kak-polzovatsya-nmap-dlya-skanirovaniya-seti
Примеры использования:
nmap 10.0.2.0
– сканирование порта
nmap -sL 10.0.2.0
– сканирует сеть на наличие работающих хостов, но не сканирует порты nmap
nmap –sn 10.0.2.0/22
nmap -sV 10.0.2.0
– сканирование портов c использованием опции ping
– получение информации о машине и запущенных сервисах
Скачать