Лаборатория тестирования на проникновение v.9: нет ничего невозможного
Содержание:
- Изучаем MAINSITE
- Рекомендации программ и инструментов для пентестинга
- Изучаем FTP
- Часть 2. Вы все еще не шифруете? Тогда мы идем к вам уже тут
- DEV и MITM
- Формируем payload
- Photo-hosting и загрузка файлов
- Какой метод выбрать?
- Атакуем SSH
- Требуется тестировщик на проникновение
- Cамый быстрый токен — CISCO
- Часть 3. Роскомнадзор наносит ответный удар
- Методики тестирования на проникновение
- Открываем PORTAL
- Чем занимается пентестер
- Что будет сделано
- “Tragick” SITE-TEST
- Пентест = Исследование + Отчет и рекомендации + Шоу.
- Ограничения пентеста
- Основные этапы пентестинга
- Вопрос доверия
Изучаем MAINSITE
Нам приходит заголовок — виртуальный хост, по которому собственно и будет доступен сайт компании.
Добавляем нужный домен в и пробуем еще раз:
Отлично, сайт поднялся, и можно его начать изучать. Попробуем понять, что это такое. Перед тем, как начать изучать сайт вручную, можно запустить утилиту whatweb, а затем dirb, которая поможет определить, какие есть поддиректории (можно воспользоваться и другими сканерами, например nikto):
Видим, что коды ответов на все запросы равны 403 — наверняка сайт защищен WAF-ом. Так как в браузере все работает, пробуем подставить User Agent и находим несколько интересных страниц:
Параллельно смотрим на сайт, видим, что это — WordPress, защищенный WAF-ом. Заход на страницу /admin переводит нас на закрытый wp-login.php.
Для WordPress сайтов есть великолепная утилита wpscan, которая позволяет проверить их на наличие плагинов с уязвимостями. Пробуем для начала посмотреть общую информацию по сайту, подставив нужный user agent. Он тут же находит несколько проблем, в том числе и уязвимый к SQL injection плагин wp-symposium v15.1.
Теперь пробуем проэксплуатировать каждую из приведенных уязвимостей с помощью эксплоитов по ссылкам. К сожалению, срабатывает WAF, и запросы с пэйлоадами на SQL не проходят. Попробуем его обойти…
Рекомендации программ и инструментов для пентестинга
В этой статье мы собираемся составить список фундаментальных программ и инструментов для запуска в мире Pentesting, логически эти инструменты более чем используются и известны специалистам.
VMware и VirtualBox
Вашим главным союзником при выполнении Пентестинга будет виртуальная машина. И VMware, и VirtualBox позволят нам создавать виртуальные машины с реальными операционными системами для обучения, а также устанавливать ориентированные на Pentesting операционные системы, такие как Kali Linux и другие дистрибутивы Linux с аналогичными целями
Важной деталью является то, что VMware — это платежное решение, а VirtualBox — полностью бесплатное решение
Обе программы будут необходимы для тестирования и обучения, на их официальных сайтах вы можете найти все подробности о решениях и ссылки для скачивания.
Kali Linux
- Собирать информацию
- Сканирование уязвимостей
- Атаки на беспроводные сети
- Веб-приложения
- Чтобы воспользоваться уязвимостями
- Компьютерная криминалистика
- Стресс-тестирование
- Нюхать и подделывать
- Атаки паролем
- Обратный инжиниринг и многое другое.
Вы можете получить доступ к официальному сайту здесь, чтобы загрузить последнюю версию и получить доступ к поддержке, необходимой для инструментов и процедур.
PentestBox
PentestBox — это инструмент для тестирования на проникновение, который работает непосредственно в операционных системах Windows. Он предназначен для простоты и разнообразия вариантов выполнения наших тестов. Само собой разумеется, что он не имеет стоимости и совместим с несколькими популярными инструментами, такими как WireShark , Nmap , Джон Потрошитель и другие. Одна из его особенностей заключается в том, что он выполняется через командную строку (cmd).
Если вы хотите начать с Pentesting быстрее, не проходя этапы загрузки и установки, это очень хорошая альтернатива, если вашей основной операционной системой является Windows.
Кроме того, это портативный. Это означает, что вся ваша тестовая среда может быть взята с собой, когда вам это нужно, она не требует установки. Нет необходимости вносить какие-либо изменения в конфигурации и зависимости. Об этом позаботится сам PentestBox. Вам нужно только выбрать устройство хранения, которое вы будете использовать для переноски. Это может быть даже Pendrive.
Руководство по тестированию OWASP
Если вы заинтересованы в вхождении в мир веб-приложений, это книга окажет большую помощь Акроним для OWASP стенды для Открытый проект безопасности веб-приложений это открытое сообщество с глобальным охватом. Его основная цель — повысить безопасность приложений, а также предоставить всем заинтересованным сторонам то, что нужно знать, чтобы добиться успеха в этой области. Успех, о котором мы говорим, относится не только к выполнению задач, но и к принятию решений, если мы планируем реализовать некоторые меры безопасности.
Все материалы, включая этот, постоянно бесплатны. Кроме того, у них есть лицензия, поэтому вы можете свободно копировать, распространять или распространять. При необходимости вы можете модифицировать или адаптировать контент так, чтобы он подходил разным аудиториям или потребностям, всегда уважая корни и принципы OWASP.
Что хорошего в цифровой книге? Это очень полезно, потому что книги, а также большое количество курсов, доступных в Интернете, являются одним из ключей к достижению совершенства.
Вы заинтересованы в большем? Вы можете получить доступ к большому количеству онлайн-курсов на таких платформах, как Openwebinars, а также Udemy, которые идеально подходят для изучения новых методов или улучшения уже известных методов. Мы уверены, что с этим руководством у вас будет все необходимое для участия в акции. Помните, что нет необходимости охватывать весь объем Pentesting с самого начала. Скорее, идите вперед с небольшими группами команд, пока не достигнете уровня, которого мы хотим достичь.
Изучаем FTP
Просканировав с помощью nmap сервер 172.16.0.4, находим открытый 21-й порт (ftp) и 22-й порт (ssh). Естественно, вход с нашим ssh ключиком не срабатывает, поэтому сконцентрируемся на самом FTP.
ProFTPD 1.3.5 имеет известную уязвимость, связанную с копированием файлов без аутентификации, которую можно проэксплуатировать через веб-сервер — копируем в /var/www, например, /etc/passwd, и мы уже немного ближе к цели.
Проблема в том, что веб сервер на этой машине не запущен… Попробуем подключиться к ftp серверу:
Анонимный вход доступен, и в папке dist находим исходники сервера. Интересно, наверняка их выложили не просто так, попробуем их поизучать. Скачиваем и распаковываем архив proftpd-dfsg-1.3.5.tar.bz2 с помощью ftp-клиента (команды lcd и get) и пробуем поискать изменения в коде. Начнем с поиска подстроки CYBEAR, и тут же находим файл src/help.c:
Попробуем воспользоваться предоставленным бекдором!
Ну и в папке /home находим целый набор интересных файлов:
Кроме токена в папке “old” мы находим:
- новую учетную запись m.barry,
- тестовый скрипт в папке m.barry/upload/test_scripts,
- конфигурационный файл роутера cisco c паролями,
- файл trouble.cap с паролем m.barry и указанием на то, что сервер dev скачивает все питоновские скрипты из папки test_scripts c FTP и, возможно, запускает их.
К сожалению, просто так подложить файл в test_scripts нельзя — недостаточно прав, поэтому придется продвигаться дальше и искать другой способ атаки на dev сервер.
Часть 2. Вы все еще не шифруете? Тогда мы идем к вам уже тут
- Хорошая: учетных данных наловилось очень много и атака в целом работала.
- Плохая: все учетные данные были от клиентов самого заказчика. Оказывая услуги по поддержке, специалисты заказчика подключались к сервисам клиентов, у которых не всегда было настроено шифрование трафика.
Supply Chain Compromise согласно матрице MITRE
preobrazhenskyIntercepter
- Определял по User-Agent текущий браузер. Если это был Internet Explorer, Edge или Chrome — работал дальше.
- Ждал, пока сформируется DOM страницы.
- Вставлял в DOM невидимую картинку с атрибутом src вида preobrazhensky:8080/NNNNNNN.png, где NNN — произвольные цифры, чтобы BlueCoat не закешировал.
- Выставлял глобальную переменную-флаг, что инъекция была произведена и больше не нужно вставлять картинки.
Массовые тайные посещения сервера уролога пользователями
DEV и MITM
С получением доступа в локальную подсеть 192.168.3/24 у нас открываются новые возможности для атаки. Вспомним схему сети и заодно файл trouble.cap, найденный на FTP сервере:
Очевидно, dev сервер обращается к FTP, скачивает оттуда все *.py файлы из папки test_scripts, как видно в trouble.cap, и, вероятнее всего, выполняет их. Доступ в эту папку на FTP сервере можно получить только от root.
Теперь, когда в нашем распоряжении сервер terminal, на котором удобно расположен Intercepter-NG, мы можем легко организовать MITM атаку. Попробуем!
Включаем Intercepter-NG из папки C:Intercepter-NG. Первым делом нужно просканировать локальную сеть. Нажимаем правой кнопкой на пустом месте в таблице, ставим на всякий случай побольше ARP Scan Timeout и запускаем Smart Scan.
Intercepter при этом рассылает ARP запросы в своей подсети, чтобы определить существующие в ней хосты, а затем пробует определить, какая на каждом из них установлена ОС.
Отлично, определились два хоста:
Stealth IP — это несуществующий IP адрес, который используется Intercepter-ом для осуществления MITM-атаки.
Так как клиент и сервер находятся в разных подсетях, они будут общаться друг с другом через шлюз; добавляем 3.3 в NAT, а 3.254 как шлюз.
Параллельно нужно создать папочку на ftp сервере, в которую будет заходить dev, вместо папки upload. В названии должно быть столько же символов, сколько и в “upload”, так как Intercepter-NG может делать замену в трафике только для строк одинаковой длины.
В скрипт test.py, конечно, разместим полезную нагрузку — реверс шелл на 172.16.0.2 на порт 6666:
Настраиваем Intercepter:
Traffic changer будет заменять upload на .uploa и, соответственно, когда m.barry сделает CWD upload, он попадет в нашу директорию .uploa и оттуда уже скачает наш скрипт, который и создаст нам reverse shell.
Включаем слушающую часть на SSH:
И включаем Incercepter нажатием трех кнопок: сначала общий sniff-инг справа вверху, затем NAT и затем ARP poison.
Через минуту получаем шелл:
А заодно и токен сервера dev:
Формируем payload
Теперь нужно создать Word-документ, который не определяется антивирусами как зараженный. После множества неудачных попыток (удобно тестировать в своей среде перед настоящей атакой), получилось выработать рабочий вариант.
Не будем весь payload сохранять сразу в документ, а сделаем так, чтобы он скачивал его с нашего сервера. Для этого сделаем следующее:
1. Используем setoolkit для создания payload:
Выбираем опцию 1 (Social-Engineering Attacks), затем 9 (Powershell Attack Vectors) и затем 1 (Powershell Alphanumeric Shellcode Injector):
Запускаем на локальной машине веб сервер и копируем полученный payload из /root/.set/reports/powershell в /var/www/html/payload.txt:
Проверяем, что файл доступен:
Как показано, нам нужно обфусцировать команду загрузки payload:
Вводим:
Получаем результат и вставляем в документ. Я добавил еще Document_Open() на всякий случай.
При добавлении макроса важно сохранить его именно в документ, а не в шаблон Normal. Сохраняем документ с расширением docm, кладем в папочку со скриптом senddoc.py, и теперь остался последний шаг
Сохраняем документ с расширением docm, кладем в папочку со скриптом senddoc.py, и теперь остался последний шаг.
3. Запускаем Metasploit
Перед запуском еще раз проходимся по небольшому «чеклисту»:
- порт 587 с 172.16.0.1 проброшен на локальный 127.0.0.1,
- документ находится в папке вместе со скриптом для отправки почты.
Запускаем!
И через минуту:
Идем в C:Usersr.diazDesktop и получаем токен!
Photo-hosting и загрузка файлов
Сервер фото встречает нас формой для загрузки файлов и ничего больше, наверняка в ней и есть уязвимость.
С точки зрения разработчика сделать upload файлов безопасным очень сложно — векторов атаки на него может быть очень много: это или неработающая валидация по расширению файла, его MIME-типу, или уязвимость в библиотеке, которая обрабатывает файл, или race condition, или любая из множества других проблем.
Для начала посмотрим, на чем написан сайт:
И заодно запустим dirb, чтобы посмотреть какие скрытые директории есть на веб-сервере.
Директория upload доступна прямо на сервере, попробуем загрузить безобидную картинку и убедимся, что файлы сохраняются именно в эту папку:
Так и есть, google.png доступен
Обращаем внимание, что сайт показывает размеры картинки, видимо есть какой-то анализ. Пробуем загрузить PHP файл:
Изменить MIME-тип и расширение не помогает:
Интересно, это дает нам сразу две подсказки: во-первых, файл, возможно, сначала загружается, а затем удаляется, и его можно успеть дернуть, и, во-вторых, мы еще раз убеждаемся, что проверка на то, что это картинка присутствует (видимо, с помощью , которую можно обмануть, добавив, например, GIF заголовок). Пробуем еще раз с таким файлом file.jpg:
Файл загрузился успешно и даже доступен:
Но, к сожалению, не выполняется. Пробуем загрузить этот файл с разными расширениями, раз php не срабатывает: .htaccess, .php5, .phtml и .pht — последний вариант работает! Он тоже выполняется:
Теперь нужно получить шелл. Для этого слушаем с помощью nc на сервере SSH, и обращаемся к файлу:
И удачно получаем коннект:
Прямо в папке upload можно найти токен в скрытой поддиректории:
Кстати, ради интереса можно изучить и исходники:
Видим, что файл сначала сохраняется в папку, а затем только проверяется, то есть кроме эксплуатированной нами уязвимости есть еще и race condition.
Кроме токена и этого кода на сервере ничего интересного не обнаруживаем и продолжаем дальше!
Какой метод выбрать?
По мнению ряда экспертов, достаточно хорошими типами пентестов являются PTES и OWASP, благодаря тому, как эти методы структурированы. По их словам, Penetration Testing Execution Standard (или PTES) в дополнение к тому, что он принят многими авторитетными специалистами, уже является моделью, используемой в учебных пособиях для таких систем пентестинга, как Rapid7 Metasploit.
С другой стороны, Open Source Security Testing Methodology Manual (OSSTMM) стал стандартом. Хотя эти тесты не особо новаторские, он является одним из первых подходов к универсальной структуре концепции безопасности. Сегодня он стал ориентиром не только для организаций, которые хотят разрабатывать качественный, организованный и эффективный пентестинг, но и для целого ряда компаний.
В качестве альтернативы, Information Systems Security Assessment Framework (ISSAF) организует данные вокруг так называемых «критериев оценки», каждый из которых был составлен и рассмотрен экспертами в каждой сфере применения решений безопасности. Payment Card Industry Data Security Standard (PCI DSS) был разработан советом ведущих компаний-эмитентов кредитных и дебетовых карт и он служит в качестве руководства для организаций, которые обрабатывают, хранят и передают данные о владельцах карт. Именно под этот стандарт был разработан PCI-пентестинг.
Количество методов и фреймворков достаточно большое, они обширны и разнообразны. Как уже было сказано, выбор между ними будет зависеть от понимания потребностей вашей компании и знания требуемых стандартов безопасности. Но делая все правильно, вы сможете защищать свои системы намного более эффективно, заранее зная, где и как они могут выйти из строя. Бесценная информация для тех, кто умеет ею пользоваться.
Атакуем SSH
Несмотря на предыдущее замечание, к сожалению, ни один из найденных паролей пока что не подошел к почте (которая обычно дает очень неплохие результаты в продвижении вглубь корпоративной сети). Не беда, попробуем подключиться к SSH на порту 22 и попробовать там. Пробуем и видим следующую картину:
Довольно необычная ситуация для подключения по SSH: видимо, используется собственный модуль для аутентификации
Кроме того, обращаем внимание на то, что система запрашивает сначала “The password”, а потом еще и “Password”
Пробуем все найденные учетные данные в разных комбинациях — безрезультатно.
Так как ни почта, ни SSH не принесли желаемых результатов, а других доступных сервисов больше не остается, видимо, мы что-то упустили. SSH важен еще и тем, что мы получим доступ внутрь корпоративной сети и сможем продвинуться дальше, поэтому нам интересно сконцентрироваться на нем.
Пробуем еще раз и видим автора скрипта: Pam krakenwaffe — не похоже на что-то стандартное.
Ищем это в Google и вскоре находим аккаунт разработчика krakenwaffe на Github, который к тому же работает в компании cybear32c — интересно!
Под рутом зайти не получится, смотрим, что дальше… Внимание привлекает следующий участок:
Видим, что введенный пароль проходит сравнение с . Пробуем подставить текущее значение, а именно “daypass80” на момент написания этой части документа:
Все равно не срабатывает. Тогда вспоминаем, как зовут нашего разработчика, который поделился с нами паролем через Github — David Nash. Пробуем зайти под d.nash:
Получилось! Мы зашли на SSH сервер. Посмотрим, что есть вокруг:
Помимо токена в папке .ssh также находим и приватный ключ для подключения к другим серверам (к каким — можно узнать, поработав с файлом known_hosts) — наверняка пригодится в дальнейшем!
Теперь мы получаем плацдарм для следующих атак, и перед нами открывается вся корпоративная сеть компании CyBear32C.
Требуется тестировщик на проникновение
$102 000
- Навыки кодинга, необходимые для проникновения в любую систему;
- Всестороннее знание компьютерной безопасности, включая криминалистику, системный анализ и многое другое;
- Понимание того, как хакеры используют человеческий фактор для получения несанкционированного доступа к защищенным системам;
- Чёткое понимание того, как нарушения компьютерной безопасности могут навредить бизнесу, включая финансовые и управленческие последствия;
- Исключительные навыки решения проблем;
- Коммуникативные навыки, чтобы использовать человеческий фактор при тестах;
- Навыки ясно и последовательно излагать свои мысли, чтобы документировать и делиться своими выводами.
Cамый быстрый токен — CISCO
Попробуем воспользоваться найденной информацией и начнем с cisco — пароль у нас уже есть. Вспоминаем IP по схеме сети и пробуем зайти:
Сразу же получаем токен! Теперь попробуем сбрутить хеш для enable 3:
Находим пароль, пробуем его и получаем привилегированный режим:
Все готово. Конфигурационный файл роутера разрешает делать мониторинг трафика:
С помощью этих команд можно поизучать трафик, идущий через эту подсеть (а именно — portal).
Как оказалось, есть возможности пройти лабораторию разными способами, и лично мне мониторинг трафика не понадобился. Поэтому я предлагаю оставить эту часть на самостоятельную проработку и продвинуться дальше.
Часть 3. Роскомнадзор наносит ответный удар
- У компании есть WiFi-сеть с аутентификацией по доменным учеткам с доступом в локальную сеть. С текущим набором данных это уже рабочий вектор атаки, но нужно идти в офис ногами и где-то размещаться на территории офиса заказчика.
- Нашлась инструкция, согласно которой был сервис, позволявший… самостоятельно зарегистрировать устройство «второго фактора» аутентификации, если пользователь находится внутри локальной сети и уверенно помнит свои доменные логин и пароль. В данном случае «внутри» и «снаружи» определялось путем доступности порта этого сервиса для пользователя. Порт не был доступен из интернета, но вполне себе был доступен через DMZ.
На этом редком кадре вы можете заметить, как Роскомнадзор помогает пентестерам
Методики тестирования на проникновение
- The Open Web Application Security Project («OWASP») Testing Guide v4;
- Open Source Security Testing Methodology Manual («OSSTMM») v3;
- Technical Guide to Information Security Testing and Assessment (SP 800-115);
- ISACA IS auditing procedure «Security assessment-penetration testing and vulnerability analysis»;
- Penetration Testing Execution Standard («PTES»);
- A Penetration Testing Model («BSI»);
- Payment Card Industry («PCI») Data Security Standard («DSS») Guidance: PCI Information Supplement: Penetration Testing Guidance v3.2 April 2016;
- Federal Risk and Authorization Management Program («FedRAMP»): FedRAMP Penetration Test Guidance 1.0.1.
Открываем PORTAL
Попробуем изучить сервер portal. Начнем со сканирования портов.
Обнаружился порт 8080, зайдя на который мы, собственно, и увидим портал:
Пробуем разные пароли из тех, что были найдены ранее. Подходит, например, логин t.smith с его паролем. Пароли можно было переиспользовать уже два раза — на terminal2 и здесь.
Получаем страницу отпусков и новые учетные данные:
Пробуем зайти или подобрать пароль к логину a.petrov — безуспешно
Затем обращаем внимание на куки:
Выглядит как base64, декодируем:
Это Java объект, в котором хранится имя пользователя и хеш его пароля в виде md5. Пробуем «подсунуть» имя a.petrov — не срабатывает.
Раз объект приезжает на клиент и затем восстанавливается на сервере, попробуем копнуть в этом направлении.
После прочтения инструкции становится понятно, что есть возможность выполнить произвольную команду на сервере, используя утилиту. Она генерирует Java-объект, который потом во время десериализации выполнит
нужную нам команду (а именно reverse shell, в нашем случае).
Пишем небольшую команду для удобной отправки содержимого, генерируемого ysoserial в виде base64-куки на bash:
Возникает ошибка при выполнении:
Она уже исправлена в репозитории, но еще не собрана в release. Клонируем новую версию с github, устанавливаем maven и собираем ее локально:
Получаем нужный нам файл!
Обновляем команду на новый payload Commons-Collections5:
На сервере ssh как обычно запускаем netcat, который слушает на порту 1235, запускаем на выполнение и:
Долгожданный шелл. Находим token.txt в корневой папке:
И еще один токен поддался!
Поизучав немного портал, находим кое-что интересное в crontab:
Скрипт проверки почты! Посмотрим, что в нем.
Имя и пароль b.muncy в почту! Вот мы и подобрались вплотную к заданию mail.
Чем занимается пентестер
- Проведение тестов на проникновение в компьютерные системы, сети и приложения
- Создание новых методов тестирования для выявления уязвимостей
- Выполнение оценки физической безопасности систем, серверов и других сетевых устройств, чтобы определить области, которые требуют физической защиты
- Определение методов и точек входа, которые злоумышленники могут использовать для использования уязвимостей или слабых мест
- Поиск слабых мест в общем программном обеспечении, веб-приложениях и проприетарных системах
- Исследование, оценка, документирование и обсуждение результатов с ИТ-командами и руководством
- Просмотр и предоставление отзыва об исправлениях в системе информационной безопасности
- Обновление и улучшение существующих служб безопасности, включая оборудование, программное обеспечение, политики и процедуры
- Определение области, где необходимы улучшения в обучении безопасности и осведомленности для пользователей
- Быть внимательным к корпоративным интересам при проведении тестирования (минимизация время простоя и потери производительности сотрудников)
- Быть в курсе последних вредоносных программ и угроз безопасности
Что будет сделано
Сбор информации и первичный анализ. Мы используем открытые источники информации, идентифицируем объекты инфраструктуры и окружения и строим дерево вероятных атак.
Тест конфигурации. Мы проверим на уязвимости сетевую инфраструктуру, физический и виртуальный хостинг, систему журналирования.
Тест системы аутентификации. Мы протестируем парольную политику, проверим, насколько правильно она применяется, где и в каком виде хранятся данные учётных записей. Попробуем подобрать логины и пароли.
Тест механизма авторизации. Мы определим роли пользователей, требования разграничения доступа, попробуем повысить привилегии.
Тест механизма управления сессиями. Мы проверим области действия cookies, токены сессий, наличие CSRF уязвимостей.
Проверка альтернативных способов разграничения доступа. Мы определим, используются ли в веб-приложении небезопасные механизмы контроля доступа.
Тест защищённости транспортного уровня. Мы проверим защищённость протоколов взаимодействия клиент-сервер и служб SSL/TLS.
Тест обработки передаваемых данных. Мы проведём фаззинг передаваемых клиентом параметров и проверим возвращаемые данные серверов, протестируем возможность SQL, SMTP, SOAP, LDAP, XPath, Frame инъекций.
Тест механизмов безопасности клиентской части. Мы проверим, как и на каких технологиях построена безопасность клиентской части и оценим уровень защищённости.
Тест логики приложения. Мы определим бизнес-логику работы приложения и возможные векторы атак на неё.
Полный перечень работ зависит от начальных данных и задания на пентест.
“Tragick” SITE-TEST
Теперь обратим свое внимание на сервер site-test. Как обычно в web задачах лаборатории, попробуем запустить whatweb и dirb, чтобы узнать, что есть на сервере
Сайт написан на PHP фреймворке laravel, который активно поддерживается. Кроме того, включены детальные логи ошибок:
Отсюда часто можно выудить информацию о внутренних путях на сервере, которая потом может пригодиться, например, при SQL инъекции. Но в данном случае это нам не сильно помогает…
dirb быстро начинает находить следующие доступные URLs:
Безуспешно попробовав все учетные данные, которые уже были собраны за время прохождения лаборатории в админке, переключаемся на форму аплоада фотографии, тоже представленную на сайте, если по нему просто походить и нажать JOIN US:
Снова загрузка картинок, но теперь не удается найти, где эти картинки складываются (хотя папка /upload тоже через какое-то время обнаруживается утилитой dirb — но файлы в ней не доступны по исходным именам).
Конструируем файл для загрузки:
И включаем nc на порт 1234 на сервере SSH. Заполняем форму и загружаем файл oops.jpg c текстовым содержимым, показанным сверху.
Вот и коннект! В корневой папке (cd /) видим token.txt:
Пентест = Исследование + Отчет и рекомендации + Шоу.
Исследование — это самая очевидная часть пентеста. Как в кино: странные ребята в худи в ночи громят ИТ-оборону. На деле зачастую все несколько прозаичнее, зато данный образ позволяет пентестерам не соблюдать корпоративный дресс-код.
Отчет — обычно не самая любимая часть работы для пентестеров, но она критически важна
Заказчик работ должен получить детальное описание всех успешных и неуспешных попыток проникновения, понятное описание уязвимостей и, что очень важно, рекомендации по их устранению. К последней части рационально привлекать профильных специалистов по ИБ, потому что знать, как сломать, вовсе не означает знать, как правильно и безопасно это поправить в реальности корпоративной ИТ-инфраструктуры
И последний компонент, ради которого зачастую и организуется весь пентест, — это шоу. Такой аудит на порядок превосходит любой другой по наглядности, особенно для непрофессионалов. Это лучший способ продемонстрировать недостатки ИБ руководству компании в доступной для неспециалистов форме. Краткое (на паре страниц) Executive Summary со сканом паспорта CEO, титульного листа конфиденциального отчета и базы клиентов может принести для ИБ в компании больше пользы, чем весь 200 страничный отчет, идущий далее. Именно поэтому зачастую пентест заказывают компании, где ИБ до этого толком не занимались, и бизнес, а зачастую и ИТ, не понимают серьезности существующих рисков.
Ограничения пентеста
Основными ограничениями, которые отличают пентест от реальной атаки, усложняя работу «белым шляпам», являются уголовный кодекс и этика. Например, пентестер чаще всего не может атаковать системы партнеров заказчика, домашние компьютеры сотрудников, инфраструктуру операторов связи, он не использует в социальной инженерии запугивание, угрозы, шантаж, подкуп и другие очень эффективные приемы преступников. Тем более убедительны результаты успешного проникновения в рамках «чистого» пентеста. Если ваш пентестер преступает закон в рамках работ, десять раз подумайте, стоит ли подпускать такого человека к вашим ключевым системам.
Основные этапы пентестинга
Чаще всего пентестинг проводят по методу «черного ящика», поэтому именно на этом примере мы проследим этапы работы этичного хакера.
Постановка цели тестирования
Тестирование безопасности проводится только после подписания договора с заказчиком, иначе проверку информационной безопасности могут принять за попытку взлома. Этичный хакер согласовывает с заказчиком цель пентестинга, например, ограничится ли проверка поиском уязвимостей или потребуется проникновение и захват контроля над приложением
Действия пентестера могут привести к сбоям в работе проверяемой инфраструктуры, поэтому важно предупредить клиента о возможных рисках и определить ограничения для тестирования
Предварительный сбор информации, или разведка
Сканирование уязвимостей
Тестировщик автоматизирует первый этап поиска уязвимостей с помощью программ-сканеров. Один из самых популярных инструментов – Nessus, который после сканирования автоматически формирует список обнаруженных уязвимостей. Сканеры ищут проблемы в информационной защите по определенным базам уязвимостей, например, CVE (Common Vulnerabilities and Exposures) или Vulners, поэтому тестировщики обычно используют несколько программ.
Ручная проверка уязвимостей
Пентестер дополнительно проводит ручное тестирование, потому что программы-сканеры могут пропустить некоторые уязвимости или, наоборот, обнаружить несуществующие.
Эксплуатация уязвимостей
Чтобы попытаться проникнуть в систему через уязвимость, пентестер использует эксплойты (программы или фрагменты вредоносного кода). На этом этапе работы чаще всего применяется фрейморк Metasploit, который позволяет подбирать или создавать эксплойты под разные виды уязвимостей.
Анализ результатов тестирования и составление отчета
Пентестер анализирует все этапы тестирования, чтобы оценить уровень защищенности проверяемых объектов. Результаты своей работы он отражает в отчете для заказчика. Этот документ, как правило, содержит список уязвимостей, степень их критичности и рекомендации по устранению.
Вопрос доверия
Каждый из этапов тестирования предварительно согласовывался с заказчиком. Если вероятность нарушения функционирования целевых систем была слишком высокой или в случаях успешного получения доступа к конфиденциальной информации, специалисты подрядчика немедленно прекращали работы до получения формального разрешения на их продолжение.
После каждого этапа тестирования проводилась так называемая «зачистка»: если возникала такая потребность, специалисты подрядчика разрабатывали документ с описанием необходимых для устранения последствий тестирования действий. Документ содержал описание внесенных системных изменений, если таковые случились, или последствий действий «эксплойтов» с подробным руководством по устранению.
Повторюсь, никакие необратимые или деструктивные изменения в целевые информационные системы не вносились — договор предусматривал ответственность за подобные «шалости».
Юридическая страховка не спасает от старой как мир проблемы: кто будет сторожить сторожа? Заказчик в подобной ситуации должен доверять подрядчику и выбирать его среди компаний с хорошей репутацией. С другой стороны, хакеры и внутренние мошенники едва ли будут спрашивать разрешения перед проведением атаки, и лучше все-таки их опередить, доверив самое ценное профессионалам со стороны.