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

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

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

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

Статья пригодится:

  • Backend разработчикам: вы сможете быстро тестировать свои веб-приложения на наличие уязвимостей и тем самым повысить их надежность и безопасность данных ваших пользователей. (Если конечно исправите уязвимости, которые найдете )
  • Frontend разработчикам: пока npm собирает ваш фронтенд, вы как раз успеете проверить API вашего веб-приложения. А если повезет и вы сможете найти уязвимости, то вы не только поможете своей компании в будущем сохранить свою репутацию (а себе выбить премию), но и сможете целую неделю незлобно троллить ваших backend разработчиков и DevOps инженеров в общем чате.
  • Тестировщикам: освоите новые инструменты и сможете требовать законную прибавку к зарплате, а также немного считать себя хакерами.
  • Владельцам веб-сайтов и стартаперам без раунда: вы сможете самостоятельно базово проверить свой сайт без привлечения дорогостоящих экспертов, а также сможете лучше понимать технические особенности работы вашей бизнес-машины.

А нужно ли проверять?

Немного фактов и мнений:

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

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

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

Хорошая новость — сейчас можно самостоятельно просканировать свое веб-приложение различными бесплатными сканерами безопасности и найти уязвимые места заранее.

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

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

Что будем проверять:

  • Доступ к серверу и исходным кодам
  • Уязвимости веб-серверов (Apache или NGINX)
  • SQL инъекции
  • Межсайтовый скриптинг (XSS).
  • Устойчивость приложения и сервера к перебору паролей
  • Получение доступа к системным каталогам

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

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

  • Многочисленные SQL инъекции
  • XSS уязвимости
  • Простой пароль для ssh доступа
  • Открытый ftp
  • Отсутствие защиты от перебора паролей
  • База данных, доступная из интернета с простым паролем
  • Слишком широкие права доступа к папкам и файлам

В общем все так, как делать не надо.

1. Проверяем сетевую инфраструктуру.

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

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

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

Интересный факт — сyществует целая галерея фильмов, где утилита nmap используется для кибератак. Часть представлено в галерее, под каждой картинкой описание. Более полный список и разбор можно посмотреть по ссылке

Посмотрели картинки, теперь можно и поработать! Приступаем к делу.

Устанавливаем nmap

В установке нет ничего сложного. Примеры установки покажу на примере Windows и Mac OS. В дистрибутивах Linux последняя версия nmap обычно установлена по умолчанию.

Установка на Windows 10

Перейдите по ссылке загрузки nmap и загрузите последнюю стабильную версию. На данный момент (16.09.2020) эта версия 7.80. Скачать ее можно по этой ссылке с официального сайта. Дальше запустите nmap-7.80-setup.exe от имени администратора. Программа установки по умолчанию предложит установить все компоненты, галочки можно не снимать. Описывать шаги далее подробно ( Примите лицензионное соглашение и тд) не буду, там все изи.

Запуск nmap на Windows

Запускать nmap можно как в режиме графического интерфейса, так и через командную строку.

Для запуска графической оболочки введите в строку поиска nmap и в результатах выберите nmap — Zenmap GUI

Для дальнейшей работы вы можете вводить нужные команды в поле «Команда», а затем нажимать на кнопку Сканирование. Результаты сканирования в виде текстового отчета вы можете посмотреть в окне, которое я старательно подписал «Отчет»

Интерфейс Zenmap

Мне ближе использование nmap через командную строку aka консоль. Для запуска командной строки введите «cmd» в строку поиска на панели инструментов. Нажмите Enter и затем откроется командная строка. Дальше прямо в нее можно вводить nmap команды.

Командная строка в Windows 10 c введенной командой nmap выглядит вот так:

Mac OS X

Нажмите Command+Space и введите «Терминал», после этого нажмите Enter. Дальше последнюю версию nmap можно установить через менеджер HomeBrew c помощью следующей команды, которую нужно ввести в терминале:

brew install nmap

Для запуска nmap просто начинайте команду с nmap, ничего сложного :)

nmap localhost

Устанавливаем скрипты

Также нам надо установить скрипт nmap_vulners, который будет проводить проверку на то, содержатся ли уязвимости в ПО, которое мы используем. Для его установки нужно скачать файлы скрипта и перенести файлы http-vulners-regex.nse и vulners.nse в C:Program Files (x86)Nmapscripts.

Если у вас Mac OS, то перенести файлы скрипта нужно в папку /usr/local/Cellar/nmap/<version>/share/nmap/scripts/

Начинаем проверку

Для начала запускаем сканирование своего сервера командой ниже, чтобы выяснить какие порты используются и для чего. Команда выглядит так (подставьте свой ip или домен). Команду нужно вводить в окне консоли, либо если вы используете Zenmap GUI, то в поле «Команда» (пример я привел выше):

nmap -sV -Pn -p- -T5 161.35.92.161

Параметр T5 отвечает за скорость анализа сервера. Скорость можно менять от T0 до T5, где T0 — очень медленная скорость анализа, а T5 — очень быстрая. Если вы не хотите сильно нагружать сервер, то используйте T2.

Параметр -p- означает, что мы будем проверять весь диапазон портов (‘это займет около 10 минут) . Его можно убрать и тогда скрипт просканирует не все порты, а только 1000 первых (самые распространенные).

Ответ будет выглядеть примерно так:

nmap -sV -Pn 161.35.92.161
Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-16 20:03 RTZ 2 (ceia)
Nmap scan report for 161.35.92.161
Host is up (0.085s latency).
Not shown: 965 filtered ports, 31 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
3306/tcp open mysql MySQL 5.5.5-10.2.24-MariaDB
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 32.39 seconds

Из отчета мы видим, что nmap отобразил нам порты (под колонкой PORT), которые активны. В данном случае у нас используются:

  • Порт 21 занят под FTP
  • Порт 22 занят под SSH.
  • Порт 80 прослушивается сервером Apache.
  • Порт 3306 используется MySQL

Теперь запускаем наш скрипт, который проверит уязвимости в нашем ПО на сервере. Для этого запускаем следующую команду с указанием портов, которые мы будем проверять. Вам нужно будет заменить список портов на свои .

nmap -T5 -sV -Pn 161.35.92.161 —script=vulners.nse -p22,80,443,8080,8443,3306,20,21,23

Пример отчета. Ссылки на описание уязвимости идут после строки vulners (пример такой строки со ссылкой в отчете: CVE-2014-9278 4.0 https://vulners.com/cve/CVE-2014-9278)

Starting Nmap 7.80 ( https://nmap.org ) at 2020-09-16 20:50 RTZ 2 (ceia)
Nmap scan report for 161.35.92.161
Host is up (0.094s latency).

PORT STATE SERVICE VERSION
20/tcp closed ftp-data
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| vulners:
| cpe:/a:openbsd:openssh:8.2p1:
|_ CVE-2014-9278 4.0 https://vulners.com/cve/CVE-2014-9278
23/tcp filtered telnet
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
| vulners:
| cpe:/a:apache:http_server:2.4.41:
| CVE-2020-11984 7.5 https://vulners.com/cve/CVE-2020-11984
| CVE-2020-11984 7.5 https://vulners.com/cve/CVE-2020-11984
| CVE-2020-1927 5.8 https://vulners.com/cve/CVE-2020-1927
| CVE-2020-1927 5.8 https://vulners.com/cve/CVE-2020-1927
| CVE-2020-9490 5.0 https://vulners.com/cve/CVE-2020-9490
| CVE-2020-1934 5.0 https://vulners.com/cve/CVE-2020-1934
| CVE-2020-1934 5.0 https://vulners.com/cve/CVE-2020-1934
|_ CVE-2020-11993 4.3 https://vulners.com/cve/CVE-2020-11993
443/tcp closed https
3306/tcp open mysql MySQL 5.5.5-10.2.24-MariaDB
8080/tcp filtered http-proxy
8443/tcp filtered https-alt
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 24.23 seconds

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

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

nmap -T5 -sV -Pn 161.35.92.161 —script=vulners.nse -p22,80,443,8080,8443,3306,20,21,23 > result.txt

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

2. Проверяем устойчивость к перебору.

В нашем случае nmap определил, что на сервере есть ssh, ftp и mysql. Попробуем проверить насколько устойчивые пароли используются.

SSH

Вводим следующую команду (напомню, что вводить нужно либо в консоль, либо в поле «Команда» программы Zenmap GUI.

nmap —script ssh-brute -p22 161.35.92.161 —script-args userdb=users.lst,passdb=passwords.lst

В случае успеха (процесс не быстрый) скрипт выведет подобранный пароль и логин . Подобранные пары логинпароль будут выведены после строчки Accounts:

22/ssh open ssh
ssh-brute:
Accounts
username:password
Statistics
Performed 32 guesses in 25 seconds.

Кроме того, можно расширить стандартные списки паролей и пользователей от nmap, заменив файлы users.lst и passwords.lst . Различные базы для брутфорса можно найти в этом gitbub репозитории. Файлы с базой паролей можно разместить в папке nmap/nselib/data

FTP

Теперь проверяем FTP порт следующей командой:

nmap -d —script ftp-brute -p 21 161.35.92.161

Аналогично, сервис выведет подобранные пары логинов и паролей:

PORT STATE SERVICE
21/tcp open ftp
| ftp-brute:
| Accounts
| root:root — Valid credentials
|_ Statistics: Performed 864 guesses in 544 seconds, average tps: 4.8

MySQL

Проверяем доступен ли анонимный вход.

nmap -sV —script=mysql-empty-password <target>

В случае успеха:

3306/tcp open mysql
| mysql-empty-password:
| anonymous account has empty password
|_ root account has empty password

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

nmap —script mysql-brute -p 3306 <target>
—script-args userdb=users.lst, passdb=passwords.lst

Также если у вас используются CMS (WordPress, Joomla, Drupal, Bitrix) и другие базы данных (Mongo, Postgres, Redis), то можно найти готовые скрипты для проверки устойчивости ваших паролей и форм. Ищите по ключевым словам <name_of_CMS_or_DB> brute force nmap

Проверяем формы авторизации

Найти формы авторизации можно с помощью такой команды (вместо <target> — подставьте домен вашего сайта):

nmap -p80 —script http-auth-finder <target>

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

Параметры

  • http-brute.hostname — имя хоста
  • http-form-brute.path — адрес страницы с формой или адрес с API
  • http-brute.method — тип метода, по умолчанию POST
  • http-form-brute.uservar — устанавливает имя переменной, которая отвечает за username. Если не установлено, то скрипт возьмет имя поля из формы
  • http-form-brute.passvar — устанавливает имя переменной, которая отвечает за пароль. Если не установлено, то скрипт возьмет имя поля из формы

Параметры нужно перечислять через запятую после -script-args.

nmap -p-80 —script=http-form-brute —script-args=http-form-brute.path=/login <target>

Если скрипт успешно сработает, то выведет примерно вот такой результат.

Подобранные данные для входа будут отображены после строчки Accounts. В нашем случае скрипт подобрал логин user с паролем secret. В реальном приложении подбор может также занять продолжительное время, зависит от того насколько стойкий пароль используется.

PORT STATE SERVICE REASON
80/tcp open http syn-ack
| http-form-brute:
| Accounts
| user:secret — Valid credentials
| Statistics
|_ Perfomed 60023 guesses in 467 seconds, average tps: 138

Если ваша формы авторизации использует cookies параметры или csrf-token, то в этом случае выдаст ошибку. (И это хорошо, значит базовую защиту вы предусмотрели).

В качестве защиты стоит использовать стойкие пароли, а также ограничивать количество запросов с одного IP-адреса (Rate limiting).

3. Ищем скрытые папки и файлы

Часто разработчики или системные администраторы довольно халатно относятся к правам доступа и забывают закрыть доступ к системным и другим важным папкам. Проверить есть у нас на сервере такие папки можно также с помощью утилиты nmap. Команды будет выглядеть так (вместо <target> нужно подставить IP-адрес сервера или домен сайта) :

nmap -sV -p 80 -T5 —script http-enum <target>

В результате в отчете нам покажут доступные для просмотра папки, интересные файлы — файлы паролей, резервные копии базы данных и тд. (Если такие существуют). Дальше уже вам нужно самостоятельно решить какие папки и файлы нужно закрыть от просмотра, а какие оставить как есть.

Пример небольшого отчета.

Host is up (0.024s latency).
Not shown: 993 closed ports
PORT STATE SERVICE
80/tcp open http
| http-enum:
| /robots.txt: Robots file
| /css/: Potentially interesting directory w/ listing on ‘apache/2.4.41 (ubuntu)’
| /images/: Potentially interesting directory w/ listing on ‘apache/2.4.41 (ubuntu)’
|_ /js/: Potentially interesting directory w/ listing on ‘apache/2.4.41 (ubuntu)’

4. Проверяем на SQL инъекции

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

Если сайт уязвим и выполняет такие инъекции, то по сути есть возможность творить с БД (чаще всего это MySQL) что угодно. Именно таким образом чаще всего воруют базы пользователей и их личные данные.

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

Установка sqlmap.

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

В данной статье я рассмотрю только способы как можно находить уязвимые для SQL инъекций страницы, API и формы без подробностей о том, как использовать найденные уязвимости для нанесения вреда. (Владельцы сайтов тут облегченно вздохнули). Для использования необходим python версии 2.7 и старше.

Установка на Windows

Для начала работы нам необходимо установить Python. Установщик Python для Windows можно найти на официальном сайте. Ссылку я прикрепил ниже.

На сайте две ветки — 2.x и 3.x, но скачать и установить лучше ветку 3.x. Sqlmap корректно работают с каждой из этих версий, но в дальнейшем нам потребуется версия 3.x.

Загрузить последнюю версию sqlmap можно здесь. Распакуйте архив в любую удобную папку (чтобы было проще ее найти можно распаковать в папку С:Users<имя вашего пользователя>)

Для запуска вначале нужно открыть командную строку. Нажмите Win+R, в появившемся окне введите cmd и нажмите enter. Пример запуска:

С:UsersAdminsqlmap>python ./sqlmap.py -u http://161.35.92.161/page.php?id=2

Установка на Mac OS X

Для начала установим Python. Для этого откройте Tерминал и запустите следующую команду.

brew install python3

Теперь установим sqlmap.

brew install sqlmap

Запуск sqlmap для Mac OS X.

sqlmap -u http://161.35.92.161/page.php?id=2 —dbs -o -random-agent

Начинаем проверку

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

python sqlmap.py -u http://161.35.92.161/page.php?id=2 —dbs -o -random-agent

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

[01:14:57] [INFO] fetched random HTTP User-Agent header value ‘Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0; YComp 5.0.2.6; MSIECrawler)’ from file ‘C:UsersAcersqlmapdatatxtuser-agents.txt’
[01:15:04] [INFO] testing connection to the target URL
[01:15:04] [INFO] checking if the target is protected by some kind of WAF/IPS
[01:15:05] [INFO] testing NULL connection to the target URL
[01:15:05] [INFO] NULL connection is supported with GET method (‘Range’)
[01:15:05] [INFO] testing if the target URL content is stable
[01:15:05] [INFO] target URL content is stable
[01:15:05] [INFO] testing if GET parameter ‘id’ is dynamic
[01:15:05] [INFO] GET parameter ‘id’ appears to be dynamic
[01:15:06] [INFO] heuristic (basic) test shows that GET parameter ‘id’ might be injectable
[01:15:06] [INFO] testing for SQL injection on GET parameter ‘id’
[01:15:06] [INFO] testing ‘AND boolean-based blind — WHERE or HAVING clause’
[01:15:06] [INFO] GET parameter ‘id’ appears to be ‘AND boolean-based blind — WHERE or HAVING clause’ injectable
[01:15:07] [INFO] heuristic (extended) test shows that the back-end DBMS could be ‘CrateDB’
it looks like the back-end DBMS is ‘CrateDB’. Do you want to skip test payloads specific for other DBMSes? [Y/n] n

Скрипт выводит отчет:

[01:15:29] [INFO] testing ‘MySQL >= 5.0 AND error-based — WHERE, HAVING, ORDER BY or GROUP BY clause (FLOOR)’
[01:15:29] [INFO] testing ‘PostgreSQL AND error-based — WHERE or HAVING clause’
[01:15:29] [INFO] testing ‘Microsoft SQL Server/Sybase AND error-based — WHERE or HAVING clause (IN)’
[01:15:30] [INFO] testing ‘Oracle AND error-based — WHERE or HAVING clause (XMLType)’
[01:15:30] [INFO] testing ‘MySQL >= 5.0 error-based — Parameter replace (FLOOR)’
[01:15:30] [INFO] testing ‘Generic inline queries’
[01:15:30] [INFO] testing ‘PostgreSQL > 8.1 stacked queries (comment)’
[01:15:30] [WARNING] time-based comparison requires larger statistical model, please wait…………………. (done)
[01:15:32] [INFO] testing ‘Microsoft SQL Server/Sybase stacked queries (comment)’
[01:15:32] [INFO] testing ‘Oracle stacked queries (DBMS_PIPE.RECEIVE_MESSAGE — comment)’
[01:15:32] [INFO] testing ‘MySQL >= 5.0.12 AND time-based blind (query SLEEP)’
[01:15:43] [INFO] GET parameter ‘id’ appears to be ‘MySQL >= 5.0.12 AND time-based blind (query SLEEP)’ injectable
[01:15:43] [INFO] testing ‘Generic UNION query (NULL) — 1 to 20 columns’
[01:15:43] [INFO] automatically extending ranges for UNION query injection technique tests as there is at least one other (potential) technique found
[01:15:45] [INFO] target URL appears to be UNION injectable with 4 columns
[01:15:46] [INFO] GET parameter ‘id’ is ‘Generic UNION query (NULL) — 1 to 20 columns’ injectable
GET parameter ‘id’ is vulnerable. Do you want to keep testing the others (if any)? [y/N] y

После продолжения анализа нас в первую очередь интересует строчка в конце: GET parameter ‘id’ is vulnerable. Do you want to keep testing the others (if any)? [y/N].

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

Итоговый отчет:

sqlmap identified the following injection point(s) with a total of 74 HTTP(s) requests:

Parameter: id (GET)
Type: boolean-based blind
Title: AND boolean-based blind — WHERE or HAVING clause
Payload: id=2 AND 9795=9795

Type: time-based blind
Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
Payload: id=2 AND (SELECT 7989 FROM (SELECT(SLEEP(5)))geJr)

Type: UNION query
Title: Generic UNION query (NULL) — 4 columns
Payload: id=2 UNION ALL SELECT NULL,CONCAT(0x716a6a6b71,0x736654714b69505a4f6f64434776566d7a43455179446561434f7a46434241555449574d6759575a,0x7162627171),NULL,NULL— —

[INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu
web application technology: Apache 2.4.41
back-end DBMS: MySQL >= 5.0.12
[INFO] fetching database names
available databases [2]:
[*] information_schema
[*] vc_test

[INFO] fetched data logged to text files under ‘C:UsersAdminAppDataLocalsqlmapoutput161.35.92.161’

В итоге скрипт не только определил, что параметр id является уязвимым, но и версию СУБД, а также получил название используемой базы данных на сервере — vc_test, в которой содержится контент сайта. Эту информацию можно найти в конце сгенерированного отчета.

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

Кроме того, sqlmap позволяет задавать http заголовки и параметры Cookies, что довольно удобно для тестирования, особенно когда для получения результата запроса требуется авторизации.

Пример тестирования запроса POST. Параметры, которые передаются в теле запроса записываются в опцию скрипта —data. Необходимые параметры для POST запроса можно подсмотреть в консоли браузера (Ctrl + Shift + I в Windows, затем перейти в вкладку Network, совершить нужное действие, а затем изучить каким образом формируется запрос)

sqlmap.py -u http://localhost/login —data=»username=alex&password=pass» —dbs -o -random-agent

После авторизации обычно необходимо передать нужные Сookie. В sqlmap за это отвечает опция —cookie. Нужные значения cookies можно получить в инструментах разработчика вашего браузера. (в Windows ctrl+shift+i, затем найдите вкладку Network, а в ней щелкните на запрос с именем домена сайта. В окне справа пролистайте пока не увидите параметр cookie)

Пример команды sqlmap c опцией —cookie.

sqlmap.py -u http://localhost/create —data=»name=alex&message=hacked» —cookie=»security_level=low; PHPSESSID=05aa4349068a1kkaje4kcqnr9o6″ —dbs -o -random-agent

Если параметров несколько, то можно явно указать какой параметр будем тестировать с помощью опции -p.

sqlmap.py -u «http://localhost/profile/?username=alex&page=2» -p username

Можно задавать http заголовки через опцию —headers. Это крайне полезно для тестирования ваших API.

Также если get параметр передается не как get параметр, а как URI, то в этом случае нужно явно указать с помощью *, что данная часть URI является параметром. Пример:

sqlmap.py -u «http://localhost/api/v2/news/2*» —headers=»Authorization: Bearer <token>» —dbs -o -random-agent

Таким образом можно довольно тщательно протестировать ваше веб-приложение на наличие SQL инъекций. Также крайне полезно использовать sqlmap для автоматических тестов и запускать их после каждого изменения кода вашего приложения и не допускать код в ветку master, если он содержит уязвимость.

Для защиты от SQL инъекций нужно тщательно фильтровать параметры и HTTP заголовки, а также использовать подготовленные запросы.

5. Проверка на XSS уязвимости.

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

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

  • Внедрять свои скрипты в веб-страницу
  • Отправлять на свой сервер пользовательские данные — банковские карты, идентификаторы сессий, пароли и тд.
  • Совершать действия от имени пользователя — рассылать спам, совершать денежные переводы

Уязвимость возникает из-за недостаточной фильтрации данных, которые выводятся при отображении страницы.

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

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

ХSStrike — это довольно продвинутый сканер для поиска XSS уязвимостей c открытым исходным кодом. Он написано на Python3 и довольно прост в начальной настройке и использования.

Установка

Для установки необходимо скачать архив по ссылке и распаковать в удобную вам папку. После этого необходимо открыть консоль (ранее я уже показывал как это сделать в Mac и Windows) и перейти в распакованную папку. Затем нужно выполнить команды в консоле:

pip3 install pygame

Установим необходимые для корректной работы библиотеки:

pip3 install -r requirements.txt

Теперь мы готовы к тестированию. Пример простого запуска, вместо моего url укажите адрес страницы, которую хотите протестировать:

python xsstrike.py -u «http://161.35.92.161/index.php?page=2» —blind

Очень быстро скрипт обнаруживает, что параметр page является уязвимым ( строчка Reflections found ) и через него можно передать js код, который будет исполнен на странице. Пример такого кода приводится в строчке Payload. Такой тип XSS уязвимостей называется reflected XSS.

[~] Checking for DOM vulnerabilities
[+] WAF Status: Offline
[!] Testing parameter: page
[!] Reflections found: 1
[~] Analysing reflections
[~] Generating payloads
[!] Payloads generated: 3072
————————————————————
[+] Payload: <HTmL%0aONmOuSEoVeR+=+(prompt)«%0dx//
[!] Efficiency: 100
[!] Confidence: 10
[?] Would you like to continue scanning? [y/N] n

Кроме того, можно проверять и формы. Отправим на проверку форму, которая отправляет сообщение в наш сервис. Чтобы передать список POST параметров используем опцию —data.

python xsstrike.py -u «http://161.35.92.161/index.php» —data «name=&message=» —blind

Результат: параметр name уязвим.

[~] Checking for DOM vulnerabilities
[+] WAF Status: Offline
[!] Testing parameter: name
[!] Reflections found: 3
[~] Analysing reflections
[~] Generating payloads
[!] Payloads generated: 4608
————————————————————
[+] Payload: <A%0aOnmOUSeOVEr%0d=%0d(prompt)«%0dx>v3dm0s
[!] Efficiency: 100
[!] Confidence: 10
[?] Would you like to continue scanning? [y/N]

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

[~] Checking for DOM vulnerabilities
[+] WAF Status: Offline
[!] Testing parameter: name
[-] No reflection found
[!] Testing parameter: message
[-] No reflection found

Кроме того, в XSStrike поддерживает возможность передавать http заголовки, в том числе и cookies и проверять страницы для открытия которых нужна авторизация. Для этого используется опция —headers

python xsstrike.py -u «http://161.35.92.161/index.php» —data «name=&message=» —headers «Authorization: Bearer <token> Cookie: zmname=none» —blind

Также можно запустить обход по всему сайту. Нужно указать стартовую страницу и сканер начнет обход всех найденных страниц. Запись -l 100 отвечает за количество страниц обхода.

python xsstrike.py -u «http://161.35.92.161» —blind —crawl -l 100

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

[~] Crawling the target
[++] Vulnerable webpage: http://161.35.92.161/index.php
[++] Vector for message: <htMl%09oNMOuseoVER%0d=%0dconfirm()//
[++] Vulnerable webpage: http://161.35.92.161/index.php
[++] Vector for page: <hTMl%0donPointereNter%0a=%0a[8].find(confirm)>
[++] Vulnerable webpage: http://161.35.92.161/index.php
[++] Vector for name: <D3v/+/oNMoUSeoveR%0a=%0a(confirm)()%0dx>v3dm0s
!] Progress: 3/3

Также полезная функция — обход url страниц, которые указаны в файле с помощью опции —seeds. Можно также использовать вместе с опцией —headers.

python xsstrike.py -u «http://example.com» -l 3 —seeds urls.txt

Таким образом можно достаточно тщательно проверить свое веб-приложение на XSS уязвимости. Также хорошим ходом будет написать простой bash скрипт для объединения всех проверок XSS в один скрипт, специально заточенный под ваш проект.

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

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

Заключение

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

Конечно приведенные меры не обеспечивают 100% защиты, и я не рассказал о многих других типовых уязвимостях, но показанные меры помогут защитить проект от автоматизированных систем взлома и злоумышленников с невысокими навыками.

Если есть вопросы, то смело пишите их в комментариях или мне в телеграм t.me/alex.belousov92

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

Время на прочтение
6 мин

Количество просмотров 22K

image
В прошлой статье мы рассказали о Nemesida WAF Free — бесплатном инструменте для защиты сайтов и API от хакерских атак, а в этой решили сделать обзор популярного сканера уязвимостей Wapiti.

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

Nikto, W3af (написан на Python 2.7, поддержка которого закончилась) или Arachni (с февраля более не поддерживается) — наиболее популярные решения, представленные в бесплатном сегменте. Разумеется, есть и другие, например, Wapiti, на котором мы решили остановимся.

Wapiti работает со следующими типами уязвимостей:

  • раскрытие файла (локальные и удаленные, fopen, readfile);
  • инъекции (PHP / JSP / ASP / SQL-инъекции и XPath-инъекции);
  • XSS (межсайтовый скриптинг) (отраженная и постоянная);
  • обнаружение и выполнение команд (eval (), system (), passtru () );
  • CRLF-инъекции (разделение ответов HTTP, фиксация сеанса);
  • XXE (XML внешняя сущность) внедрение;
  • SSRF (подделка запроса на стороне сервера);
  • использование известных потенциально опасных файлов (благодаря базе данных Nikto);
  • слабые конфигурации .htaccess, которые можно обойти;
  • наличие файлов резервных копий, раскрывающих конфиденциальную информацию (раскрытие исходного кода);
  • Shellshock;
  • открытые перенаправления;
  • нестандартные методы HTTP, которые могут быть разрешены (PUT).

Возможности:

  • поддержка прокси HTTP, HTTPS и SOCKS5;
  • аутентификация с помощью нескольких методов: Basic, Digest, Kerberos или NTLM;
  • возможность ограничить область сканирования (домен, папка, страница, URL-адрес);
  • автоматическое удаление одного из параметров в URL;
  • множественные меры предосторожности против бесконечных циклов сканирования (пример: ifor, ограничение значений для параметра);
  • возможность установки приоритета для изучения URL-адресов (даже если не находятся в области сканирования);
  • возможность исключить некоторые URL-адреса из сканирования и атак (например: URL logout);
  • импорт файлов cookie (получение их с помощью инструмента wapiti-getcookie);
  • возможность активировать / деактивировать проверку сертификатов SSL;
  • возможность извлечь URL из JavaScript (очень простой JS-интерпретатор);
  • взаимодействие с HTML5;
  • несколько вариантов управления поведением и ограничениями crawler’a;
  • установка максимального времени для процесса сканирования;
  • добавление некоторых настраиваемых HTTP-заголовков или настройка пользовательского User-Agent.

Дополнительные возможности:

  • создание отчетов об уязвимостях в различных форматах (HTML, XML, JSON, TXT);
  • приостановка и возобновление сканирования или атаки (механизм сеанса с использованием баз данных SQLite3);
  • подсветка в терминале для выделения уязвимости;
  • разные уровни логирования;
  • быстрый и простой способ активации / деактивации модулей атаки.

Установка

Актуальную версию Wapiti можно установить 2 способами:

  • cкачать исходник с официального сайта и запустить скрипт установки, предварительно установив Python3;
  • c помощью команды pip3 install wapiti3.

После этого Wapiti будет готов к работе.

Работа с инструментом

Для демонстрации работы Wapiti мы будем использовать специально подготовленный стенд sites.vulns.pentestit.ru (внутренний ресурс), содержащий различные уязвимости (Injection, XSS, LFI/RFI) и прочие недостатки веб-приложений.

Информация предоставлена исключительно в ознакомительных целях. Не нарушайте законодательство!

Базовая команда для запуска сканера:

# wapiti -u <target> <options>

При этом имеется довольно подробная справка с огромным количеством опций запуска, например:

—scope — область применения
Если вместе с URL для сканирования указать параметр scope, то можно регулировать область сканирования сайта, указав как отдельную страницу, так и все страницы, которые получится найти на сайте.

-s и -x — параметры добавления или удаления конкретных URL-адресов. Данные параметры полезны, когда необходимо добавить или удалить конкретный URL-адрес в процесса сканирования.

—skip — указанный параметр с этим ключом будет сканироваться, но не будет атаковаться. Полезно, если есть какие-то опасные параметры, которые лучше исключить при сканировании.

—verify-ssl — включение или отключение проверки сертификата.
Сканер Wapiti модульный. Однако, для запуска конкретных модулей, из числа тех, которые автоматически подключаются во время работы сканера, нужно использовать ключ -m и перечислять нужные через запятую. Если ключ не использовать, то будут по умолчанию работать все модули. В самом простом варианте выглядеть это будет следующим образом:

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

Данный пример использования означает, что мы будем использовать только модули SQL, XSS и XXE при сканировании цели. Помимо этого, можно фильтровать работу модулей в зависимости от нужного метода. Например -m “xss: get, blindsql: post, xxe: post”. В таком случае модуль xss будет применяться к запросам, передаваемым методом GET, а модуль blibdsql — к POST-запросам и т.д. Кстати, если какой-то модуль, который был включен в список, не потребовался во время сканирования или работает очень долго, то нажав комбинацию Ctrl+C можно пропустить использование текущего модуля, выбрав соответствующий пункт в интерактивном меню.

Wapiti поддерживает передачу запросов через прокси-сервер с помощью ключа -p и аутентификацию на целевом сайте через параметр -a. Также можно указать тип аутентификации: Basiс, Digest, Kerberos и NTLM. Для последних двух может потребоваться установка дополнительных модулей. Кроме того, можно вставлять в запросы любые заголовки (в том числе произвольный User-Agent) и многое другое.

Для использования аутентификации можно использовать инструмент wapiti-getcookie. C его помощью мы формируем cookie, которые Wapiti будет использовать при сканировании. Формирование cookie выполняется с помощью команды:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

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

image

На выходе получаем файл в формате JSON. Другой вариант — добавить всю необходимую информацию через параметр -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

Результат будет аналогичный:

image

При рассмотрении основного функционала сканера, конечным запросом для проведения тестирования веб-приложения в нашем случае стал:

# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://myproxy:3128

где среди прочих параметров:

-f и -o — формат и путь для сохранения отчета;

-m — подключение всех модулей — не рекомендуется, т.к. будет сказываться на времени тестирования и размере отчета;

—color — подсвечивать найденные уязвимости в зависимости от их критичности по версии самого Wapiti;

-c — использование файла с cookie, сгенерированного с помощью wapiti-getcookie;

—scope — выбор цели для атаки. Выбрав вариант folder будет сканироваться и атаковаться каждый URL, начиная с базового. Базовый URL должен иметь косую черту (без имени файла);

—flush-session — позволяет проводить повторное сканирование, при котором не будут учитываться предыдущие результаты;

-A — собственный User-Agent;

-p — адрес прокси-сервера, если необходим.

Немного об отчете

Результат сканирования представлен в виде подробного отчета по всем найденным уязвимостями в формате HTML-страницы, в понятном и удобном для восприятия виде. В отчете будут указаны категории и число найденных уязвимостей, их описание, запросы, команды для curl и советы о том, как их закрыть. Для удобства навигации в названия категорий будет добавляться ссылка, кликнув по которой можно перейти к ней:

image

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

image

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

image

Но в самом отчете подобная окраска не предусмотрена.

Уязвимости

SQLi

Cканер частично справился с поиском SQLi. При поиске SQL-уязвимостей на страницах, где не требуется аутентификация, никаких проблем не возникает:

image

Не получилось найти уязвимость на страницах, доступных только после аутентификации, даже с использованием валидных cookie, так как скорее всего после успешной аутентификации будет произведен «выход их сессии» и cookie станут недействительными. Если бы функция деавторизации была выполнена в виде отдельного скрипта, отвечающего за обработку этой процедуры, то можно было бы полностью исключить его через параметр -x, и тем самым предотвратить его срабатывание. В противном случае исключить его обработку не получится. Это проблема не конкретного модуля, а инструмента в целом, но из-за этого нюанса не удалось обнаружить несколько инъекций в закрытой области ресурса.

XSS

С заданной задачей сканер отлично справился и нашел все подготовленные уязвимости:

image

LFI/RFI

Сканер нашел все заложенные уязвимости:

image

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

Оставайтесь здоровыми и защищенными!

Проблема безопасности вебсайтов ещё никогда не стояла так остро, как в 21 веке. Конечно, это связано со всеобъемлющим распространением сети Интернет практически во всех отраслях и сферах. Каждый день хакеры и специалисты по безопасности находят по нескольку новых уязвимостей сайтов. Многие из них тут же закрываются владельцами и разработчиками, а какие-то остаются как есть. Чем и пользуются злоумышленники. А ведь с помощью взломанного сайта можно нанести большой вред как его пользователям, так и серверам, на которых он размещён.

Типы уязвимостей сайтов

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

Стать веб-разработчиком сегодня может каждый желающий. Этому в значительной степени способствовало…

  • XSS. Каждый сайт обладает небольшими формами. С их помощью пользователи вводят данные и получают какой-либо результат, проводят регистрации или отправляют сообщения. Подстановкой в эти формы специальных значений можно спровоцировать выполнение определённого скрипта, что может вызвать нарушение целостности сайта и компрометирование данных.
  • SQL-инъекция. Очень распространённый и эффективный способ получить доступ к конфиденциальным данным. Происходить это может либо через адресную строку, либо через формы. Процесс проводится путем подстановки значений, которые могут не отфильтровываться скриптами и выполнять запросы в базу данных. А при должных знаниях это может вызвать нарушение безопасности.

уязвимости сайтов

  • HTML-ошибки. Практически то же самое, что и XSS, но внедряется не скрипт-код, а HTML.
  • Уязвимость сайтов, связанная с размещением файлов и каталогов в местах по умолчанию. Например, зная структуру веб-страниц, можно добраться до кода административной панели.
  • Недостаточная настройка защиты операционной системы на сервере. Если таковая уязвимость присутствует, то у злоумышленника появляется возможность выполнить произвольный код.
  • Плохие пароли. Одна из самых очевидных уязвимостей сайтов — использование слабых значений для защиты своей учётной записи. Особенно, если она с правами администратора.
  • Переполнение буфера. Используется при замене данных из памяти, вследствие чего можно внести свои коррективы. Встречается при задействовании несовершенного программного обеспечения.
  • Замена страниц веб-ресурса. Воссоздание точной копии сайта, зайдя на который пользователь может не заподозрить подвоха и ввести свои личные данные, через некоторое время переходящие злоумышленнику.
  • Отказ в обслуживании. В основном под этим термином понимают атаку на сервер, когда он получает большое количество запросов, которые не может обработать и попросту «падает» или же становится не способным обслужить настоящих пользователей. Уязвимость же заключается в том, что фильтр по IP не настроен должным образом.

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

Специалисты по безопасности проводят особый аудит веб-ресурсов на наличие ошибок и недочётов, способных привести к взлому. Такая проверка сайта называется пентестинг. В процессе анализируется исходный код, используемые CMS, наличие уязвимых модулей и много других интересных проверок.

Поисковики помогают пользователям интернета найти нужную информацию. В строке поиска человек вводит…

проверка сайта

SQL-инъекция

Этот тип проверки сайта устанавливает, фильтрует ли скрипт полученные значения при составлении запросов в базу данных. Провести простейшее тестирование можно и вручную. Как найти уязвимость SQL на сайте? Сейчас будет рассмотрено.

К примеру, имеется некий сайт мой-сайт.рф. На его главной странице есть какой-либо каталог. Зайдя в него, можно обнаружить в адресной строке что-то наподобие мой-сайт.рф/?product_id=1. Есть вероятность, что это и есть запрос в базу. Для поиска уязвимостей сайта сначала можно попробовать подставить в эту строку одинарную кавычку. В итоге должно быть мой-сайт.рф/?product_id=1′. Если при нажатии клавиши «Ввод» на странице появилось сообщение об ошибке, то уязвимость имеется.

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

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

XSS

Данный тип уязвимости может быть двух видов — активный и пассивный.

Активный подразумевает внедрение участка кода в базу данных или прямо в файл на сервере. Он более опасен и непредсказуем.

Пассивный режим предусматривает заманивание жертвы на определённый адрес сайта, содержащего вредный код.

С помощью XSS злоумышленник может украсть Cookies. А в них могут содержаться важные данные пользователя. Ещё более ужасными последствиями обладает кража сессии.

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

Автоматизация процесса поиска

В сети можно найти массу интересных сканеров уязвимостей сайта. Какие-то поставляются отдельно, какие-то идут в комплекте с несколькими подобными и объединены в один общий образ, наподобие Kali Linux. Далее будет представлен обзор наиболее популярных средств для автоматизации процесса сбора информации об уязвимостях.

Nmap

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

nmap -sS 127.0.0.1, где вместо локального IP нужно подставить адрес реального тестируемого сайта.

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

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

Вот несколько ключей nmap для более пристрастного сканирования:

  • -A. Агрессивное сканирование, которое вывалит очень много информации, но может занять значительное время.
  • -O. Пытается определить операционную систему, задействованную на сервере.
  • -D. Подменит IP адреса, с которых производится проверка, чтобы при просмотре логов сервера невозможно было определить, откуда произошла атака.
  • -p. Диапазон портов. Проверка сразу нескольких служб на наличие открытых.
  • -S. Позволит указать нужный IP адрес.

WPScan

Данная программа для сканирования сайта на уязвимость входит в дистрибутив Kali Linux. Ориентирован на проверку веб-ресурсов на системе управления контентом WordPress. Написана она на Ruby, поэтому запускается примерно так:

ruby ./wpscan.rb —help. Эта команда покажет все доступные ключи и литеры.

Для запуска простой проверки можно использовать команду:

ruby ./wpscan.rb —url какой-то-сайт.ру

В общем WPScan — довольно простая в использовании утилита для проверки своего сайта на «ВордПресс» на уязвимости.

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

Nikto

Программа проверка сайта на уязвимости, которая также имеется в дистрибутиве Kali Linux. Обладает богатым функционалом при всей своей простоте:

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

Для запуска nikto нужно, чтобы в системе был установлен perl. Простейший анализ выполняется так:

perl nikto.pl -h 192.168.0.1.

Программе можно «скормить» текстовый файл, в котором перечислены адреса веб-серверов:

perl nikto.pl -h file.txt

Данная утилита поможет не только специалистам по безопасности для проведения пентестов, но и администраторам сетей и ресурсов для поддержания работоспособности сайтов.

как найти уязвимость на сайте sql

Burp Suite

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

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

SQLmap

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

  • поддержка практически всех видов систем управления базами данных;
  • умение использовать шесть основных способов определения и применения SQL-инъекций;
  • режим перебора пользователей, их хешей, паролей и других данных.

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

уязвимости сайтов онлайн

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

Webslayer

Небольшая утилита, которая позволяет провести атаку перебором. Может «брутфорсить» формы ресурса, сессии, параметры сайта. Поддерживает многопоточность, что отлично сказывается на производительности. Также может рекурсивно подбирать пароли во вложенных страницах. Имеется поддержка прокси.

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

Ресурсы для проверки

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

  • coder-diary.ru. Простой сайт для тестирования. Достаточно ввести адрес проверяемого ресурса и нажать «Проверить». Поиск может занять длительное время, поэтому есть возможность указать адрес своей электронной почты для того, чтобы по завершении проверки результат пришёл прямо в ящик. В базе сайта имеется около 2500 известных уязвимостей.
  • https://cryptoreport.websecurity.symantec.com/checker/. Онлайн-сервис проверки наличия сертификата SSL и TLS от компании Symantec. Требуется только адрес проверяемого ресурса.
  • https://find-xss.net/scanner/. Проект сканирует отдельный файл PHP сайтов на уязвимости или их архив в формате ZIP. Можно указать типы проверяемых файлов и символы, по которым экранируются данные в скрипте.
  • http://insafety.org/scanner.php. Сканер для тестирования сайтов на платформе «1С-Битрикс». Простой и понятный интерфейс.

Алгоритм проведения проверки на уязвимости

Любой специалист по сетевой безопасности выполняет проверку по простому алгоритму:

  1. Сначала он вручную или с помощью автоматизированных инструментов анализирует, имеются ли на сайте уязвимости. Если да, то он определяет их тип.
  2. В зависимости от разновидности присутствующей уязвимости выстраивает дальнейшие ходы. Например, если известна CMS, то подбирается соответствующий метод атаки. Если же это SQL-инъекция, то подбираются запросы в базу данных.
  3. Главной задачей является получение привилегированного доступа к административной панели. Если же такового добиться не удалось, может стоит попробовать формы и подделку адреса с внедрением в него скрипта с последующей передачей жертве.
  4. Если какая-либо атака или проникновение удалось, то начинается сбор данных: имеются ли ещё уязвимости, какие недочёты присутствуют.
  5. На основе полученных данных специалист по безопасности сообщает владельцу сайта о существующих проблемах и способах их устранения.
  6. Уязвимости устраняются его руками или с привлечением сторонних мастеров.

Несколько советов по безопасности

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

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

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

Если сайт строится на основе какой-либо CMS, нужно как можно чаще обновлять её и применять только проверенные плагины, шаблоны и модули. Не стоит перегружать сайт ненужными компонентами.

Чаще проверять журналы сервера на наличие подозрительных вхождений или действий.

Проверить собственный сайт несколькими сканерами и сервисами.

Правильная настройка сервера — залог его стабильной и безопасной работы.

По возможности нужно использовать сертификат SSL. Это позволит избежать перехвата личных и конфиденциальных данных между сервером и пользователем.

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

Заключение

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

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

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

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

Что будем проверять:

  • Доступ к серверу и исходным кодам

  • Уязвимости веб-серверов (Apache или NGINX)

  • SQL инъекции

  • Межсайтовый скриптинг (XSS).

  • Устойчивость приложения и сервера к перебору паролей

  • Получение доступа к системным каталогам

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

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

  • Многочисленные SQL инъекции

  • XSS уязвимости

  • Простой пароль для ssh доступа

  • Открытый ftp

  • Отсутствие защиты от перебора паролей

  • База данных, доступная из интернета с простым паролем

  • Слишком широкие права доступа к папкам и файлам

В общем все так, как делать не надо. Но многие все равно делают :)

1. Проверяем сетевую инфраструктуру.

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

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

К несчастью владельцев сайтов, сейчас, чтобы все это узнать, нужно лишь здравое любопытство и утилита nmap.

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

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

Интересный факт: сyществует целая галерея фильмов, где утилита nmap используется для кибератак. Часть представлена ниже. Более полный список и разбор можно посмотреть по ссылке

Ну что, картинки посмотрели, теперь можно и поработать! Приступаем к делу.

1.2 Устанавливаем nmap

В установке нет ничего сложного. Примеры установки покажу на примере Windows. В дистрибутивах Linux последняя версия nmap обычно установлена по умолчанию.

1.2.1 Установка на Windows 10

Перейдите по ссылке загрузки nmap и загрузите последнюю стабильную версию. Дальше запустите от имени администратора. Программа установки по умолчанию предложит установить все компоненты, галочки можно не снимать. Описывать шаги далее подробно ( Примите лицензионное соглашение и тд) не буду, там все легко.

1.2.2 Запуск nmap на Windows

Запускать nmap можно как в режиме графического интерфейса, так и через командную строку.

Для запуска графической оболочки введите в строку поиска nmap и в результатах выберите nmap — Zenmap GUI

Для дальнейшей работы вы можете вводить нужные команды в поле «Команда», а затем нажимать на кнопку Сканирование. Результаты сканирования в виде текстового отчета вы можете посмотреть в окне, которое я старательно подписал «Отчет»

Нам ближе использование nmap через командную строку aka консоль. Для запуска командной строки введите «cmd» в строку поиска на панели инструментов. Нажмите Enter и затем откроется командная строка. Дальше прямо в нее можно вводить nmap команды.

Командная строка в Windows 10 c введенной командой nmap выглядит вот так:

1.2.3 Устанавливаем скрипты

Также нам надо установить скрипт nmap_vulners, который будет проводить проверку на то, содержатся ли уязвимости в ПО, которое мы используем. Для его установки нужно скачать файлы скрипта и перенести файлы http-vulners-regex.nse и vulners.nse в C:Program Files (x86)Nmapscripts.

1.2.4 Начинаем проверку

Для начала запускаем сканирование сервера командой ниже, чтобы выяснить какие порты используются и для чего. Команда выглядит так (подставьте свой ip или домен). Команду нужно вводить в окне консоли, либо если вы используете Zenmap GUI, то в поле «Команда» (пример выше):

  • Параметр T5 отвечает за скорость анализа сервера. Скорость можно менять от T0 до T5, где T0 — очень медленная скорость анализа, а T5 — очень быстрая. Если вы не хотите сильно нагружать сервер, то используйте T2.

  • Параметр -p- означает, что мы будем проверять весь диапазон портов (‘это займет около 10 минут) . Его можно убрать и тогда скрипт просканирует не все порты, а только 1000 первых (самые распространенные).

Ответ будет выглядеть примерно так:

Из отчета мы видим, что nmap отобразил порты (под колонкой PORT), которые активны. В данном случае у меня используются:

  • Порт 21 занят под FTP

  • Порт 22 занят под SSH.

  • Порт 80 прослушивается сервером Apache.

  • Порт 3306 используется MySQL

Теперь запустис скрипт, который проверит уязвимости в ПО на сервере. Для этого пишем следующую команду с указанием портов, которые будем проверять. Вам нужно будет заменить список портов на свои:

Пример отчета. Ссылки на описание уязвимости идут после строки vulners (пример такой строки со ссылкой в отчете: CVE-2014-9278 4.0 https://vulners.com/cve/CVE-2014-9278)

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

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

nmap -T5 -sV -Pn 161.35.92.161 --script=vulners.nse -p22,80,443,8080,8443,3306,20,21,23 > result.txt

2. Проверяем устойчивость к перебору.

В нашем случае nmap определил, что на сервере есть ssh, ftp и mysql. Попробуем проверить насколько устойчивые пароли используются.

2.1 SSH

Вводим следующую команду (напомню, что вводить нужно либо в консоль, либо в поле «Команда» программы Zenmap GUI:

nmap --script ssh-brute -p22 161.35.92.161 --script-args userdb=users.lst,passdb=passwords.lst

В случае успеха (процесс не быстрый) скрипт выведет подобранный пароль и логин .

Подобранные пары логинпароль будут выведены после строчки Accounts:

Кроме того, можно расширить стандартные списки паролей и пользователей от nmap, заменив файлы users.lst и passwords.lst . Различные базы для брутфорса можно найти в этом gitbub репозитории. Файлы с базой паролей можно разместить в папке nmap/nselib/data

2.2 FTP

Теперь проверяем FTP порт следующей командой:

nmap -d --script ftp-brute -p 21 161.35.92.161

Аналогично, сервис выведет подобранные пары логинов и паролей:

2.3 MySQL

Проверяем доступен ли анонимный вход.

nmap -sV --script=mysql-empty-password <target>

В случае успеха:

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

nmap --script mysql-brute -p 3306 <target> --script-args userdb=users.lst, passdb=passwords.lst

Также если у вас используются CMS (WordPress, Joomla, Drupal, Bitrix) и другие базы данных (Mongo, Postgres, Redis), то можно найти готовые скрипты для проверки устойчивости ваших паролей и форм. Ищите по ключевым словам:

<name_of_CMS_or_DB> brute force nmap

На сегодня у меня все.

Продолжим в следующей статье, которая выйдет совсем скоро!

В статье рассказывается:

  1. Что такое уязвимость сайта
  2. Чем опасна уязвимость сайта
  3. Когда сайт становится уязвимым
  4. Какие существуют типы уязвимости веб-сайтов
  5. Как найти уязвимость на сайте
  6. Самые популярные на сегодняшний день сканеры уязвимости сайтов
  7. О поиске уязвимостей на сайтах WordPress
  8. Что делать, если сайт все же взломали

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

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

Что такое уязвимость сайта

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

Что такое уязвимость сайта

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

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

Откуда берутся эти уязвимые места? Ошибки могли быть допущены на стадии создания сайта, его программирования. У паролей оказалась слабая надежность. Не исключено, что уже были атаки или выполнялись неудачные скриптовые и SQL-инъекции.

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

На практике в большинстве случаев причиной проблем становится принятие веб-ресурсом плохо проверенных данных (которые вносит пользователь). Таким образом любые некорректные и опасные команды оказываются вставленными в интерпретируемый код.

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

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

Чем опасна уязвимость сайтов

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

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

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

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

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

Чем опасна уязвимость сайтов

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

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

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

Когда сайт становится уязвимым

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

Использование ПО из непроверенного источника

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

Использование устаревших версий программного обеспечения

Компьютеры и их ПО необходимо регулярно обновлять. Так же, как веб-специалисты стремятся поддерживать безопасность сайтов, хакеры, со своей стороны, не оставляют попыток их взламывать и овладевать важными данными. Шансы злоумышленников будут гораздо слабее, если вы будете использовать новые стабильные варианты ПО.

Использование устаревших версий программного обеспечения

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

На веб-ресурсе нет SSL-сертификата

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

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

Использование паролей в незашифрованном виде

Пароли лучше шифровать, причем предпочтительнее использовать для этого специальный алгоритм хеширования (к примеру, разряда SHA). В момент аутентификации в таком случае к проверке допускаются лишь зашифрованные данные пользователей.

Снизить уязвимость помогут и обязательные условия для формирования паролей. Среди них может быть требование использовать минимальное оговоренное число символов разного регистра, букв вместе с цифрами и т. д. Пароль вида 12345 — весьма сомнительная защита. Что касается длины, то комбинация из 20 символов считается надежной, а меньше 8 — не допускается.

Использование паролей в незашифрованном виде

Какие существуют типы уязвимости веб-сайтов

  1. Вероятность взлома через инъекции

    Имеется в виду, что пользователь вводит интерпретатору непроверенные данные, а они попадают на сайт. Это может произойти в результате действий любого посетителя. Чаще всего случаются инъекции с кодами SQL, LDAP, XXE, OS.

    SQL-инъекции происходят чаще других. С их помощью хакеры проникают в базы данных и не только пользуются засекреченной информацией, но могут даже сами корректировать показатели. По каким причинам возникают подобные уязвимости? Это происходит, если интерпретатор получает данные без обязательных управляющих последовательностей либо команд (в SQL это, к примеру, кавычки).

  2. Осложнения на этапе аутентификации и управления сессиями

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

  3. Уязвимость сайтов XSS (межсайтовый скриптинг)

    Это не самый серьезный вид опасности для сервера, он больше представляет угрозу для браузера пользователя. Cross-Site Scripting — это, по сути, инъекции, работающие через JavaScript. Хакер вписывает JS-код в какое-нибудь поле, а поисковик пользователя рассматривает его как правильный (потому что он как будто бы пришел с сайта) и принимает к исполнению. Чтобы защитить себя от подобных внедрений, рекомендуется использовать функции типа htmlspecialchars (либо аналогичные), которые позволяют экранировать используемые спецсимволы.

  4. Потеря контроля над доступом к ресурсу

    Даже на серьезных известных движках случается, что не предназначенные для пользователей данные оказываются открытыми (из-за оплошностей администрирования). Например, ситуации с файлами в корне адреса ресурса. Файл вида wp-config.php (то есть с расширением php) не откроется через пароли доступа к базам данных. Браузер сможет открыть лишь резервную копию с расширением .swp, которая сформируется, если изначальный вид расширения преобразовать в Vim. Еще один вариант проблемы контроля доступа — это сбои в коде приложения, из-за которых неавторизованным посетителям становится доступна засекреченная информация.

    Потеря контроля над доступом к ресурсу

  5. Неправильные виды конфигураций

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

  6. Передача конфиденциальных данных в незащищенном виде

    Такое происходит на многих веб-площадках при использовании определенных API и приложений. То есть практикуется открытая передача сведений, которые вообще-то должны быть засекречены. Для их защиты существуют специальные инструменты, к примеру шифрование https и иные. В противном случае хакерам не составит труда украсть и даже внести изменения в ваши данные, используя вид атаки под названием «человек посередине».

  7. Слабая защищенность от разного вида атак

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

  8. CSRF-уязвимости сайтов

    Суть подобной атаки (расшифровывается как Cross-Site Request Forgery) состоит в том, что поисковик пользователя направляет свой HTTP-запрос в приложение, слабо защищенное от возможного взлома. В таком запросе могут быть любые автоматически добавленные сведения, файлы, куки и т. д.

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

  9. Установка компонентов с уязвимыми местами

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

  10. API без специальной защиты

    Сейчас почти во всех веб-приложениях есть специальные клиентские программы и API-интерфейсы, действующие через JavaScript. К ним есть доступ через поисковики либо через мобильные средства связи. Протоколов для их использования масса — REST/JSON, SOAP/XML, GWT, RPC и другие. Так вот, слабые места могут быть именно в самих API, что делает систему доступной для атак.

    API без специальной защиты

Таким образом, проблемы могут быть совершенно разного характера, начиная от CSRF, SQL, XSS-уязвимостей сайта и заканчивая слабыми местами в серверных настройках.

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

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

  1. Сбор данных (разведка). Необходимо разыскать как можно больше информации о сети либо серверах, которыми вы пользуетесь.

  2. Анализ и сканирование (с учетом полученных разведданных) обнаруженных на вашем веб-ресурсе уязвимостей.

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

  4. Корректировка. Тут принимаются меры для устранения обнаруженных на веб-платформе слабых мест.

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

Сбор сведений (разведка)

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

Сбор сведений (разведка)

Например, для просмотра работающих портов в своем устройстве необходимо в KaliLinux запустить следующую команду:

nmap -sS 192.168.91.249

Цифровая последовательность — это IP вашего ресурса. В результате вы увидите, какие порты открыты и какие сервисы использует система. Однако и этих сведений уже достаточно, чтобы сделать определенные выводы. К примеру, если на компьютере работает SSH-, веб-, прокси-сервер (на порту 3128) и еще, например, Samba (инструмент для обмена файлами), то понятно, что они вполне могут содержать в себе уязвимости.

Для более глубокой разведки отлично подойдет опция А сканера Nmap. Команда выглядит так:

nmap -A 192.168.91.62

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

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

Для этого существует несколько специальных сервисов:

  • whois — предоставляет сведения, которые доступны для всеобщего обозрения. Имеется в виду владелец ресурса, его контактные данные, домен, регистратор и проч.;

  • Netcraft — находит существующие у сайта поддомены;

  • recon-ng — данный инструмент входит в набор KaliLinux и позволяет выполнять поиск уязвимостей сайта онлайн;

  • com/reverse-ip-lookup — выдает сайты, существующие на вашем IP (разумеется, если они есть);

  • Maltego Chlorine — пользуется большой популярностью, имеет открытый исходный код и собирает сведения из любых источников, к которым есть свободный доступ.

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

KaliLinux

Анализ и сканирование

Здесь популярен так называемый фаззинг. Как искать уязвимости сайта с его помощью? Вы нарочно передаете собственному ресурсу большой объем абсолютно разных данных, чтобы увидеть, какие места системы окажутся наиболее слабыми. Это будет понятно по тому, как приложения отреагируют на ложные атаки.

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

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

Вот перечень некоторых инструментов для процедуры сканирования:

  • WPScan — специальная разработка от Ruby, предназначенная для анализа WordPress. Имеет открытый код доступа. Пользоваться инструментом очень легко, и он отлично вам подойдет, если вы нечасто обновляете свой ресурс и на нем задействовано довольно много плагинов. Утилита сканирует ресурс удаленно и исходным кодом не пользуется.

  • BurpSuite — запускается через поисковик и является серьезным инструментом для выявления уязвимостей сайта или каких-либо приложений. Утилита отличается широким спектром действия, затрагивает все формы веб-ресурса, тестирует разные заголовки, запросы, вбиваемые в поисковик, и ответы на них, сканирует URL, анализирует JavaScript-код, выявляет XSS-уязвимости сайта. Вообще это довольно мощная программа, но ею не так-то просто пользоваться.

  • SQLMap — используется для сканирования сайтов с SQL-уязвимостями. Находит опасные места, где может произойти SQL-вторжение.

Пробная эксплуатация

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

Для этого существует специальный инструментарий:

  • BurpSuite — служит для обнаружения XSS-уязвимостей сайта и их проверки путем эксплуатации;

  • SQLMap — средство для обнаружения SQL-уязвимостей сайта и их проверки путем эксплуатации;

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

Metasploit

Последний из названных инструментов (Metasploit) представляет собой специально сформированную среду для обнаружения опасных мест, через которые может произойти атака.

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

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

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

Самые популярные на сегодняшний день сканеры уязвимости сайтов

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

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

Кейс: VT-metall

Узнай как мы снизили стоимость привлечения заявки в 13 раз для металлообрабатывающей компании в Москве

Узнать как

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

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

  1. OpenVAS

    OpenVASЭто программа, позволяющая выполнять комплексные проверки серверов и всех подключенных устройств системы.

    Сканер OpenVAS находит IP-адрес, а затем, используя открытые порты, осуществляет поиск незащищенных служб. Он обнаруживает любые неправильные конфигурации, так называемые дыры во всех составляющих системы.

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

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

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

  2. Tripwire IP360

    Tripwire IP360Сервис широкого действия, который сканирует всю систему целиком вместе с ее локальными, облачными, контейнерными активами. IP360 Tripwire — довольно популярный и мощный инструмент для проверки сайта на уязвимость.

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

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

  3. Nessus

    NessusДанный инструмент разработан компанией Tenable. Он позволяет не только обнаруживать вирусные элементы во всех составляющих программного обеспечения (в операционной системе, приложениях, рекламном ПО), но и удалять вредоносные объекты, исправлять ошибки в настройках.

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

    Сервис охватывает своим вниманием виртуальные, физические, облачные активы и устройства.

  4. Comodo HackerProof

    Comodo HackerProofОтличный надежный инструмент, функционал которого позволяет ежедневно контролировать наличие уязвимостей на сайте.

    Есть несколько вариантов выполнения сканирования системы: возможность предупреждения хакерских вторжений плюс технология siteinspector для тестирования новых современнейших веб-ресурсов.

    Еще один важный бонус от Comodo HackerProof — индикатор безопасности для пользователей.

    Кроме того, система siteinspector выступает и в роли счетчика осуществленных попыток вторжения.

  5. Nexpose Community

    Nexpose CommunityРазработка от Rapid7. Действует на открытом исходном коде и охватывает проверками все составляющие вашей системы.

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

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

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

  6. Vulnerability Manager Plus

    Vulnerability Manager PlusДанный современнейший инструмент — новое детище ManageEngine.

    Vulnerability Manager Plus появился на рынке сравнительно недавно и обладает широкими возможностями. Его функционал позволяет службам информационной безопасности взглянуть на веб-ресурс глазами хакера и попытаться определить места, подходящие для вторжения.

    Здесь есть инструмент сканирования объекта в автоматическом режиме, функция оценки рисков ПО, определения ошибок в настройках безопасности и их корректировки, анализ воздействия. Программа исследует и устраняет уязвимости нулевого дня, осуществляет усиление проникновения веб-сервера.

    На 25 объектов данный сканер можно установить бесплатно.

  7. Nikto

    NiktoЕще один инструмент, за использование которого не нужно платить. С его помощью можно протестировать функционал сервера, исследовать его работу, определить слабые, доступные для атак места, выявить вирусы (если они есть). Также есть функция проверки работы протоколов https, httpd, HTTP и прочих. Кроме того, Nikto умеет быстро тестировать несколько серверных портов одновременно.

  8. Wireshark

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

    Обнаружив угрозу, программа блокирует ее и выполняет проверку. Подходит для использования на Windows, Linux, macOS.

    Wireshark отличается от других анализаторов наличием трехпанельного браузера пакетов и хорошего графического интерфейса. Плюс тут есть хорошие отображающие фильтры, функция анализа VolP. Сканер приспособлен для работы с различными протоколами, среди которых WEP, SSL/TLS, Kerberos.

  9. Aircrack-ng

    Aircrack-ngИспользуется для обеспечения безопасности WiFi-сетей. Aircrack-ng позволяет проводить аудит, следить за работой Wi-Fi-соединения, контролировать его безопасность. Кроме того, программа используется в качестве хакерского приложения, снабжена картами и драйверами, необходимыми для имитации внешних вторжений. Aircrack-ng умеет находить потерянные ключи, сохранять важные данные. Операционная система подходит для работы с Windows, OS X, Linux, NetBSD, Solaris.

  10. Retina

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

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

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

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

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

Система WordPress пользуется очень большой популярностью и сейчас, к примеру, обслуживает порядка 80 миллионов сайтов.

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

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

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

Если говорить конкретно о WordPress, то здесь чаще всего обнаруживаются следующие уязвимости:

  • утратившее свою актуальность программное обеспечение, в частности плагины, темы и прочее;

  • использование «избитых» логинов (типа «administrator», «admin»), имени домена и т. д.;

  • слишком простые пароли;

  • криво оформленные права доступа к файлам;

  • шаблонный префикс базы данных;

  • активированный (через админку) допуск на редактирование тем и плагинов;

  • использование небезопасного устройства либо хостинга.

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

  • Unmask Parasites — позволяет определить, удалось ли злоумышленникам проникнуть на сайт и оставить на нем вирусные коды либо спам.

  • ScanMyServer — дает возможность каждую неделю бесплатно выполнять сканирование своего ресурса, обнаруживает опасные места и формирует подробные отчеты. Чтобы воспользоваться данным сервисом, необходимо зарегистрироваться (процедура тоже бесплатная) и поставить в футере своего веб-ресурса картинку со ссылкой на ScanMyServer.

  • VirusTotal — мощный инструмент, работающий с такими сканерами, как Касперский, Yandex Safe Browsing, ESET, Dr. Web и прочими (всего более 50). С помощью VirusTotal можно исследовать всю веб-платформу, отдельный файл или IP-адрес.

  • WordPress Security Scan — сканирует на наличие уязвимостей сайты, размещенные на WordPress. Для выполнения детального тестирования необходимо оплатить подписку.

  • Norton Safe Web — входит в пакет Norton, обнаруживает зараженные вирусами элементы программного обеспечения.

  • Acunetix — работает с разными сайтами (не только теми, что расположены на WordPress). Можно воспользоваться двухнедельным бесплатным тестовым периодом, но для этого придется зарегистрироваться.

  • Sucuri SiteCheck — обнаруживает вредоносное либо неактуальное ПО, различные виды ошибок, проверяет, не оказался ли ваш веб-ресурс в черном списке (сервису сейчас доступны для сверки 9 списков).

  • Web Inspector — обнаруживает всевозможные вирусы, трояны, фишинги, бэкдоры и т. д., выявляет опасные составляющие программного обеспечения. Работает довольно быстро, формирует достаточно подробный отчет.

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

Премиум-пакет

Можно использовать специальные плагины (один или несколько) для обнаружения уязвимостей. Система автоматически выполняет обновление как одиночно установленных плагинов на сайтах WordPress, так и выполненных в режиме Мультисайт.

  • Vulnerable Plugin Checker — исследует плагины на наличие уязвимых мест и иных сбоев в работе. Все, что нужно указать в настройках, — свой электронный адрес. Система будет присылать на него отчеты два раза в течение суток.

  • WPScan — приложение идентифицирует уязвимости, входящие в перечень WPScan Vulnerability Database и отчитывается об их количестве администратору. Сообщения о новых найденных слабых местах приходят по электронной почте.

  • Total Security — следит за обстановкой на вашей веб-площадке, сразу информирует об опасности, когда обнаруживает дыры, чтобы вы могли их ликвидировать. Данный плагин сканирует файлы WordPress, темы, плагины, может самостоятельно менять страницу с авторизацией, то есть …/wp-login.php. Программа не решает самостоятельно все обнаруженные проблемы, однако формирует для вас подробный отчет.

Скачайте полезный документ:

Чек-лист: Как добиваться своих целей в переговорах с клиентами

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

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

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

  • Quttera Web Malware Scanner — успешно обнаруживает любые внедренные в базы данных вирусы, трояны, черви, инъекции и айфремы, редиректы и еще целый перечень всевозможных угроз. Также анализирует, не был ли ваш веб-ресурс по каким-либо причинам определен в черный список.

Можно установить дополнительные плагины

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

Что делать, если сайт все же взломали

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

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

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

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

  1. Постарайтесь собрать и проанализировать все сведения о нападении:

    • обратитесь в службу технической поддержки хостинга, попросите предоставить вам логи (специальные журналы, они бывают двух видов: access_log и error_log) по максимально доступному интервалу времени;

    • сделайте запрос на предоставление лога ftp-сервера;

    • подробно изложите суть проблемы. Хорошо, если удастся точно указать дату, а также время. Опишите, какие именно обнаружены неисправности. Это может быть поток левых ссылок (нужно указать, на какие страницы они были вставлены), видоизменение главной страницы, некорректное перенаправление (редирект) мобильных пользователей. Могут подавать сигналы бедствия антивирусы (десктопный и от поисковика).

  2. Исследуйте все устройства, через которые осуществлялись подключения к ресурсу, обновление баз и антивируса.

    Поменяйте все пароли

  3. Поменяйте все пароли (админовский на сайте, от ftp и хостера). Генерируйте надежные пароли: длиннее семи символов, с цифрами, заглавными и строчными буквами.

  4. Воспользуйтесь резервной копией сайта, если его работа существенно нарушена.

Когда работа по устранению проблем будет завершена, примите ряд мер по защите своего ресурса от последующих вторжений.

Воспользуйтесь каким-либо бесплатным сканером типа ClamAv, LMD, AI-BOLIT и проверьте свой ресурс. Обнаруженные хакерские скрипты необходимо удалить.

Найдите на сайте официального разработчика последнюю версию CMS и выполните обновление. Вообще установите все возможные обновления (для модулей CMS-плагинов).

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

  • позаботьтесь о том, чтобы у вас на сайте были плагины для регулярной проверки файлов базы данных (их нужно установить);

  • панель администратора не должна быть легко доступна. Добавьте еще один пароль на входе либо введите обязательную авторизацию (через jp-адрес);

  • для всех элементов ресурса, которые остаются всегда неизменными, поставьте отметку «только для чтения»;

  • зайдите в файл php.ini и отключите опции, которые не используются;

  • поставьте запрет на обращение к php-скриптам во всех папках с кэшем, временными файлами и загрузками.

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

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

Первое, что нужно сделать, — грамотно организуйте возможности доступа к ресурсу. Пусть у каждого сотрудника будет своя зона действий, с самостоятельным паролем и привилегиями (их не должно быть много). Каждая манипуляция администратора должна фиксироваться в логе (журнале действий). В работе с ftp-/ssh-хостингом — те же меры предосторожности.

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

Третье — пользуйтесь именно sftp-подключением (то есть безопасным), а не ftp.

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

Безопасность сайта

Всегда имейте в виду, что, какой бы современный инструментарий вы ни использовали, вероятность возникновения уязвимостей на сайте все равно остается. Причем на более объемных ресурсах и угроз больше (ведь там обширнее функционал). На полную проверку системы иногда могут уходить целые дни, а то и месяцы. 

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

Дмитрий Свистунов

Статья опубликована: 30.01.2020

Облако тегов

Понравилась статья? Поделитесь:

Понравилась статья? Поделить с друзьями:
  • Как найти штриховку в автокаде
  • Как исправить деформацию коленного сустава без операции
  • Как составить пищевой рацион на сутки
  • Как найти спрос на товар формула
  • Как исправить ошибку по всему столбцу в excel