Взлом и безопасность Pentesting с DE-ICE

{title}

Тестирование на проникновение - это тестирование сети на предмет выявления уязвимостей в системе безопасности перед тем, как ее атакуют злоумышленники или злоумышленники. DE-ICE - это виртуальная машина, которая содержит установку Linux Slax и предназначена для практических занятий как для начинающих, так и для опытных практиков.

Slax - это Live CD операционной системы GNU / Linux, основанный на дистрибутиве Slackware. Slax - это портативная операционная система Linux, не занимающая много места и обеспечивающая высокую производительность.

{title}

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 

{title}

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

А) Я использую Zenmap для сканирования всех хостов между 1-254


В уроках:
  • Визуальный инструмент Zenmap для проверки безопасности портов
  • Как использовать Nmap для сканирования открытых портов в вашей VPS и Metasploit Framework для проверки безопасности сервера

Мы увидели некоторые инструменты для сканирования портов и как их использовать.

Мы открываем Zenmap, назначаем ip и параметры для сканирования всей сети и показываем мне подключенные устройства и ip.

{title}

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 и нахожу веб-сайт для регистрации продуктов.

{title}

В принципе [color = # b22222] серьезный сбой [/ color] может заключаться в том, что этот веб-сайт не имеет какого-либо типа контроля доступа пользователей, таким образом, он будет доступен для всех пользователей сети, даже если он находится в интранет

Из Zenmap я также вижу порты, отсканированные для этого хоста.

{title}

Я нахожу несколько открытых портов, чтобы попытаться получить доступ к атакам методом "грубой силы", форсируя пользователя и пароль с помощью таких инструментов, как, например, Hydra или John the Ripper.

Мы также можем увидеть топологию для анализа каждого хоста и с кем он связан.

{title}

Таким образом, таким образом мы можем увидеть характеристики оборудования, как настроена сеть и какие хосты мы можем атаковать.

Б) Сканирование уязвимостей


Я использую OSWAP ZAP для сканирования уязвимостей. Мы увидели этот инструмент в уроке:
  • Сканирование уязвимости сайта с помощью ZAP

$config[ads_text5] not found

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

{title}

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

В случае страницы вставки продукта мы видим, что он получает параметры методом POST, и мы также можем видеть поля или переменные, которые он получает.

$config[ads_text6] not found

{title}

C) Инъекция кода XSS


Далее мы перейдем на страницу добавления продукта (Add Product) и применим методы внедрения XSS, где я внедряю HTML-код и Javascript, чтобы увидеть, уязвим ли он для этого типа атак.

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

{title}
Если изображение уязвимо, оно будет сохранено в базе данных и будет отображаться в списке продуктов, которые мы должны искать в комбо-коде с помощью кода, который мы ему присвоили, в результате получается следующее:

$config[ads_text5] not found

{title}

[color = # b22222] Он уязвим для XSS [/ color], поскольку мы можем ввести любой HTML-код или код JavaScript, включая ссылки.

Вставьте iframe в поле описания и сохраните:

{title}

Затем мы ищем товар по коду 003 и видим результат

{title}

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

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

D) SQL-инъекция Доступ к базе данных


Sqlmap - очень полезный инструмент для проверки безопасности серверов баз данных в учебных руководствах:
  • SQLMAP SQL Injection инструмент и этические базы данных взлома
  • BadStore: Интернет для тестирования на пентест.

Я использую sqlmap, чтобы определить, доступна ли какая-либо база данных, используя следующие команды.

 python sqlmap.py -u «http://192.168.0.40/products.php?id=1» --dbs 

{title}

Мы можем видеть, что сервер 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 

{title}

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

 python sqlmap.py -u «http://192.168.0.50/products.php?id=1» --columns -D merch -T продукты 

{title}

Я ищу, чтобы найти пользователей, которые имеют учетную запись Mysql, пытаясь найти администратора, по умолчанию я использую словарь данных sqlmap, расположенный в папке sqlmap-dev / txt / wordlist.zip

$config[ads_text5] not found

{title}

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

 python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --users --passwords 

{title}

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

 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

{title}

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

{title}

Когда сканирование завершено, в конце списка мы видим привилегии каждого пользователя и определяем, какие пользователи являются администраторами.

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

Затем я пытаюсь нарушить SSH порта 22 с полученными данными:

{title}

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

{title}

Имея доступ через SSH с комбинацией имени пользователя и пароля, мы получили. Нашей следующей целью будет повышение привилегий, хотя у нас уже есть пользователь root или администратор.
Чтобы манипулировать разрешениями, мы должны обращаться к файлам, которые содержат разрешения, пользователей, группы и коды доступа. Эти файлы находятся в каталоге / etc

  • Пользователь и группы с их ключами в каталоге: / etc / passwd
  • Группы и разрешения в каталоге: / etc / sweats

Мы можем получить доступ к файлу пользователей и системных ключей с помощью следующей команды:

 нано / etc / пароль 

{title}

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

{title}

Теперь, когда мы знаем данные доступа администратора, мы можем войти на виртуальную машину.

{title}

Как избежать 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, и мы можем отправить несколько зашифрованных данных, чтобы окончательный формат параметра не имел прямого отношения к данным или полям в базе данных.

{title}

Также должна существовать система, которая избегает сканирования портов и нескольких подключений с одного IP-адреса, в этом случае будет достаточно брандмауэра с iptables и детектора вторжений.

Одним из инструментов, который мы можем использовать, является PortSentry или Fail2Ban, который устанавливается из репозитория Linux, и мы должны только указать, какие порты должны быть защищены, если один из этих портов сканируется, он автоматически блокирует IP-адрес, который нас атакует.

  • 0