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

Взлом сайтов — один из самых распространенных типов атак. Если вам интересно, как взламывают сайты и на что нужно обратить внимание, чтобы защитить свой ресурс, то эта статья для вас. Здесь я разберу самые начала пентеста веб-приложений и на примерах покажу, как проверить сайт на уязвимости.

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



Это было относительно безобидная атака — восстановить содержание последней записи относительно просто. Но иногда владельцы ресурсов навсегда теряют доступ к своим сайтам, у них воруют платежные данные клиентов или трафик.

На 2020 год в интернете насчитывается 1,74 миллиарда сайтов, и многие из них уязвимы. Десять лет назад исследование Web Application Security Consortium показало, что минимум 13% сайтов можно взломать автоматически. А в недавнем исследовании Positive Technologies сообщается об уязвимости 19% протестированных веб-приложений. Поистине огромный простор для действий злоумышленников!

Один из способов защиты от взлома — регулярное тестирование сайта на уязвимости разными сервисами.



По структуре сайты делятся на три больших класса:

  • самописные (сделанные вручную на HTML, произведенные статическим генератором типа Jekyll или собранные в программе-конструкторе типа Adobe Dreamweaver);
  • сделанные в онлайновых конструкторах (в основном это сайты-визитки без каких-либо баз данных и передаваемых полей);
  • работающие на готовых CMS (Content Management System, системах управления контентом).

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

В основе большинства современных сайтов — готовые движки. Например, наш сайт не исключение: он работает на популярной системе WordPress.

С точки зрения атакующего, движки сайтов ничем не отличаются от других сервисов и служб. Их исходный код обычно находится в общем доступе, и любой исследователь может проанализировать его на ошибки, в том числе бреши в безопасности. Поэтому сайты на CMS редко становятся жертвами целевой атаки. Чаще их ломают массово.

Такой взлом автоматизирован и обычно протекает по следующей схеме: злоумышленник находит уязвимость (самостоятельно или просто гуглит что-то свежее). Затем он делает эксплоит или берет готовый и пишет специализированный бот. Этот бот ищет указанную дыру на всех сайтах подряд в заданном диапазоне и пытается эксплуатировать ее.

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

 

Какие уязвимости на сайте можно обнаружить во время анализа?

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

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

  • XSS-инжекты (Cross Site Scripting injection) — на ваш сайт могут добавить кусочек стороннего кода на любую страницу сайта. Через эту уязвимость хакеры могут собрать персональную и платежную информацию ваших пользователей. Например, данные банковских карт или емейлы.
  • SQL-инжекты — через них можно получить доступ к базе данных сайта, редактированию и добавлению файлов на сайт. Хакеры могут украсть ваш сайт или удалить важную информацию с него.

 

Чем опасен взлом

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

Какие последствия от взлома

  •   Потеря контроля над сайтом. Последствием может стать не только появление на вашем сайте подозрительного контента, за который он может попасть под фильтры поисковых систем. Получив логины и пароли учетных записей с правами администратора, хакеры способны полностью перекрыть доступ к панели управления для законных владельцев и потребовать выкуп за возвращение контроля над сайтом.
  •   Захват пользовательских личных данных. Если речь идет исключительно о логине, пароле или переписке пользователей, то последствия не настолько страшны. Гораздо хуже, когда злоумышленникам в руки попадают платежные данные посетителей сайта.
  •   Использование ресурсов сайта для спам-рассылки. Обычно хакеры отправляют с сайта серию писем, к которым прилагается вредоносный код, способный заразить ПК троянскими программами при их открытии. Чаще всего в подобных рассылках речь идет о денежном призе, предложении высокооплачиваемой должности или требование выплатить начисленный государством штраф, о котором пользователь по какой-то причине не знал или забыл.
  •   Хостинг фишинговых страниц. Применяется для кражи реквизитов банковских карт пользователей с помощью имитации страниц различных популярных сервисов (соцсети, электронная коммерция, банковские службы). Фальшивая «фишинговая» страница, размещенная на взломанном сайте, почти не отличима от настоящей. Но, все финансовые данные, вводимые в нее при оплате, моментально попадают в руки злоумышленников.
  •   Атаки на смежные ресурсы. Хакеры используют взломанные сайты для загрузки скриптов, позволяющих заражать другие ресурсы. Такие сайты также могут использоваться как прокси-сервера бот-нета в массированных DDoS-атаках.
  •   Мобильные редиректы. Хакеры могут установить на сайте код, автоматически перенаправляющий пользователя на страницы с платными подписками. За наличие такого кода на ресурсе его могут заблокировать фильтры поисковых систем, пометив как источник «скрытой переадресации» или «агрессивной рекламы».
  •   Переход на зараженные страницы. Обычно подобные атаки настроены под уязвимость конкретной операционной системы или определенной версии ПО. Сначала на сайт загружается простой вирусный файл. Впоследствии пользователь скачивает этот файл и при его запуске устанавливаются вредоносные программы, заражающие все сопряженные устройства.
  •   Потеря поисковых позиций. Редиректы, подозрительный контент, спам-рассылки не только снижают посещаемость ресурса, но и сводят к нулю все старания по его продвижению. Чтобы вернуть сайту прежние позиции требуется много финансовых и временных трудозатрат.

Сбор информации о сайте

Прежде чем пытаться атаковать цель, нужно собрать информацию о ней. Для этого хорошо подходит инструмент WhatWeb. Эта утилита предоставляет подробную информацию о CMS жертвы и использованных ей веб-инструментах.

Советую запускать WhatWeb с ключом -а, указывая после него значение 3 или 4. Разница между ними только в том, что во втором случае WhatWeb будет сканировать еще и субдиректории. Имейте в виду, что оба варианта задают агрессивный метод опросов — со всеми вытекающими, а точнее «втекающими» на сервер логами.

Вот пример запуска и собранных ответов:

$ whatweb -a3 https://URL

https://URL [200 OK] Cookies[PHPSESSID], Country[UNITED KINGDOM][GB], Frame, HTML5, JQuery[1.9.0,2.2.3], Open-Graph-Protocol[website], PHP[7.1.33], PasswordField[password], Script[application/ld+json,text/javascript], Title[Bower Partnerships | Best Equity Release Broker Customer Service 2019], UncommonHeaders[link,x-robots-tag,alt-svc], WordPress, X-Powered-By[PHP/7.1.33], X-UA-Compatible[IE=EDGE]

Здесь мы видим, что это сайт британской компании, сделанный на WordPress, используется PHP v. 7.1.33 и jQuery 1.9.0, 2.2.3. Неплохо для начала!

Если у вас нет VPN или вы просто не хотите заморачиваться с установкой, обратите внимание на онлайновую версию WhatWeb.

 

Кстати, при работе с заграничными сайтами она дает большую скорость.

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

Вот свежая статистика популярности различных CMS в рунете:

  • WordPress — 58,12%;
  • Joomla — 17,12%;
  • OpenCart — 4,65%;
  • Drupal — 3,75%;
  • Wix — 3,74%;
  • MODX Revolution — 2,81%;
  • MODX Evolution — 2,76%;
  • Nethouse — 2,23%;
  • прочие — 4,78%.

 

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

Поскольку WordPress — это сейчас самая популярная CMS, то перейдем сразу к ней. Под нее выпущен очень мощный сканер, который умеет творить магию, — WPScan. На момент написания статьи актуальная версия была 3.7.8. Этот сканер умеет определять версию сканируемого объекта, брутить админку (у него даже есть свой встроенный словарь), смотреть уязвимые открытые директории, определять установленные плагины и много всего другого. К тому же он предустановлен в Kali Linux и в других дистрибутивах для пентестеров. Есть даже версия в докер-контейнере.

На мой взгляд, управление и ключи WPScan могли бы и упростить. Даже хелпа у программы два — краткий (-h) и подробный (—hh).

Перед первым использованием WPScan необходимо обновить его базу данных.

wpscan --update

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

wpscan --url http://example.com

 

После строчки Interesting Finding(s): начинаются те самые моменты, на которые стоит обратить внимание:

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

В конце вывода красным восклицательным знаком помечены строки, которые идут вразрез с правилами безопасности. В нашем случае это торчащий наружу конфигурационный файл wp-config.php с логином и паролем к базе данных.

 

Продолжаем копать и все тем же софтом пробуем сбрутить логин и пароль к админке:

wpscan --url http://[IP-address] --passwords pass.txt --usernames user.txt

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

 

Как видите, учетные данные к админке и базе данных мы достали без особого труда. Для рядового взломщика это было бы больше чем предостаточно, но мы еще не все проверили. На очереди — плагины для WP и другие популярные точки входа.

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

wpscan --url http://[IP-address] --enumerate ap --plugins-detection aggressive

Учтите, что ключ ap покажет все найденные плагины, а vp — только уязвимые. Данная процедура занимает приличное время. Скорость будет зависеть от удаленности сайта, но даже в лучшем случае на это уйдет не меньше 30 минут.

Как видите, агрессивный метод дал свои результаты: обнаружен антиспам-плагин Akismet версии 3.1.1.

 

Точно такими же действиями необходимо искать другие уязвимые дополнения к WP. Подробнее в мануале в разделе —enumerate.

Также посмотрите идентификаторы известных уязвимостей — CVE. Например, для версии PHP, на которой работает CMS. Затем поищите готовые модули Metasploit для WP и проверьте их в деле.

 

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

Joomla тоже довольно популярная CMS, для которой есть свой сканер — JoomScan. Написали его ребята из Open Web Application Security Project (OWASP). Он еще актуален, хотя и давно не обновлялся. Последняя версия 0.0.7 вышла в сентябре 2018 года.

По своей сути это точно такой же сканер безопасности, как и WPScan, только немного попроще. JoomScan также предустановлен в большинстве дистрибутивов для специалистов по безопасности, а весь его мануал умещается в несколько строк.

 

Он тоже поддерживает агрессивный метод сканирования установленных компонентов. Команда запуска сканирования в агрессивном режиме выглядит так:

joomscan --url http://84.42.34.2/ --enumerate-components

Вот пример анализа найденной на просторах интернета старой и очень дырявой версии сайта на Joomla.

 

Как видно по скриншоту, программа выдает версию CMS, CVE найденных уязвимостей и ссылки на эксплоиты, которыми можно воспользоваться для взлома сайта. Также в выводе приводятся все найденные на сайте директории и ссылка на файл конфигурации, если его забыли спрятать.

Брутфорсить админку JoomScan не умеет. Сегодня, чтобы выполнить такой брутфорс, нужен серьезный инструмент, который работает с цепочкой прокси-серверов. Хотя бы потому, что на сайтах с Joomla часто используется плагин brute force stop. Когда количество неудачных попыток авторизации достигает заданного числа, он блокирует IP-адрес атакующего.

Если сайт с Joomla работает на HTTP (что уже редкость), попробуйте воспользоваться скриптом Nmap.

 

 

Проверка сайтов Drupal и других CMS

С Drupal все немного сложнее, как и с другими непопулярными CMS. Годного сканера, который бы находил уязвимости на таких сайтах, просто нет. Из готовых инструментов мне удалось найти лишь DroopeScan, но он только помогает быстро собрать базовую информацию о сайте.

Устанавливается DroopeScan через pip (естественно, у вас должен быть установлен Python).

pip install droopescan

Запускаем сканирование. Так как он поддерживает не только Drupal, ему желательно явно указать, какую CMS мы ожидаем встретить на сайте:

droopescan scan drupal -u http://url

 

Остальное приходится выискивать руками и гуглить в интернете. В этом очень помогают сайты для поиска уязвимостей, например CVEdetails, и готовые эксплоиты с PoC (их можно найти на GitHub и в даркнете).

К примеру, возьмем уязвимость CVE-2018-7600, которой подвержены версии Drupal7.х и 8.х. Она позволяет загрузить и вызвать shell удаленно. Эксплоит для PoC можно взять тут.

 

Сканер выдал мне лишь версию CMS, и этого хватило для эксплуатации уязвимости. В целом взлом Drupal и других CMS по своей сути ничем не отличается от поиска дыр в любом другом онлайновом сервисе. Бреши в безопасности либо есть, либо их еще не нашли.

 

Не надо далеко ходить за боевым эксплоитом, чтобы открыть сессию в Meterpreter и воспользоваться уязвимостью в полной мере.

 

 

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

С тестированием самописных сайтов все намного сложнее. Нет конкретного сканера, который сказал бы: вот тут есть старая версия веб-приложения, в нем известная дыра, вот ссылка на эксплоит и подробное описание его применения. Есть только очень обширный список потенциальных уязвимостей, которые нужно проверить. Проводят такие пентесты по методике OWASP или собственным алгоритмам.

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

Одним из способов это сделать стало руководство OWASP Testing Guide v4. Это подробный сборник правил обнаружения уязвимостей веб-приложений. Ребята собрали и описали доступным языком методы тестирования уязвимостей десяти наиболее распространенных классов — OWASP 10.

Если нужно проверить возможность взлома самописного сайта, то лучше начинать с того же WhatWeb. Только теперь мы смотрим не CMS, а все обнаруженные сервисы и их версии.

Есть множество уязвимых версий самих фреймворков. К примеру, зачастую используют устаревшие версии Ruby on Rails или Apache Tomcat. Эксплоиты для них есть в открытом доступе.

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

Следующим шагом желательно воспользоваться сканерами безопасности. Даже если они не дадут готовый вердикт, то подкинут пищу для размышлений. Например, программа dirb поможет пробежаться по открытым директориям и вернет коды ответов.

Для проверки на типовые уязвимости воспользуйтесь универсальными сканерами: niktoOWASP ZAPw3afskipfish. Также советую иметь в запасе mantra security toolkit.

 

Для всего остального есть Burp Suite. Обычно с его помощью выполняется более сложный поиск уязвимостей веб-приложений. В качестве примера рассмотрим поиск и эксплуатацию SQL-инъекций.

Ставим Burp Suite (в Kali Linux он уже предустановлен), находим в нем Repeater (повторитель запросов) и запускаем. В запросе GET или POST ищем передаваемое на сервер значение (типа id=12) и закидываем его в Repeater.

 

Добавляем одинарную кавычку, чтобы проверить отсутствие фильтрации специальных символов в передаваемом значении, и видим сообщение с ошибкой syntax error sql. Возникновение ошибки говорит о том, что сайт уязвим к SQL-инъекциям. Для автоматизации развития атаки используем sqlmap.

sqlmap -u http://url/page.php?id=1 --dbs

Ключ -u указывает на URL цели, а —dbs говорит проверить все СУБД.

 

Этот комбайн для SQL-инъекций сам определит, какой пейлоад подходит, и по вашим командам вытащит все нужные данные из баз на сайте. Он даже предложит сразу определить пароли по хешам, если найдет. Особенно этот софт полезен при эксплуатации так называемых слепых SQL-инъекций.

 

 

Как защитить ресурс от взлома

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

Защита административной панели

Обезопасить «штурвал» сайта от перехвата хакерами можно несколькими надежными методами. Применение каждого требует начального уровня знаний об администрировании веб-ресурса.

  • Дополнительная аутентификация через Captcha. Самый популярный инструмент реализации данного способа защиты — Google Captcha (reCAPTCHA).
  • При помощи ограничений доступа в файле .htaccess. Здесь защита сайта реализуется путем ограничения на доступ в административную панель только с определенных IP-адресов. Это будет выглядеть следующим образом:
  • Order deny,allow
  • Deny from all
  • Allow from 194.61.0.6

В данном примере «194.61.0.6» — произвольный IP-адрес, который нужно заменить на тот, с которого должен выполняться вход.

Это отличный вариант при входе в панель администратора со статических IP-адресов. Для динамических IP-адресов он подходит с некоторой оговоркой — прежде, чем задавать ограничение, нужно узнать диапазон их изменения у интернет-провайдера.

  •  При помощи плагинов CMS, блокирующих доступ с IP-адреса при подозрении на взлом или требующих ввода дополнительного ключа при входе. Примеры — Lockdown WP Admin (WordPress), Limit Login Attempts (WordPress) и AdminExile (Joomla).

 

Запрет доступа к phpMyAdmin из адресной строки

 

Открытый доступ к панели phpMyAdmin напрямую из адресной строки браузера — верный путь нарваться на взлом, через автоматический перебор паролей (брутфорс). Запретить доступ самостоятельно достаточно сложно технически, поэтому рекомендуется обратиться с такой просьбой к техподдержке хостинговой компании.

 

Регулярное тестирование:

  1. Ручная проверка сайта на уязвимости и анализ всех ссылок выявляет внедрение вредоносного кода, сторонних ссылок или контента на сайте.
  2. Подбор инструментов сканирования, выявляющих уязвимость в коде в автоматическом режиме. Существует довольно богатый выбор ПО с открытым кодом, которое используется для предварительного тестирования. Все подобные сканеры доступны для бесплатного скачивания или работают в онлайн-режиме.

 

Шифрование коммуникаций:

Любая передача информации клиентам во избежание ее утечки должна передаваться через зашифрованный протокол HTTPS. Это касается всех важных сведений — от электронных писем до платежных карт и любых финансовых операций.

Проверка пользователей

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

Поиск вирусов

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

 

Сервисы для онлайн-проверки сайтов на вирусы

 

 

Резервное копирование

Создание резервной копии сайта или «бэкапа» — обязательный этап в администрировании любого ресурса, поскольку он предупреждает потерю любых данных и позволит восстановить сайт, если хакерская атака была успешной. Бэкап также пригодится, когда случайно или в результате программной ошибки удаляются важные файлы, нарушается целостность самого сайта (необратимые изменения в результате некомпетентности администратора или падения серверов).

В идеале резервное копирование сайта желательно делать еженедельно. При этом для надежности копия всегда загружается на локальный компьютер или сохраняется на внешний носитель — флеш-карту, жесткий диск и т.д.

 

Надежный хостинг-провайдер

При выборе хостинг-провайдера необходимо убедиться в его надежности, поскольку не каждая компания обеспечивает необходимый уровень безопасности. Хороший хостинг регулярно осуществляет резервное копирование, проводит мониторинг сети и обеспечивает круглосуточную пользовательскую техническую поддержку. Перед сменой хостинга лучше всего убедиться в том, что у нового хостинга есть сценарии реагирования на вероятные проблемы — взломы, DDoS-атаки и т.д.

 

Что делать после того, как я нашел уязвимости?

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

 

Что делать при взломе

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

Признаки того, что сайт взломан:

  •   Сообщения о взломе в панели вебмастера, браузере или в письмах от пользователей. Например, в панели Google Search Console данное сообщение будет выводиться в отчете «Проблемы безопасности».
  •   Снижение пользовательской активности на сайте. Если веб-проект существует уже достаточно давно и популярен среди пользователей, то резкое снижение посещаемости свидетельствуют о том, что он работает некорректно. Следует проверить доступность сайта со стороннего ПК.
  •   Потеря позиций в поисковой выдаче. При качественной и регулярной работе над популярностью проекта его позиция в выдаче по релевантным поисковым запросам неуклонно повышается. Если же наблюдается спад, стоит проверить, не попал ли ресурс под действие фильтров, заблокировавших вредоносный контент, размещенный хакерами на одной из страниц на сайте. Избавиться от наложенных поисковыми системами санкций и вернуть позиции бывает довольно сложно. Облегчить задачу поможет официальный запрос о проверке сайта, который надо сделать уже после его полного восстановления.
  •   Появление неизвестного контента, включая ссылки, статьи, картинки и прочее рекламное содержание. Если никто из администраторов или владельцев ресурса не добавлял контент, это значит, что третья сторона получила доступ к панели управления сайтом.
  •   Снижение качества работы ресурса. Это может быть, как слишком долгая загрузка, так и появление технических сообщений об ошибках на страницах сайта.

 

Заключение

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

 

Источник: xakep.ru и virusdie.ru и eternalhost.net

RuCoreNET - лучшее для вас!


Поделись статьей с друзьями


92 просмотров


0 0 vote
Рейтинг статьи
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments


Do NOT follow this link or you will be banned from the site!
0
Would love your thoughts, please comment.x
()
x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: