Проверяем на уязвимости любой сайт с помощью Nikto
Всем привет! В марте OTUS запускает новый курс «Практикум по Kali Linux». В преддверии старта курса подготовили для вас перевод полезного материала. Также хотим пригласить всех желающих на бесплатный урок по теме: «Denial of Service атаки и защита от них».
Перед тем как атаковать любой сайт, хакер или пентестер сначала составляет список целей. После того, как он проведет хорошую разведку и найдет слабые места для «наведения прицела», ему понадобится инструмент сканирования веб-сервера, такой как Nikto, который поможет найти уязвимости – потенциальные вектора атаки.
Nikto – это простой открытый сканер веб-серверов, который проверяет веб-сайт и сообщает о найденных уязвимостях, которые могут быть использованы для эксплойта или взлома. Кроме того, это один из наиболее широко используемых инструментов сканирования веб-сайтов на уязвимости во всей отрасли, а во многих кругах он считается отраслевым стандартом.
Несмотря на то, что этот инструмент чрезвычайно эффективен, он не действует скрытно. Любой сайт с системой обнаружения вторжений или иными мерами безопасности поймет, что его сканируют. Nikto был разработан для тестирования безопасности и о скрытности его работы никто не задумывался.
Как правильно использовать Nikto
Если вы просто запустите Nikto на целевом веб-сайте, вы, возможно, не поймете, что делать с информацией, полученной после сканирования. Nikto на самом деле больше похож на лазерную указку, которая влечет за собой выстрел, и через некоторое время вы увидите, как это работает.
Для начала давайте поговорим о целях (target). Целью может оказаться почти любое место, куда может нанести свой удар хакер, например, сетевые принтеры или веб-сервер. Когда мы чуть позже перейдем к использованию Nikto, нам нужно будет предоставить ему один из трех видов информации: IP-адрес для локальной службы, веб-домен для атаки или веб-сайт SSL/HTTPS.
Прежде чем начинать сканирование с помощью Nikto, лучше предварительно провести разведку с помощью такого открытого инструмента как Maltego. Такие инструменты могут оказаться полезными при создании профиля и формировании более конкретного списка целей, на которых стоит сосредоточиться. Как только вы это сделаете, можно будет воспользоваться Nikto для поиска потенциальных уязвимостей в целях из вашего списка.
Если повезет, уязвимость с известным эксплойтом будет найдена, а значит, что уже существует инструмент, который поможет воспользоваться этим слабым местом. С помощью соответствующего инструмента, который автоматически эксплуатирует уязвимость, хакер может получить доступ к цели для выполнения любого количества скрытых атак, таких как, например, добавление вредоносного кода.
Шаг 1: Установка Nikto
Если вы используете Kali Linux, то Nikto будет предустановлен, поэтому вам ничего скачивать и устанавливать не придется. Он будет расположен в категории «Vulnerability Analysis». Если у вас его по какой-то причине нет, вы можете скачать Nikto с его репозитория на GitHub или просто использовать команду apt install .
apt install nikto
Если вы работаете на Mac, то можете использовать Homebrew, чтобы установить Nikto.
brew install nikto
Шаг 2: Познакомьтесь с Nikto
Перед сканированием веб-серверов с помощью Nikto, воспользуйтесь параметром -Help, чтобы увидеть все, что можно делать с этим инструментом:
nikto -Help
Options: -ask+ Whether to ask about submitting updates yes Ask about each (default) no Don't ask, don't send auto Don't ask, just send -Cgidirs+ Scan these CGI dirs: "none", "all", or values like "/cgi/ /cgi-a/" -config+ Use this config file -Display+ Turn on/off display outputs: 1 Show redirects 2 Show cookies received 3 Show all 200/OK responses 4 Show URLs which require authentication D Debug output E Display all HTTP errors P Print progress to STDOUT S Scrub output of IPs and hostnames V Verbose output -dbcheck Check database and other key files for syntax errors -evasion+ Encoding technique: 1 Random URI encoding (non-UTF8) 2 Directory self-reference (/./) 3 Premature URL ending 4 Prepend long random string 5 Fake parameter 6 TAB as request spacer 7 Change the case of the URL 8 Use Windows directory separator (\) A Use a carriage return (0x0d) as a request spacer B Use binary value 0x0b as a request spacer -Format+ Save file (-o) format: csv Comma-separated-value htm HTML Format nbe Nessus NBE format sql Generic SQL (see docs for schema) txt Plain text xml XML Format (if not specified the format will be taken from the file extension passed to -output) -Help Extended help information -host+ Target host -404code Ignore these HTTP codes as negative responses (always). Format is "302,301". -404string Ignore this string in response body content as negative response (always). Can be a regular expression. -id+ Host authentication to use, format is id:pass or id:pass:realm -key+ Client certificate key file -list-plugins List all available plugins, perform no testing -maxtime+ Maximum testing time per host (e.g., 1h, 60m, 3600s) -mutate+ Guess additional file names: 1 Test all files with all root directories 2 Guess for password file names 3 Enumerate user names via Apache (/~user type requests) 4 Enumerate user names via cgiwrap (/cgi-bin/cgiwrap/~user type requests) 5 Attempt to brute force sub-domain names, assume that the host name is the parent domain 6 Attempt to guess directory names from the supplied dictionary file -mutate-options Provide information for mutates -nointeractive Disables interactive features -nolookup Disables DNS lookups -nossl Disables the use of SSL -no404 Disables nikto attempting to guess a 404 page -Option Over-ride an option in nikto.conf, can be issued multiple times -output+ Write output to this file ('.' for auto-name) -Pause+ Pause between tests (seconds, integer or float) -Plugins+ List of plugins to run (default: ALL) -port+ Port to use (default 80) -RSAcert+ Client certificate file -root+ Prepend root value to all requests, format is /directory -Save Save positive responses to this directory ('.' for auto-name) -ssl Force ssl mode on port -Tuning+ Scan tuning: 1 Interesting File / Seen in logs 2 Misconfiguration / Default File 3 Information Disclosure 4 Injection (XSS/Script/HTML) 5 Remote File Retrieval - Inside Web Root 6 Denial of Service 7 Remote File Retrieval - Server Wide 8 Command Execution / Remote Shell 9 SQL Injection 0 File Upload a Authentication Bypass b Software Identification c Remote Source Inclusion d WebService e Administrative Console x Reverse Tuning Options (i.e., include all except specified) -timeout+ Timeout for requests (default 10 seconds) -Userdbs Load only user databases, not the standard databases all Disable standard dbs and load only user dbs tests Disable only db_tests and load udb_tests -useragent Over-rides the default useragent -until Run until the specified time or duration -update Update databases and plugins from CIRT.net -useproxy Use the proxy defined in nikto.conf, or argument http://server:port -Version Print plugin and database versions -vhost+ Virtual host (for Host header) + requires a value
Шаг 3: Используйте базовый синтаксис
Как вы видите из предыдущего шага, у Nikto есть много вариантов использования, но для наших целей мы будем использовать базовый синтаксис с фактическим IP-адресом или именем хоста без угловых скобок.
nikto -h
Однако, Nikto способен выполнять сканирование SSL и порта 443, который используют сайты HTTPS (HTTP использует по умолчанию 80 порт). Таким образом, мы не ограничиваемся только сканированием старых сайтов, мы может проводить оценку уязвимостей сайтов, использующих SSL, что на сегодняшний день является почти обязательным требованием для индексирования в результатах поиска.
Если мы знаем, что у целевого сайта есть SSL, мы можем указать это в Nikto, чтобы сэкономить некоторые время на сканировании, добавив -ssl в конец команды.
nikto -h -ssl
Шаг 4: Сканируйте сайты с SSL
Например, давайте начнем со сканирования сайта pbs.org , чтобы увидеть типы информации, которые может выдать сканирование Nikto. После того, как он подключается к порту 443, мы видим какую-то полезную информацию о шифровании и другие детали, такие как, например, то, что сервер работает на nginx, однако здесь для нас не так много интересного.
nikto -h pbs.org -ssl
- Nikto v2.1.6 ------------------------------------------------------------------------------ - STATUS: Starting up! + Target IP: 54.225.198.196 + Target Hostname: pbs.org + Traget Port: 443 ------------------------------------------------------------------------------ + SSl Info: Subject: /CN=www.pbs.org Altnames: account.pbs.org, admin.pgs.org, dipsy-tc.pbs.org, docs.pbs.org, ga.video.cdn.pbs.org, git.pbs.org, heart.ops.pbs.org, hub-dev.pbs.org, image.pbs.org, jaws..pbs.org, kids.pbs.org, koth-qa.svp.pbs.org, login.pbs.org, ops.pbs.org, pbs.org, player.pbs.org, projects.pbs.org, sentry.pbs.org, teacherline.pbs.org, urs.pbs.org, video.pbs.org, weta-qa.svp.pbs.org, whut-qa.svp.pbs.org, wnet.video-qa.pbs.org, wnet.video-staging.pbs.org, www-cache.pbs.org, www.pbs.org Ciphers: ECDHE-RSA-AES128-GCM-SHA256 Issuer: /C-US/0=Let's Encrypt/CN=Let's Encrypt Authority X3 + Start Time: 2018-12-05 23:34:06 (GMT-8) ------------------------------------------------------------------------------ + Server: nginx + The anti-clickjacking X-Frame-Options header is not present. + The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS + Uncommon header 'x-pbs-fwsrvname' found, with contents: fwcacheproxy1 + The site uses SSL and the Strict-Transport-Security HTTP header is not defined. + The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type + Root page / redirects to: https://www.pbs.org/ + No CGI Directories found (use '-C all' to force check all possible dirs) + RC-1918 IP address found in the 'x-pbs-appsvrip' header: The IP is "10.137.181.52". + Uncommon header 'x-cache-fs-status' found, with contents: EXPIRED + Uncommon header 'x-pbs-appsvrname' found, with contents: fwcacheproxy1 + Uncommon header 'x-pbs-appsvrip' found, with contents: 10.137.181.52 + Server leaks inodes via ETags, header found with file /pbs.org.zip, fields: 0x5b96537e 0x1678 + 7446 requests: 0 error(s) and 10 item(s) reported on remote host + End Time: 2018-12-06 00:30:29 (GMT-8) (3383 seconds) ------------------------------------------------------------------------------ + 1 host(s) tested
Шаг 5: Сканирование IP-адреса
Теперь, когда мы провели быстрое сканирование веб-сайта, мы можем попробовать использовать Nikto в локальной сети, чтобы найти embedded-сервера, такие как страница логина роутера или HTTP-сервис на другой машине, который представляет из себя просто сервер без веб-сайта. Чтобы узнать IP-адрес мы будем использовать ifconfig .
IP-адрес, который нам нужен относится к «inet». На нем мы можем использовать ipcalc для того, чтобы получить сетевой диапазон. Если у вас нет ipcalc, вы можете установить его с помощью команды apt install ipcalc , а затем повторить попытку. Диапазон будет стоять после «Network», в моем случае это 192.168.0.0/24.
ifconfig
en0: flags=8863 mtu 1500 inet 192.168.0.48 netmask 0xffffff00 broadcast 192.168.0.255 inet6 XXXX::XXX:XXXX:XXXX:XXXX%en0 prefixlen 64 secured scopeid 0x8 ether XX:XX:XX:XX:XX:XX txqueuelen 1000 (Ethernet) inet6 XXXX::XXX:XXXX:XXXX:XXXX%en0 prefixlen 64 autoconf secured inet6 XXXX::XXX:XXXX:XXXX:XXXX%en0 prefixlen 64 autoconf temporary nd6 options=201 media: autoselect status: active en2: flags=8863 mtu 1500 options=60 ether XX:XX:XX:XX:XX:XX media: autoselect status: inactive
Теперь мы хотим запустить Nmap, чтобы найти службы, работающие в этом сетевом диапазоне. Давайте сканировать 80 порт с помощью нашего диапазона, для этого допишем -oG (grepable output), чтобы получить только те хосты, которые подняты и работают, то есть те, которые отвечают, говоря, что 80 порт открыт. Затем мы сохраним все это в файл, который я назову nullbyte.txt , вы, в свою очередь, можете назвать его как угодно.
ipcalc 192.168.0.48
Address: 192.168.0.48 11000000.10101000.00000000. 00110000 Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000 Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111 => Network: 192.168.0.0/24 11000000.10101000.00000000. 00000000 HostMin: 192.168.0.1 11000000.10101000.00000000. 00000001 HostMax: 192.168.0.254 11000000.10101000.00000000. 11111110 Broadcast: 192.168.0.255 11000000.10101000.00000000. 11111111 Hosts/Net: 254 Class C, Private Internet
Есть небольшой фокус, который поможет отправить все хосты прямо в Nikto для сканирования. Мы используем cat для чтения входных данных, хранящихся в нашем документе nullbyte.txt (или как вы его назвали самостоятельно). После этого мы используем awk – специальный инструмент в Linux, который поможет найти следующий шаблон, где Up означает, что хост поднят, а print $2 значит, что нужно вывести второе слово в каждой строке, то есть только IP-адрес. Затем, полученные данные мы отправим в файл, который называется targetIP.txt (или как вам захочется).
cat nullbyte.txt | awk '/Up$/' | cat >> targetIP.txt
Теперь мы можем просмотреть содержимое нашего нового файла с помощью cat, чтобы увидеть все IP-адреса, у которых открыт 80 порт.
cat targetIP.txt
192.168.0.1 192.168.0.2 192.168.0.4 192.168.0.5 192.168.0.11 192.168.0.24 192.168.0.31 192.168.0.48 192.168.0.60
Такой формат идеально подойдет Nikto, поскольку он может легко интерпретировать подобные файлы. Таким образом, мы можем отправить этот вывод в Nikto следующей командой.
nikto -h targetIP.txt
Результаты будут аналогичны тем, что мы получили при сканировании с SSL.
Шаг 6: Сканирование HTTP-сайта
Мы просканировали защищенный веб-сайт и IP-адрес в локальной сети, теперь настало время искать незащищенный веб-домен, который использует 80 порт. Для этого примера я использую сайт afl.com.au, у которого не было SSL в тот момент, когда я проводил это сканирование.
nikto -h www.afl.com.au
- Nikto v2.1.6 --------------------------------------------------------------------------- + Target IP: 159.180.84.10 + Target Hostname: www.afl.com.au + Target Port: 80 + Start Time: 2018-12-05 21:48:32 (GMT-8) --------------------------------------------------------------------------- + Server: instart/nginx + Retried via header: 1.1 varnish (Varnish/6.1), 1.1 e9ba0a9a729ff2960a04323bf1833df8.cloudfront.net (CloudFront) + The anti-clickjacking X-Frame-Options header is not present. + The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS + Uncommon header 'x-cache' found, with contents: Miss from cloudfront + Uncommon header 'x-instart-cache-id' found, with contents: 17:12768802731504004780::1544075250 + Uncommon header 'v-cache-hit' found, with contents: Hit + Uncommon header 'x-amz-cf-id' found, with contents: Dr-r6OwO5kk9ABt4ejzpc7R7AIF6SuH6kfJHQgP0v6xZoHwMLE55rQ== + Uncommon header 'x-instart-request-id' found, with contents: 12814413144077601501:BEQ01-CPVNPPRY18:1552504721:0 + Uncommon header 'x-oneagent-js-injection' found, with contents: true + Uncommon header 'grace' found, with contents: cache + The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type + Uncommon header 'x-ruxit-js-agent' found, with contents: true + Cookie dtCookie created without the httponly flag + Server banner has changed from 'instart/nginx' to 'nginx' which may suggest a WAF, load balancer or proxy is in place + No CGI Directories found (use '-C all' to force check all possible dirs) + Entry '/sites/' in robots.txt returned a non-forbidden or redirect HTTP code (200) + Entry '/search/' in robots.txt returned a non-forbidden or redirect HTTP code (200) + Entry '*.mobileapp' in robots.txt returned a non-forbidden or redirect HTTP code (400) + Entry '*.liveradio' in robots.txt returned a non-forbidden or redirect HTTP code (400) + Entry '*.smartmobile' in robots.txt returned a non-forbidden or redirect HTTP code (400) + Entry '*.responsive' in robots.txt returned a non-forbidden or redirect HTTP code (400) + Entry '/stats?*/' in robots.txt returned a non-forbidden or redirect HTTP code (200) + "robots.txt" contains 8 entries which should be manually viewed. + OSVDB-3092: /sitemap.xml: This gives a nice listing of the site content. + OSVDB-3092: /psql_history: This might be interesting. + OSVDB-3092: /global/: This might be interesting. + OSVDB-3092: /home/: This might be interesting. + OSVDB-3092: /news: This might be interesting. + OSVDB-3092: /search.vts: This might be interesting. + OSVDB-3092: /stats.htm: This might be interesting. + OSVDB-3092: /stats.txt: This might be interesting. + OSVDB-3092: /stats/: This might be interesting. + OSVDB-3092: /Stats/: This might be interesting. + OSVDB-3093: /.wwwacl: Contains authorization information + OSVDB-3093: /.www_acl: Contains authorization information + OSVDB-3093: /.htpasswd: Contains authorization information + OSVDB-3093: /.access: Contains authorization information + OSVDB-3093: /.addressbook: PINE addressbook, may store sensitive e-mail address contact information and notes + OSVDB-3093: /.bashrc: User home dir was found with a shell rc file. This may reveal file and path information. + OSVDB-3093: /.bash_history: A user's home directory may be set to the web root, the shell history was retrieved. This should not be accessible via the web. + OSVDB-3093: /.forward: User home dir was found with a mail forward file. May reveal where the user's mail is being forwarded to. + OSVDB-3093: /.history: A user's home directory may be set to the web root, the shell history was retrieved. This should not be accessible via the web. + OSVDB-3093: /.htaccess: Contains configuration and/or authorization information + OSVDB-3093: /.lynx_cookies: User home dir found with LYNX cookie file. May reveal cookies received from arbitrary web sites. + OSVDB-3093: /.mysql_history: Database SQL? + OSVDB-3093: /.passwd: Contains authorization information + OSVDB-3093: /.pinerc: User home dir found with a PINE rc file. May reveal system information, directories and more. + OSVDB-3093: /.plan: User home dir with a .plan, a now mostly outdated file for delivering information via the finger protocol + OSVDB-3093: /.proclog: User home dir with a Procmail rc file. May reveal mail traffic, directories and more. + OSVDB-3093: /.procmailrc: User home dir with a Procmail rc file. May reveal subdirectories, mail contacts and more. + OSVDB-3093: /.profile: User home dir with a shell profile was found. May reveal directory information and system configuration. + OSVDB-3093: /.rhosts: A user's home directory may be set to the web root, a .rhosts file was retrieved. This should not be accessible via the web. + OSVDB-3093: /.sh_history: A user's home directory may be set to the web root, the shell history was retrieved. This should not be accessible via the web. + OSVDB-3093: /.ssh: A user's home directory may be set to the web root, an ssh file was retrieved. This should not be accessible via the web. + OSVDB-5709: /.nsconfig: Contains authorization information + /portal/changelog: Vignette richtext HTML editor changelog found. + 7587 requests: 4 error(s) and 55 item(s) reported on remote host + End Time: 2018-12-05 22:42:41 (GMT-8) (3249 seconds) --------------------------------------------------------------------------- + 1 host(s) tested
Из информации выше, мы понимаем, что присутствует сервер Varnish и некоторые заголовки, которые могут подсказать, как сконфигурирован веб-сайт. Однако более полезная информация – это обнаруженные каталоги, которые могут помочь зацепить конфигурационные файлы, содержащие учетные данные или другие вещи, которые были неправильно сконфигурированы и оказались доступными непреднамеренно.
Элементы с префиксом OSVDB – это уязвимости, о которых сообщается на Open Source Vulnerability Database (сайте, который закрылся в 2016 году). Он похож на другие базы данных уязвимостей, такие как SecurityFocus, Microsoft Technet и Vulnerabilities and Exposures (https://cve.mitre.org/). Лично мне ближе National Vulnerability Database.
Несмотря на то, что наше сканирование не выявило никаких критических уязвимостей, которые можно было бы эксплуатировать, вы можете использовать справочный инструмент CVE для перевода идентификатора OSVDB в запись CVE, чтобы вы могли воспользоваться одним из сайтов, приведенных выше.
Допустим, вы нашли что-то достойное исследования, например CVE-2018-10933, уязвимость Libssh, о которой мы подробнее говорили ранее. CVE содержит информацию о том, как ее эксплуатировать, насколько уязвимость серьезна (например, критическая уязвимость) и некоторые другие сведения, которые могут помочь определиться с вектором атаки. Если это что-то стоящее, вы можете поискать с Metasploit, поскольку кто-то скорее всего уже разработал модуль, который поможет легко эксплуатировать эту уязвимость.
Шаг 7: Сканирование вместе с Metasploit
Одна из лучших вещей в Nikto заключается в том, что вы можете просто экспортировать информацию, полученную при сканировании, в формат, который сможет прочитать Metasploit. Для этого просто используйте команды для выполнения сканирования, приведенные выше, но добавьте к ним в конце флаги -Format msf+. Этот формат может помочь быстро сопоставить данные, полученные с помощью эксплойта.
nikto -h -Format msf+
Итак, в сегодняшнем руководстве мы перешли от определения цели к поиску уязвимостей в ней, а затем связали найденные уязвимости с эксплойтом, чтобы нам не пришлось делать всю работу вручную. Поскольку Nikto не работает скрытно, разумно выполнять эти сканирования через VPN, Tor или другой тип сервиса, чтобы ваш IP-адрес не был помечен как подозрительный.
Kali Linux – тестирование проникновения на сайт
В этой главе мы узнаем о тестировании на проникновение веб-сайтов, предлагаемом Kali Linux.
Vega Usage
Vega – это бесплатная платформа для сканирования и тестирования с открытым исходным кодом, предназначенная для проверки безопасности веб-приложений. Vega может помочь вам найти и проверить SQL-инъекцию, межсайтовый скриптинг (XSS), непреднамеренно раскрытую конфиденциальную информацию и другие уязвимости. Он написан на Java, на основе графического интерфейса и работает в Linux, OS X и Windows.
Vega включает в себя автоматический сканер для быстрых тестов и перехватывающий прокси для тактического осмотра. Vega может быть расширена с помощью мощного API на языке Интернета: JavaScript. Официальная веб-страница https://subgraph.com/vega/
Шаг 1 – Чтобы открыть Vega, выберите Приложения → 03-Анализ веб-приложений → Vega.
Шаг 2 – Если вы не видите приложение в пути, введите следующую команду.
Шаг 3 – Чтобы начать сканирование, нажмите знак «+».
Шаг 4 – Введите URL веб-страницы, который будет сканироваться. В этом случае это метапроизводимая машина → нажмите «Далее».
Шаг 5 – Отметьте все поля модулей, которыми вы хотите управлять. Затем нажмите «Далее».
Шаг 6 – Нажмите «Далее» еще раз на следующем снимке экрана.
Шаг 7 – Нажмите «Готово».
Шаг 8 – Если появится следующая таблица, нажмите «Да».
Сканирование будет продолжено, как показано на следующем снимке экрана.
Шаг 9 – После того, как сканирование завершено, на левой нижней панели вы можете увидеть все результаты, которые классифицированы в соответствии с серьезностью. Если вы щелкните по нему, вы увидите все детали уязвимостей на правой панели, такие как «Запрос», «Обсуждение», «Воздействие» и «Исправление».
ZapProxy
ZAP-OWASP Zed Attack Proxy – это простой в использовании интегрированный инструмент тестирования на проникновение для поиска уязвимостей в веб-приложениях. Это интерфейс Java.
Шаг 1 – Чтобы открыть ZapProxy, перейдите в Приложения → 03-Анализ веб-приложений → owaspzap.
Шаг 2 – Нажмите «Принять».
ZAP начнет загружаться.
Шаг 3 – Выберите один из вариантов, как показано на следующем снимке экрана, и нажмите «Пуск».
Следующая сеть является метасплочной с IP: 192.168.1.101
Шаг 4. Введите URL-адрес веб-сайта тестирования в поле «URL-адрес для атаки» → нажмите «Атака».
После завершения сканирования в верхней левой панели вы увидите все просканированные сайты.
На левой панели «Оповещения» вы увидите все полученные данные вместе с описанием.
Шаг 5 – Нажмите «Паук», и вы увидите все отсканированные ссылки.
Использование инструментов базы данных
sqlmap
sqlmap – это инструмент для тестирования на проникновение с открытым исходным кодом, который автоматизирует процесс обнаружения и использования недостатков SQL-инъекций и захвата серверов баз данных. Он поставляется с мощным механизмом обнаружения, множеством нишевых функций для окончательного тестера проникновения и широким диапазоном переключателей, начиная от дактилоскопии базы данных, за выборку данных из базы данных, до доступа к базовой файловой системе и выполнения команд в операционной системе через внешнюю систему. зонные соединения.
Давайте узнаем, как использовать sqlmap.
Шаг 1 – Чтобы открыть sqlmap, перейдите в Приложения → Оценка базы данных → sqlmap.
Веб-страница, имеющая уязвимые параметры для SQL-инъекций, является метасложной.
Шаг 2. Чтобы начать тестирование SQL-инъекций, введите «sqlmap – u URL-адрес жертвы»
Шаг 3 – Из результатов вы увидите, что некоторые переменные уязвимы.
sqlninja
sqlninja – это инъекция SQL в Microsoft SQL Server для полного доступа к графическому интерфейсу. sqlninja – это инструмент, предназначенный для использования уязвимостей SQL-инъекций в веб-приложении, использующем Microsoft SQL Server в качестве серверной части. Полную информацию об этом инструменте можно найти на http://sqlninja.sourceforge.net/
Шаг 1 – Чтобы открыть sqlninja, перейдите в Приложения → Оценка базы данных → sqlninja.
Инструменты сканирования CMS
WPScan
WPScan – это сканер уязвимостей WordPress черного ящика, который можно использовать для сканирования удаленных установок WordPress на наличие проблем безопасности.
Шаг 1 – Чтобы открыть WPscan, перейдите в Приложения → 03-Анализ веб-приложений → «wpscan».
Появится следующий скриншот.
Шаг 2. Чтобы проверить сайт на наличие уязвимостей, введите «wpscan –u URL веб-страницы» .
Если сканер не обновляется, он попросит вас обновить. Я рекомендую это сделать.
Как только сканирование начнется, вы увидите результаты. На следующем снимке экрана уязвимости обозначены красной стрелкой.
Joomscan
Joomla, вероятно, является наиболее широко используемой CMS из-за своей гибкости. Для этой CMS это сканер Joomla. Это поможет веб-разработчикам и веб-мастерам выявить возможные слабые места безопасности на развернутых сайтах Joomla.
Шаг 1 – Чтобы открыть его, просто нажмите левую панель на терминале, затем «joomscan – параметр» .
Шаг 2 – Чтобы получить справку по использованию, введите «joomscan /?»
Шаг 3 – Чтобы начать сканирование, введите «joomscan –u URL-адрес жертвы».
Результаты будут отображаться, как показано на следующем снимке экрана.
Инструменты сканирования SSL
TLSSLed – это сценарий оболочки Linux, используемый для оценки безопасности реализации целевого веб-сервера SSL / TLS (HTTPS). Он основан на sslscan, тщательном сканере SSL / TLS, основанном на библиотеке openssl, и на инструменте командной строки «openssl s_client» .
Текущие тесты включают в себя проверку того, поддерживает ли цель протокол SSLv2, шифр NULL, слабые шифры на основе длины ключа (40 или 56 бит), наличие надежных шифров (например, AES), если цифровой сертификат подписан MD5, и текущие возможности пересмотра SSL / TLS.
Чтобы начать тестирование, откройте терминал и введите «tlssled URL port» . Он начнет проверять сертификат, чтобы найти данные.
Вы можете видеть, что сертификат действителен до 2018 года, как показано зеленым на следующем снимке экрана.
w3af
w3af – это платформа для атаки и аудита веб-приложений, целью которой является выявление и использование всех уязвимостей веб-приложений. Этот пакет предоставляет графический интерфейс пользователя (GUI) для платформы. Если вам нужно только приложение командной строки, установите w3af-console.
Фреймворк был назван «metasploit for the web», но на самом деле он намного больше, поскольку он также обнаруживает уязвимости веб-приложений с помощью методов сканирования «черного ящика». Ядро w3af и его плагины полностью написаны на Python. Проект имеет более 130 плагинов, которые идентифицируют и используют SQL-инъекции, межсайтовый скриптинг (XSS), удаленное включение файлов и многое другое.
Шаг 1 – Чтобы открыть его, перейдите в Приложения → 03-Анализ веб-приложений → Нажмите w3af.
Шаг 2 – В поле «Цель» введите URL-адрес жертвы, который в этом случае будет метасовместимым веб-адресом.
Шаг 3 – Выберите профиль → Нажмите «Пуск».
Шаг 4 – Перейдите в «Результаты», и вы можете увидеть результаты с деталями.
Как пользоваться Kali Linux для проверки сайтов
Суть обеспечения безопасности своих веб-сайтов сводится к тому, чтобы найти проблему раньше хакера и исправить её. Проблемы в безопасности сайтов (уязвимости сайтов) хакеры ищут с помощью специализированных программ, на их жаргоне «инструментов».
Поскольку эти программы «двойного назначения» — то есть можно использовать для обеспечения безопасности своих сайтов или для взлома чужих сайтов, то они свободно распространяются. Есть даже целые дистрибутивы Linux в которые эти инструменты предустановлены. К таким дистрибутивам относятся: Kali Linux, BlackArch, Parrot Security и другие.
Инструменты для проверки сайтов свободно доступны, но проблема в том, что большинство веб-мастеров не умеет ими пользоваться. Ситуация для них усугубляется тем, что это в большей части утилиты командной строки, то есть это программы без графического интерфейса, их нужно запускать в консоли. И всё ещё хуже от того, что это даже не Windows программы — большинство из них легко устанавливаются только в Linux.
Я подготовил эту очень простую инструкцию для абсолютных новичков, которые даже никогда не видели Linux. С помощью неё вы сможете:
- запустить Kali Linux в виртуальной машине
- выполнить проверки своих сайтов и серверов
Сложно не будет, обещаю! Начнём.
Скачайте Kali Linux
Зайдите на страницу https://www.kali.org/downloads/, найдите там вариант Kali Linux 64-Bit и скачайте Torrent-файл. Затем скачайте образ системы (уверен, торрентами вы и без моих инструкций умеете пользоваться).
Как запустить Kali Linux
Пользователи Windows привыкли, что с помощью образа дистрибутива можно только выполнить установку. С помощью образа Linux также можно выполнить установку. Но они умеют ещё один замечательный фокус — запускаться прямо с образа диска. То есть .iso файл можно записать на флешку или на оптический диск и с него загрузиться в Linux и работать там как в полноценной системе. Это называется Live-система.
Плюсы такого способа:
- мгновенный запуск, не требуется время на установку
- можно запустить с флэшки — безопасно для основной операционной системы
- все сделанные изменения в операционной системе исчезают после перезагрузки.
Поскольку я обещал, что будет просто, то мы выберем работу именно в Live-системе. Если у вас появится дальнейший интерес, то вы сможете установить ОС Linux в виртуальную машину или в качестве второй системы.
Запуск Kali Linux без установки
Скаченный образ можно записать на флешку с помощью Etcher (в этой программе всего три кнопки – не запутаетесь) и загрузиться с этой флешки.
Но есть и ещё более простой вариант! Запуск Live-системы Linux в виртуальной машине VirtualBox.
Итак, поскольку мы будем запускать Kali Linux в VirtualBox, то в этом случае нам НЕ нужно записывать ISO образ на флешку, нужно только установить VirtualBox, это делается элементарно, но на всякий случай вот инструкция.
Создание виртуальной машины Kali Linux
Мы все знаем, что на компьютере работает одна операционная система. Мы можем установить вторую операционную систему (например, другую версию Windows или дистрибутив Linux), но чтобы переключиться в эту другую операционную систему, необходимо выключить компьютер и при загрузке выбрать другую ОС. Так вот программа VirtualBox убирает это ограничение — она позволяет запускать на одном компьютере две и более операционных систем, каждая из которых работает независимо от другой!
Это достигается благодаря «виртуальным компьютерам» («виртуальным машинам»), за которые отвечает VirtualBox.
Итак, создадим нашу виртуальную машину, в которой мы будем запускать Kali Linux.
1. Откройте VirtualBox
2. Нажмите кнопку Создать:
3. Введите Имя «Kali Linux», нажмите кнопку Далее.
4. Установите количество оперативной памяти, которую вы выделяете виртуальной машине — рекомендуется 4 гигабайта или более. Но помните, что выделяемая память забирается у вашей основной ОС, то есть оставьте достаточное количество, чтобы ваша основная ОС также нормально работала. Нажмите кнопку Далее.
5. Нам не нужен жёсткий диск, поскольку мы будем работать исключительно в Live-системе. Поэтому выбираем «Не подключать виртуальный жёсткий диск». И нажимаем кнопку Создать.
6. Система думает, что мы не знаем, что делаем, но мы то знаем! Поэтому нажимаем кнопку Продолжить.
7. Этот шаг необязательный. Зайдите в настройки виртуальной машины (выделите её и нажмите кнопку «Настроить», либо кликните по виртуальной машине правой кнопкой и в контекстном меню выберите «Настроить»). Там в разделе Система на вкладке Процессор рекомендую добавить количество ядер (чтобы работала быстрее) и поставить галочку «Включить PAE/NX». Когда изменения сделаны, нажмите кнопку ОК для их сохранения.
Запуск Kali Linux для новичка
Теперь запустите виртуальную машину — для этого дважды кликните по ней, либо нажмите кнопку Запустить.
Появится чёрный экран (на данном этапе это нормально):
В меню перейдите в Устройства → Оптические диски → Выбрать образ диска:
Выберите образ Kali Linux который вы недавно скачали.
Прежде чем перезагрузиться, сделаем ещё одну настройку. В меню перейдите в Устройства → Общий буфер обмена → Двунаправленный.
И теперь в меню выберите Машина → Перезагрузить.
А вот и сама великая и ужасная Kali Linux:
Нажимаем ENTER, чтобы загрузиться.
Консоль Kali Linux
Теперь мы будем работать в командной строке (консоли Linux). Чтобы её открыть кликните на эту иконку:
Лучшие команды Kali Linux для новичков
Проверка сайтов WordPress в Kali Linux
Для проверки сайтов, работающих на WordPress, используется программа WPScan. Эта программа может определить старые версии WordPress, тему оформления, установленные плагины, показать известные уязвимости в плагинах и темах оформления WordPress.
Начнём с обновления базы данных (нужно делать один раз после загрузки компьютера):
wpscan --update
Для проверки сайтов запустите команду вида:
wpscan --url АДРЕС_САЙТА -e p,vt,u
Например, если я хочу проверить сайт www.forum.comp-web-pro.ru, то команда следующая:
wpscan --url www.forum.comp-web-pro.ru -e p,vt,u
Определено, что на сайте доступна регистрация, найдена версия WordPress, определена тема оформления.
Найдено много уязвимостей в установленных плагинах WordPress:
Как запустить сканирование Nikto
Nikto – это инструмент оценки веб-серверов. Он предназначен для поиска различных дефолтных и небезопасных файлов, конфигураций и программ на веб-серверах любого типа.
Для сканирования с Nikto нужно запустить команду вида:
nikto -h https://САЙТ.RU
Обратите внимание, что протокол также нужно указать.
Пример запуска сканирования сайта https://www.forum.comp-web-pro.ru/:
nikto -h https://www.forum.comp-web-pro.ru/
Показываемая информация может быть как о серьёзных ошибках, так и о менее важных недочётах (например, не установлены заголовки безопасности HTTP протокола).
Поиск уязвимости SQL-инъекция
Программа sqlmap пригодиться тем веб-мастерам, которые программируют и пишут код сервисов, CMS, сайтов. С помощью sqlmap можно найти уязвимость SQL-инъекция.
SQL-инъекция — это одна из самых серьёзных уязвимостей веб-приложений. При запуске программы нужно указать тестируемый параметр, пример:
sqlmap -u https://САЙТ.ru/rubrika.php?id=31
Узнаём используемые веб-технологии
Вы можете проверить, что об используемых вашим сайтом технологиях может узнать хакер. Либо сами можете посмотреть технологии, которые применяются на другом сайте. Это делается программой WhatWeb.
Для этого используйте команду вида:
whatweb SITE.RU
К примеру, я хочу узнать о сайте suay.ru:
whatweb suay.ru
Простой сбор информации о веб-приложениях
Wig — это инструмент по сбору информации о веб приложениях, который идентифицирует ряд систем управления контентом (CMS) и другие административные приложения.
apt install wig
Для проверки сайта запустите команду вида:
wig https://SITE.RU
Проверим, что удастся найти о сайте suay.ru:
wig https://suay.ru
Проверка правильности настройки SSL сертификата
С помощью программы testssl.sh можно проверит, всё ли в порядке с вашим SSL сертификатом, правильно ли он установлен, не содержит ли настройка SSL вероятности использования уязвимых шифров и т.д.
sudo apt install testssl.sh
Для проверки запустите команду вида:
testssl SITE.RU
Проверим правильность настройки TLS/SSL сайта suay.ru:
testssl suay.ru
Как проверить открытые порты
Проверку открытых портов можно сделать программой Nmap.
В самих по себе открытых портах нет ничего плохого. Например, для работы веб-сервера необходимы открытые порты 443 и 80. То есть для используемых служб порты должны быть открыты.
Порты следует закрыть для неиспользуемых служб. Например, если вам не нужен FTP сервер, то порт 21 не должен быть открыт, если вы не используете SSH, то порт 22 не должен быть открыт.
Если вы обнаружили открытый порт с необычным номером, то это может означать, что сервер взломан и хакер установил на этом порту бэкдор.
В первую очередь следует проверять свои собственные сервера (VPS), поскольку на виртуальных хостингах обычно открыто много портов и хостер это делает для каких-то своих нужд.
Для проверки открытых портов используется команда Nmap.
Команда запускается следующим образом:
nmap IP_или_САЙТ
В этом случае будут проверены самые часто используемые порты. Если вы хотите проверить вообще все порты, то запустите команду так:
nmap IP_или_САЙТ -p-
Проверка открытых портов сервера, на котором работает сайт suip.biz:
nmap suip.biz
Как узнать, занят ли домен
Предположим, вы хотите узнать, занято ли доменное имя, но не хотите доверять посторонним сервисам и сайтам. Вы можете сделать проверку прямо на своём компьютере!
Это можно сделать, например, с помощью команды whois. Запустите её следующим образом:
whois САЙТ.RU
Допустим, я хочу узнать, занят ли домен w-e-b.site:
whois w-e-b.site
Если домен уже кем-то зарегистрирован, то будет выведена соответствующая информация о регистрации. Если же домен никем не используется, то будет выведено, что домен не найден (возможны варианты: данные не найдены, записи не найдены и т. д.). Примеры записей, если домен не существует:
- No entries found
- No Data Found
- The queried object does not exist: DOMAIN NOT FOUND
- и т.д.
Как посмотреть HTTP заголовки
В HTTP заголовках может содержаться информация о редиректе, о сервере и прочее. Вы можете посмотреть HTTP заголовки следующей командой:
curl -I SITE.RU
Просмотр HTTP заголовков при обращении к сайту suay.ru:
curl -I suay.ru
HTTP/1.1 302 Moved Temporarily Server: nginx Content-Type: text/html; charset=iso-8859-1 Connection: keep-alive Location: https://suay.ru/ Date: Mon, 29 Jul 2019 04:47:26 GMT X-Page-Speed: 1.13.35.2-0 Cache-Control: max-age=0, no-cache
Выполняется редирект, об этом говорит строка Location: https://suay.ru/.
Как узнать IP адрес сайта
Нет ничего проще, чем узнать IP адрес любого сайта. Для этого выполните команду вида:
dig SITE.RU +short
К примеру, я хочу узнать IP адрес сайта suay.ru:
dig suay.ru +short
Как узнать все DNS записи сайта
Все DNS записи сайта можно получить командой вида:
dig SITE.RU ANY
Пример для сайта suay.ru:
dig suay.ru ANY
Kali Linux для абсолютных новичков
Пожалуй, на первый раз достаточно.
На самом деле, я бы мог ещё долго продолжать: как искать скрытые файлы и папки на сайте, как узнать субдомены, как проверить на другие уязвимости, как найти все сайты на одном IP адресе и так далее — и это только про сайты! Много интересного можно рассказать и про другие темы с Kali Linux: про Wi-Fi, например. Поэтому если у вас есть интерес к этой теме, то я сделаю продолжение. Свой интерес вы можете показать поделившись ссылкой на эту статью в социальной сети или на своём сайте. Будут посетители на эту статью — будет и продолжение.
Связанные статьи:
- iThemes Security заблокировал пользователя — как войти в админку WordPress (РЕШЕНО) (28.8%)
- Как запретить просматривать или комментировать сайт на WordPress пользователям Tor (28.8%)
- 1 год как Linux заменил Windows на моём домашнем компьютере (22.1%)
- WordPress: На сайте возникла критическая ошибка — невозможно войти в панель управления (РЕШЕНО) (22.1%)
- Как в WordPress разрешить использовать WebP (22.1%)
- Как блокировать доступ к сайту с конкретного сайта-букса или любого другого сайта с негативным трафиком (RANDOM — 6.9%)
Как проверить сайт на уязвимости
Взлом сайтов — один из самых распространенных типов атак. Если вам интересно, как взламывают сайты и на что нужно обратить внимание, чтобы защитить свой ресурс, то эта статья для вас. Здесь я разберу самые начала пентеста веб-приложений и на примерах покажу, как проверить сайт на уязвимости.
На июль 2020 года в интернете насчитывается 1,74 миллиарда сайтов, и многие из них уязвимы. Десять лет назад исследование Web Application Security Consortium показало, что минимум 13% сайтов можно взломать автоматически. А в недавнем исследовании Positive Technologies сообщается об уязвимости 19% протестированных веб-приложений. Поистине огромный простор для действий злоумышленников!
Как проверить сайт на уязвимости
По структуре сайты делятся на три больших класса:
- самописные (сделанные вручную на HTML, произведенные статическим генератором типа Jekyll или собранные в программе-конструкторе типа Adobe Dreamweaver);
- сделанные в онлайновых конструкторах (в основном это сайты-визитки без каких-либо баз данных и передаваемых полей);
- работающие на готовых CMS (Content Management System, системах управления контентом).
Встречаются еще самодельные CMS, созданные для конкретного сайта, но это сейчас стало редкостью — позволить себе поддержку своей системы могут только самые крупные ресурсы, и оправдать связанные с этим затраты непросто.
В основе большинства современных сайтов — готовые движки. Например, наш сайт не исключение: он работает на популярной системе WordPress (по крайней мере сейчас, в 2020 году).
С точки зрения атакующего, движки сайтов ничем не отличаются от других сервисов и служб. Их исходный код обычно находится в общем доступе, и любой исследователь может проанализировать его на ошибки, в том числе бреши в безопасности. Поэтому сайты на CMS редко становятся жертвами целевой атаки. Чаще их ломают массово.
Такой взлом автоматизирован и обычно протекает по следующей схеме: злоумышленник находит уязвимость (самостоятельно или просто гуглит что-то свежее). Затем он делает эксплоит или берет готовый и пишет специализированный бот. Этот бот ищет указанную дыру на всех сайтах подряд в заданном диапазоне и пытается эксплуатировать ее.
Казалось бы, для защиты от автоматических атак надо всего-то поддерживать программное обеспечение в актуальном состоянии, но в реальности CMS обрастает разными дополнениями, и уследить за всеми становится сложно.
При пентесте стоит несколько иная задача — проверить конкретный сайт на уязвимости. Об этом мы и поговорим.
Статья предназначена для «белых хакеров», профессиональных пентестеров и владельцев сайтов. Ни автор, ни редакция не несут ответственности за любой возможный вред, причиненный этим материалом.
Сбор информации о сайте
Прежде чем пытаться атаковать цель, нужно собрать информацию о ней. Для этого хорошо подходит инструмент WhatWeb. Эта утилита предоставляет подробную информацию о CMS жертвы и использованных ей веб-инструментах.
Советую запускать WhatWeb с ключом -а, указывая после него значение 3 или 4. Разница между ними только в том, что во втором случае WhatWeb будет сканировать еще и субдиректории. Имейте в виду, что оба варианта задают агрессивный метод опросов — со всеми вытекающими, а точнее «втекающими» на сервер логами.
Вот пример запуска и собранных ответов:
$ whatweb — a3 https : //URL
https : //URL [200 OK] Cookies[PHPSESSID], Country[UNITED KINGDOM][GB], Frame, HTML5, JQuery[1.9.0,2.2.3], Open-Graph-Protocol[website], PHP[7.1.33], PasswordField[password], Script[application/ld+json,text/javascript], Title[Bower Partnerships | Best Equity Release Broker Customer Service 2019], UncommonHeaders[link,x-robots-tag,alt-svc], WordPress, X-Powered-By[PHP/7.1.33], X-UA-Compatible[IE=EDGE]
Здесь мы видим, что это сайт британской компании, сделанный на WordPress, используется PHP v. 7.1.33 и jQuery 1.9.0, 2.2.3. Неплохо для начала!
Если у вас нет VPN или вы просто не хотите заморачиваться с установкой, обратите внимание на онлайновую версию WhatWeb.
Кстати, при работе с заграничными сайтами она дает большую скорость.
Если вам достаточно определить только название CMS, то для этого есть отдельные сервисы, даже русскоязычные.
Вот свежая статистика популярности различных CMS в рунете:
- WordPress — 58,12%;
- Joomla — 17,12%;
- OpenCart — 4,65%;
- Drupal — 3,75%;
- Wix — 3,74%;
- MODX Revolution — 2,81%;
- MODX Evolution — 2,76%;
- Nethouse — 2,23%;
- прочие — 4,78%.
Проверка сайта WordPress на уязвимости
Поскольку WordPress — это сейчас самая популярная CMS, то перейдем сразу к ней. Под нее выпущен очень мощный сканер, который умеет творить магию, — WPScan. На момент написания статьи актуальная версия была 3.7.8. Этот сканер умеет определять версию сканируемого объекта, брутить админку (у него даже есть свой встроенный словарь), смотреть уязвимые открытые директории, определять установленные плагины и много всего другого. К тому же он предустановлен в Kali Linux и в других дистрибутивах для пентестеров. Есть даже версия в докер-контейнере.
На мой взгляд, управление и ключи WPScan могли бы и упростить. Даже хелпа у программы два — краткий (-h) и подробный (—hh).
Перед первым использованием WPScan необходимо обновить его базу данных.
wpscan — update
После этого начинаем сканирование. Сам по себе WPScan без ключей выдаст общую информацию о сайте, лишь поверхностно просканировав цель.
wpscan — url http : //example.com
После строчки Interesting Finding(s): начинаются те самые моменты, на которые стоит обратить внимание:
- версия WP;
- открытые директории;
- подозрения на уязвимости;
- ссылки на ресурсы, где об этих уязвимостях можно почитать.
В конце вывода красным восклицательным знаком помечены строки, которые идут вразрез с правилами безопасности. В нашем случае это торчащий наружу конфигурационный файл wp-config.php с логином и паролем к базе данных.
Продолжаем копать и все тем же софтом пробуем сбрутить логин и пароль к админке:
wpscan — url http : //[IP-address] —passwords pass.txt —usernames user.txt
Брутфорсится очень быстро благодаря многопоточности. Если админ использовал стандартные учетные записи и установил несложные пароли, то результат не заставит себя долго ждать.
Как видите, учетные данные к админке и базе данных мы достали без особого труда. Для рядового взломщика это было бы больше чем предостаточно, но мы еще не все проверили. На очереди — плагины для WP и другие популярные точки входа.
Сканер показал нам, что на выбранном сайте нет ни одного установленного плагина, однако это может быть ложным выводом, основанным на ограничениях пассивного метода сканирования. Для более надежного обнаружения плагинов нужно задать агрессивный метод их поиска:
wpscan — url http : //[IP-address] —enumerate ap —plugins-detection aggressive
Учтите, что ключ ap покажет все найденные плагины, а vp — только уязвимые. Данная процедура занимает приличное время. Скорость будет зависеть от удаленности сайта, но даже в лучшем случае на это уйдет не меньше 30 минут.
Как видите, агрессивный метод дал свои результаты: обнаружен антиспам-плагин Akismet версии 3.1.1.
Точно такими же действиями необходимо искать другие уязвимые дополнения к WP. Подробнее в мануале в разделе —enumerate.
Также посмотрите идентификаторы известных уязвимостей — CVE. Например, для версии PHP, на которой работает CMS. Затем поищите готовые модули Metasploit для WP и проверьте их в деле. Очень советую прочитать подробную статью о защите WordPress.
Проверка сайта Joomla на уязвимости
Joomla тоже довольно популярная CMS, для которой есть свой сканер — JoomScan. Написали его ребята из Open Web Application Security Project (OWASP). Он еще актуален, хотя и давно не обновлялся. Последняя версия 0.0.7 вышла в сентябре 2018 года.
По своей сути это точно такой же сканер безопасности, как и WPScan, только немного попроще. JoomScan также предустановлен в большинстве дистрибутивов для специалистов по безопасности, а весь его мануал умещается в несколько строк.
Он тоже поддерживает агрессивный метод сканирования установленных компонентов. Команда запуска сканирования в агрессивном режиме выглядит так:
joomscan — url http : //84.42.34.2/ —enumerate-components
Вот пример анализа найденной на просторах интернета старой и очень дырявой версии сайта на Joomla.
Как видно по скриншоту, программа выдает версию CMS, CVE найденных уязвимостей и ссылки на эксплоиты, которыми можно воспользоваться для взлома сайта. Также в выводе приводятся все найденные на сайте директории и ссылка на файл конфигурации, если его забыли спрятать.
Брутфорсить админку JoomScan не умеет. Сегодня, чтобы выполнить такой брутфорс, нужен серьезный инструмент, который работает с цепочкой прокси-серверов. Хотя бы потому, что на сайтах с Joomla часто используется плагин brute force stop. Когда количество неудачных попыток авторизации достигает заданного числа, он блокирует IP-адрес атакующего.
Если сайт с Joomla работает на HTTP (что уже редкость), попробуйте воспользоваться скриптом Nmap.
Проверка сайтов Drupal и других CMS
С Drupal все немного сложнее, как и с другими непопулярными CMS. Годного сканера, который бы находил уязвимости на таких сайтах, просто нет. Из готовых инструментов мне удалось найти лишь DroopeScan, но он только помогает быстро собрать базовую информацию о сайте.
Устанавливается DroopeScan через pip (естественно, у вас должен быть установлен Python).
pip install droopescan
Запускаем сканирование. Так как он поддерживает не только Drupal, ему желательно явно указать, какую CMS мы ожидаем встретить на сайте:
droopescan scan drupal — u http : //url
Остальное приходится выискивать руками и гуглить в интернете. В этом очень помогают сайты для поиска уязвимостей, например CVEdetails, и готовые эксплоиты с PoC (их можно найти на GitHub и в даркнете).
К примеру, возьмем уязвимость CVE-2018-7600, которой подвержены версии Drupal7.х и 8.х. Она позволяет загрузить и вызвать shell удаленно. Эксплоит для PoC можно взять тут.
Сканер выдал мне лишь версию CMS, и этого хватило для эксплуатации уязвимости. В целом взлом Drupal и других CMS по своей сути ничем не отличается от поиска дыр в любом другом онлайновом сервисе. Бреши в безопасности либо есть, либо их еще не нашли.
Не надо далеко ходить за боевым эксплоитом, чтобы открыть сессию в Meterpreter и воспользоваться уязвимостью в полной мере.
Как проверить на уязвимости самописный сайт
С тестированием самописных сайтов все намного сложнее. Нет конкретного сканера, который сказал бы: вот тут есть старая версия веб-приложения, в нем известная дыра, вот ссылка на эксплоит и подробное описание его применения. Есть только очень обширный список потенциальных уязвимостей, которые нужно проверить. Проводят такие пентесты по методике OWASP или собственным алгоритмам.
Тестирование на проникновение — дело сугубо творческое. В нем нет жестких рамок и перечня обязательных инструментов, особенно если они опенсорсные. Однако аудит безопасности — серьезная услуга, и некоторые организации стараются структурировать ее выполнение, чтобы в полете фантазии пентестер ничего не пропустил.
Одним из способов это сделать стало руководство OWASP Testing Guide v4. Это подробный сборник правил обнаружения уязвимостей веб-приложений. Ребята собрали и описали доступным языком методы тестирования уязвимостей десяти наиболее распространенных классов — OWASP 10.
Если нужно проверить возможность взлома самописного сайта, то лучше начинать с того же WhatWeb. Только теперь мы смотрим не CMS, а все обнаруженные сервисы и их версии.
Есть множество уязвимых версий самих фреймворков. К примеру, зачастую используют устаревшие версии Ruby on Rails или Apache Tomcat. Эксплоиты для них есть в открытом доступе.
Также стоит обратить внимание на версии самих языков программирования. К примеру, в PHP постоянно находят уязвимости, а с момента их обнаружения до апдейта на сайте может пройти не одна неделя.
Следующим шагом желательно воспользоваться сканерами безопасности. Даже если они не дадут готовый вердикт, то подкинут пищу для размышлений. Например, программа dirb поможет пробежаться по открытым директориям и вернет коды ответов.
Для проверки на типовые уязвимости воспользуйтесь универсальными сканерами: nikto, OWASP ZAP, w3af, skipfish. Также советую иметь в запасе mantra security toolkit.
Для всего остального есть Burp Suite (см. также Лучшие расширения для Burp Suite). Обычно с его помощью выполняется более сложный поиск уязвимостей веб-приложений. В качестве примера рассмотрим поиск и эксплуатацию SQL-инъекций.
Ставим Burp Suite (в Kali Linux он уже предустановлен), находим в нем Repeater (повторитель запросов) и запускаем. В запросе GET или POST ищем передаваемое на сервер значение (типа и закидываем его в Repeater.
Добавляем одинарную кавычку, чтобы проверить отсутствие фильтрации специальных символов в передаваемом значении, и видим сообщение с ошибкой syntax error sql. Возникновение ошибки говорит о том, что сайт уязвим к SQL-инъекциям. Для автоматизации развития атаки используем sqlmap.