Тестирование на проникновение - это тестирование сети на предмет выявления уязвимостей в системе безопасности перед тем, как ее атакуют злоумышленники или злоумышленники. DE-ICE - это виртуальная машина, которая содержит установку Linux Slax и предназначена для практических занятий как для начинающих, так и для опытных практиков.
Slax - это Live CD операционной системы GNU / Linux, основанный на дистрибутиве Slackware. Slax - это портативная операционная система Linux, не занимающая много места и обеспечивающая высокую производительность.
Slax предоставляет предустановленный репозиторий программного обеспечения и широко используется администраторами для создания тестовых платформ, специальных и полезных дистрибутивов для создания инструментов восстановления, тестов на проникновение, моделирования безопасности и сети с виртуальными машинами для системных администраторов и разработчиков. Программное обеспечение или эксперты по безопасности, система занимает около 190 МБ. Графический интерфейс может быть установлен или не установлен, но это займет много места и замедлит работу системы.
De-ICE может быть установлен на VirtualBox или записан на CD для использования в качестве LiveCD. Существует несколько версий, представляющих различный уровень сложности, версия для начинающих - DE-ICE1.100, а самая сложная в настоящее время - DE-ICE1.140. Для этого урока мы будем использовать версию DE-ICE 1.120, доступную по адресу //www.vulnhub....e-ice-s1120, 10/.
Эта виртуальная машина специально подготовлена для проверки наших знаний и применения любых методов или инструментов тестирования на проникновение.
Тестирование De-ICE PenTest Lab 1.120
Для процедур тестирования на проникновение установите версию DE-ICE.1.120 и используйте Linux Mint и VirtualBox для установки DE-ICE. Его можно использовать в любой операционной системе, которая позволяет создавать виртуальные машины.
Я начинаю искать свой текущий ip из терминала, используя команду ifconfig, и результат выглядит следующим образом:
IP: 192.168.0.11
Затем я использую другое программное обеспечение по своему выбору, но вы можете попробовать другие, чтобы удовлетворить пользователя.
А) Я использую Zenmap для сканирования всех хостов между 1-254
В уроках:
- Визуальный инструмент Zenmap для проверки безопасности портов
- Как использовать Nmap для сканирования открытых портов в вашей VPS и Metasploit Framework для проверки безопасности сервера
Мы увидели некоторые инструменты для сканирования портов и как их использовать.
Мы открываем Zenmap, назначаем ip и параметры для сканирования всей сети и показываем мне подключенные устройства и ip.
IP 192.168.0.1 соответствует IP-шлюзу маршрутизатора с открытым портом 80 и IP-адресу маршрутизатора 192.168.0.10 со всеми закрытыми портами.
Глядя на топологию и характеристики каждого хоста, я определяю, что ip 192.168.0.38 - это ip WiFi виртуальной машины, а ip 192.168.0.40 - это соединение Ethernet, это виртуальная машина.
Я получаю доступ к IP-адресу виртуальной машины или VPS и нахожу веб-сайт для регистрации продуктов.
В принципе [color = # b22222] серьезный сбой [/ color] может заключаться в том, что этот веб-сайт не имеет какого-либо типа контроля доступа пользователей, таким образом, он будет доступен для всех пользователей сети, даже если он находится в интранет
Из Zenmap я также вижу порты, отсканированные для этого хоста.
Я нахожу несколько открытых портов, чтобы попытаться получить доступ к атакам методом "грубой силы", форсируя пользователя и пароль с помощью таких инструментов, как, например, Hydra или John the Ripper.
Мы также можем увидеть топологию для анализа каждого хоста и с кем он связан.
Таким образом, таким образом мы можем увидеть характеристики оборудования, как настроена сеть и какие хосты мы можем атаковать.
Б) Сканирование уязвимостей
Я использую OSWAP ZAP для сканирования уязвимостей. Мы увидели этот инструмент в уроке:
- Сканирование уязвимости сайта с помощью ZAP
Это позволяет нам сканировать уязвимости веб-сайта, представляя отчеты об обнаруженных уязвимостях.
Используя фильтры, а также действующие и пассивные правила сканирования, мы можем найти уязвимости в Интернете. Он также показывает нам все страницы, которые есть в сети, он даже говорит нам, какие из них получают какой-то параметр на URL.
После сканирования я вижу структуру Интернета со страницами, запрограммированными в PHP, и уязвимости в соответствии с примененными фильтрами.
В случае страницы вставки продукта мы видим, что он получает параметры методом POST, и мы также можем видеть поля или переменные, которые он получает.
$config[ads_text6] not foundC) Инъекция кода XSS
Далее мы перейдем на страницу добавления продукта (Add Product) и применим методы внедрения XSS, где я внедряю HTML-код и Javascript, чтобы увидеть, уязвим ли он для этого типа атак.
В качестве первого теста я добавляю html-код внешнего изображения в описание продукта, любой можно выбрать, выполнив поиск в Google.
Если изображение уязвимо, оно будет сохранено в базе данных и будет отображаться в списке продуктов, которые мы должны искать в комбо-коде с помощью кода, который мы ему присвоили, в результате получается следующее:$config[ads_text5] not found[color = # b22222] Он уязвим для XSS [/ color], поскольку мы можем ввести любой HTML-код или код JavaScript, включая ссылки.
Вставьте iframe в поле описания и сохраните:
Затем мы ищем товар по коду 003 и видим результат
С помощью этой техники мы можем ввести форму, в которой мы имитируем логин и данные на самом деле хранятся во внешней базе данных. Мы можем отключить список продуктов, вызывающих перенаправление на другой веб-сайт, если в любое поле регистрации продукта добавим следующий HTML-код:
Когда кто-то пытается просмотреть список продуктов, он будет автоматически перенаправлен на указанный в этом случае веб-сайт Google.D) SQL-инъекция Доступ к базе данных
Sqlmap - очень полезный инструмент для проверки безопасности серверов баз данных в учебных руководствах:
- SQLMAP SQL Injection инструмент и этические базы данных взлома
- BadStore: Интернет для тестирования на пентест.
Я использую sqlmap, чтобы определить, доступна ли какая-либо база данных, используя следующие команды.
python sqlmap.py -u «http://192.168.0.40/products.php?id=1» --dbs
Мы можем видеть, что сервер Apache 2.2.11, который использует php 5.2.9, и что сервер базы данных MySQL 5.0.12, мы также визуализируем все доступные базы данных, включая те, которые являются конфигурацией базового сервера. Данные MySQL.
Затем я использую команду, чтобы проверить, есть ли таблицы в базе данных Merch, что, как я полагаю, имеет таблицу продуктов, которую мы вводим в Интернете.
python sqlmap.py -u «http://192.168.0.40/products.php?id=1» --tables -D merch
Мы находим таблицу, используемую на сайте. Далее я могу посмотреть на таблицу продуктов с помощью следующей команды
python sqlmap.py -u «http://192.168.0.50/products.php?id=1» --columns -D merch -T продукты
Я ищу, чтобы найти пользователей, которые имеют учетную запись Mysql, пытаясь найти администратора, по умолчанию я использую словарь данных sqlmap, расположенный в папке sqlmap-dev / txt / wordlist.zip
$config[ads_text5] not foundВ этом каталоге мы найдем несколько словарей, sqlmap будет распаковывать и использовать файл для поиска пользователей и пароля, чтобы проверить, могу ли я обнаружить и получить имена пользователей, настроенные на сервере MySQL, для этого я использую следующую команду:
python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --users --passwords
Далее я ищу тип пользователя, чтобы увидеть, какие привилегии доступа у каждого пользователя, чтобы определить, кто является администраторами и каковы их коды доступа.
python sqlmap.py -u "http://192.168.0.65/products.php?id=1" -f -b --current-user --is-dba --is-dba --privileges --dbs - свалка$config[ads_text6] not found
В результате выполнения ключи каждого пользователя открываются для доступа к базам данных и их привилегий.
Когда сканирование завершено, в конце списка мы видим привилегии каждого пользователя и определяем, какие пользователи являются администраторами.
Я обнаружил, что есть несколько пользователей-администраторов, поэтому я возьму пользователя jdavenport, который является администратором, а его пароль - babyl0n, чтобы попытаться получить доступ к системе.
Затем я пытаюсь нарушить SSH порта 22 с полученными данными:
Видно, что я получил доступ как администратор, и у меня есть полный контроль над сервером. Используя команду cd /, мы переходим в корневой каталог и оттуда получаем доступ к любому сектору, например, к просмотру папок и учетных записей других пользователей.
Имея доступ через SSH с комбинацией имени пользователя и пароля, мы получили. Нашей следующей целью будет повышение привилегий, хотя у нас уже есть пользователь root или администратор.
Чтобы манипулировать разрешениями, мы должны обращаться к файлам, которые содержат разрешения, пользователей, группы и коды доступа. Эти файлы находятся в каталоге / etc
- Пользователь и группы с их ключами в каталоге: / etc / passwd
- Группы и разрешения в каталоге: / etc / sweats
Мы можем получить доступ к файлу пользователей и системных ключей с помощью следующей команды:
нано / etc / пароль
Мы можем просматривать каталоги между ними, просматривать файлы в Интернете, которые мы анализируем, а затем загружать их через ftp или из консоли ssh. Мы можем скопировать их в наш локальный каталог, если мы хотим отредактировать их или проверить код, чтобы сделать его более безопасным и повторно протестировать,
Теперь, когда мы знаем данные доступа администратора, мы можем войти на виртуальную машину.
Как избежать SQL-инъекций
Веб-безопасность здесь очень важна, потому что из-за проблемы внедрения SQL мы берем весь сервер.
Вы должны контролировать то, что отправляется в качестве параметра в URL, например:
http://192.168.0.40/products.php?id=1При выполнении запроса sql мы должны убедиться, что символы или параметры, которые не соответствуют, не могут быть введены, например:
$ sql = SELECT * ОТ пользователей, ГДЕ user = 'jose' и password = '12345' OR '1' = '1';Предложение очень похоже на логин пользователя, где мы ищем, если есть имя пользователя и пароль, в таблице пользователей, если есть кто-то, зарегистрированный с именем пользователя, которое мы отправляем в качестве параметра, и если его пароль равен «12345 или 1 равно до 1 '.
Это выражение определяет, что если ключ неверен, выражение 1, равное 1, будет истинным, и мы попадем в систему, не зная пароля.
Одним из методов является экранирование переменных, например, в PHP:
mysql_real_escape_string ($ _ POST ['user']);Если нам нужно отправить параметры по URL, мы должны зашифровать их, используя md5, sha1 или base64, и мы можем отправить несколько зашифрованных данных, чтобы окончательный формат параметра не имел прямого отношения к данным или полям в базе данных.
Также должна существовать система, которая избегает сканирования портов и нескольких подключений с одного IP-адреса, в этом случае будет достаточно брандмауэра с iptables и детектора вторжений.
Одним из инструментов, который мы можем использовать, является PortSentry или Fail2Ban, который устанавливается из репозитория Linux, и мы должны только указать, какие порты должны быть защищены, если один из этих портов сканируется, он автоматически блокирует IP-адрес, который нас атакует.
- 0
СТАТЬИ