Всем привет! В марте 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 или hostname> с фактическим IP-адресом или именем хоста без угловых скобок.
nikto -h <IP or hostname>
Однако, Nikto способен выполнять сканирование SSL и порта 443, который используют сайты HTTPS (HTTP использует по умолчанию 80 порт). Таким образом, мы не ограничиваемся только сканированием старых сайтов, мы может проводить оценку уязвимостей сайтов, использующих SSL, что на сегодняшний день является почти обязательным требованием для индексирования в результатах поиска.
Если мы знаем, что у целевого сайта есть SSL, мы можем указать это в Nikto, чтобы сэкономить некоторые время на сканировании, добавив -ssl в конец команды.
nikto -h <IP or hostname> -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<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> 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<PERFORMNUD,DAD>
media: autoselect
status: active
en2: flags=8863<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TS04,TS06>
ether XX:XX:XX:XX:XX:XX
media: autoselect <full-duplex>
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$/{print $2}' | 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 <IP or hostname> -Format msf+
Итак, в сегодняшнем руководстве мы перешли от определения цели к поиску уязвимостей в ней, а затем связали найденные уязвимости с эксплойтом, чтобы нам не пришлось делать всю работу вручную. Поскольку Nikto не работает скрытно, разумно выполнять эти сканирования через VPN, Tor или другой тип сервиса, чтобы ваш IP-адрес не был помечен как подозрительный.
→ Записаться на бесплатный урок
Golismero is a free and open-source tool available on GitHub. Golismero is an Open Source Intelligence and Information Gathering Tool based on (OSINT). Golismero is capable of doing everything almost you need for reconnaissance as per your need it can perform reconnaissance easily. Golismero works as an open-source tool intelligence tool. It integrates with just about every data source available and utilizes a range of methods for data analysis. Golismero is written in python language. You must have python language installed in your Kali Linux system in order to use Gasmask tool. This too is used to get various information about our target. This information includes Real platform independence. This also includes Tested on Windows, Linux, *BSD, and OS X. Golismero Integrates with standards: CWE,
Installation
Step 1: Open your Kali Linux and then Open your Terminal.
sudo bash
apt-get install python2.7 python2.7-dev python-pipn docutils git perl map sslscan
Step 2: Now install the tool using the following command.
git clone https://github.com/golismero/golismero.git cd golismero pip install -r requirements.txt
Step 3: The tool has been downloaded and running successfully now use the following command to run the tool.
./golismero.py
Example 1: Use the golismero tool to scan www.google.com
./golismero.py scan http://www.google.com
Example 2: Use the golismero tool to scan www.geeksforgeeks.org
./golismero.py scan https://www.geeksforgeeks.org
Last Updated :
17 Jun, 2021
Like Article
Save Article
Тестирование на проникновение позволяет обнаружить уязвимости и ошибки, которые могут быть использованы злоумышленниками для проникновения в вашу систему. Если вы администратор сайта, вам обязательно нужно добавить тестирование на проникновение в свой список инструментов и регулярно выполнять поиск уязвимостей для того, чтобы обеспечить полную безопасность ваших сайтов. Обнаруженные проблемы помогут вам устранить слабые места.
Тестирование безопасности включает очень много различных инструментов и задач. В этой статье мы постараемся охватить все аспекты поиска уязвимостей на сайте. С помощью этой инструкции вы сможете сохранить свой ресурс в безопасности.
Поиск уязвимостей на сайте
Тестирование на проникновение и поиск уязвимостей на сайте состоит из нескольких этапов. Тут недостаточно запустить один инструмент и проверить сайт, нужен правильный подход, который поможет вам собрать как можно больше информации о безопасности вашей системы. Вот основные этапы:
- Разведка — поиск и сборка информации о вашей сети или серверах;
- Сканирование — на этом этапе нужно проверить сайт на уязвимости опираясь на собранную информацию;
- Эксплуатация — этот шаг необязательный и не всегда нужный тестировщикам на проникновение. Это необходимо, если вам нужно показать реальную опасность уязвимостей;
- Исправление — на этом этапе нужно исправить все найденные уязвимости на вашем сайте.
Теперь рассмотрим что нужно делать на каждом из этапов и какие инструменты для этого нужно использовать. Лучше не устанавливать все эти программы отдельно, а использовать уже готовую среду для тестирования на проникновение — Kali Linux. Это специально подготовленный дистрибутив Linux, который уже содержит все необходимые программы. Так вам не придется ничего устанавливать. Вы можете запускать систему из флешки или же установить Kali Linux на жесткий диск.
Разведка
То, что это ваша система ничего не значит, вам все равно нужно узнать какую информацию о ней могут узнать другие люди. Для этого можно применять несколько инструментов:
nmap — это один из самых популярных инструментов для сканирования сетей. С помощью него вы можете посмотреть какие сервисы запущены на сервере веб-сайта, какие порты они используют их версии, и даже версию операционной системы. Чтобы посмотреть открытые порты на своей машине выполните такую команду в терминале Kali Linux:
nmap -sS 192.168.91.249
Здесь 192.168.91.249 — это ip адрес вашего сайта. Это команда только выведет открытые порты и названия сервисов. Вы можете получить более подробную информацию, например, уже на этом этапе можно собрать много информации о системе. Например, здесь вы можете видеть, что на машине запущен SSH сервер, веб-сервер, службы обмена файлами Samba и прокси сервер на порту 3128. Все они могут быть потенциально уязвимы.
Сканер Nmap позволяет копнуть глубже, с помощью более интенсивного сканирования. Для этого используйте опцию -A:
nmap -A 192.168.91.62
Тут вы уже увидите намного больше информации, например, версии сервисов, системное время, систему управления контентом и даже версию операционной системы. Также, если будут обнаружены простые уязвимости, такие как слабый пароль FTP, то вы об этом тоже узнаете. Прочитать подробнее как пользоваться Nmap вы можете в отдельной статье.
Также нужно использовать другие доступные источники информации. Важно понять, какая информация о вас доступна в сети и сможет ли злоумышленник получить информацию, к которой у него не должно быть доступа. Вот некоторые сервисы:
- whois — с помощью этого сервиса вы можете узнать общедоступную информацию о домене, регистратора, владельца и другую контактную информацию;
- recon-ng — полезный инструмент для анализа, который поставляется вместе с Kali Linux;
- Maltego Chlorine — это очень популярный инструмент с открытым исходным кодом, предназначенный для сбора информации с открытых источников;
- Netcraft — полезный инструмент, позволяющий найти поддомены сайта;
- hackertarget.com/reverse-ip-lookup — позволяет узнать какие еще сайты работают на вашем ip адресе.
После того, как вы завершили сбор информации на этапе разведки, нужно перейти к сканированию, непосредственно выполнить поиск уязвимостей на сайте Kali Linux.
Сканирование
Для сканирования часто применяется такой метод, как фаззинг. Его суть в передачи большого количества случайных данных вашему сайту чтобы попытаться обнаружить уязвимости. Различные инструменты которые мы рассмотрим ниже будут имитировать атаки чтобы проверить уязвимость приложения.
Приложения фаззинга позволяют выявить различные уязвимости, но это не заменит понимания того как работают эти приложения, и в чем состоит ошибка. Если у вас есть доступ к исходным кодам проекта, то вы можете параллельно использовать фаззинг и ручной анализ, чтобы с большей точностью найти проблемы.
Важно заметить, что атаки фаззинга работают очень громко поскольку требуют передачи большого количества данных. И скорее всего, ваша система защиты от вторжений заметит их, поэтому будьте осторожны. А теперь рассмотрим некоторые инструменты, которые можно использовать.
WPScan — это проект с открытым исходным кодом, написанный на Ruby специально для сканирования WordPress. Он очень прост в использовании и может быть полезным для сайтов, которые используют большое количество плагинов или не обновляются. Утилите не нужен исходный код, она выполняет сканирование удаленно.
Nikto — это сканер уязвимостей для веб-сайтов. Он работает намного дольше чем WPSan, но рассчитан не только на WordPress. Он включает в себя множество плагинов, и во время сканирования будет выполнено очень много запросов. Например, программа может найти файл, который будет выводить информацию phpinfo. Но Nikto генерирует очень много ложных срабатываний, поэтому вам нужно внимательно анализировать вывод.
Burp Suite — это очень мощная программа для поиска уязвимостей на сайте или в веб приложениях. Этот инструмент работает только через веб-браузер. Утилита позволяет проверить все формы, которые есть на сайте, проверить отправку разных заголовков, посмотреть ответы и запросы браузера, выполнить активное сканирование URL, выполнить статический анализ кода JavaScript, а также выполнить поиск XSS уязвимостей на сайте. Это отличный инструмент, но он может показаться сложным.
SQLMap — программа для поиска sql уязвимостей сайта. Вы можете найти все возможные места, где могут быть выполнены SQL инъекции. Например, если вы предполагаете, что в параметре id может быть sql инъекция, используйте такую команду:
sqlmap -u http://example.com/?id=1 -p id
Программа будет выполнять тестирование для различных типов баз данных, поэтому вы можете указать только нужную:
sqlmap --dbms=MySQL -u http://example.com/?id=1 -p id
С помощью этой команды вы можете проверить различные поля, и указывать различные параметры, такие как базы данных, таблицы или пароли.
Эксплуатация
Эксплуатация завершает поиск уязвимостей на сайте и предоставляет из себя использование уязвимостей для получения доступа к системе или данным. В целом, если вы смогли найти дырки в вашей системе безопасности и закрыть их, то больше ничего вам делать не нужно. Но иногда нужно доказать, что проблема действительно серьезна. Рекомендуется не использовать эксплуатацию уязвимостей на производственных системах, потому что это может привести к проблемам. Лучше создать виртуальную машину и уже в ней показывать все, что нужно. Вот некоторые инструменты, которые можно использовать:
- SQLMap — очень эффективный инструмент для поиска sql уязвимостей и их эксплуатации;
- Burp Suite — инструмент для поиска XSS уязвимостей и эксплуатации;
- Metasploit — эксплуатация уязвимостей в системе.
Metasploit — это целая среда для проведения тестирования на проникновение, в которой содержится множество готовых эксплойтов. Вы можете найти эксплойты для установленных плагинов или обнаруженных на первом этапе сервисов. Мы более подробно рассмотрим как пользоваться Metasploit в одной из следующих статей.
Исправление
Это заключительный этап поиска уязвимостей. На основе всего того, что было найдено нужно сделать выводы и закрыть все дыры. Когда у вас есть все данные об уязвимых местах. Распределите приоритеты и исправьте все, что нашли. Если эти уязвимости смогли найти вы, значит их может найти любой другой.
Выводы
В этой статье мы сделали очень интенсивный курс в поиск уязвимостей на сайте и рассмотрели основные программы для поиска уязвимостей на сайте, которые вы можете использовать для обеспечения максимальной безопасности своего ресурса или инфраструктуры. Многие из этих инструментов являются промышленным стандартом. Сейчас вы можете продумать стратегию тестирования и попытаться устранить все уязвимости.
Источник: losst.ru
На чтение 2 мин Опубликовано 09.11.2017
Сегодня мы будем использовать инструмент Uniscan.
Для этого руководства потребуется операционная система Linux, мы рекомендуем установить Kali Linux, если вы еще этого не сделали.
Требования:
Kali Linux
Uniscan
Что такое Uniscan?
Uniscan – это простой сканер, включающий сканирование уязвимостей и удаленное выполнение команд, написанное на Perl Дугласом Поэршке Рошем.
Содержание
- Установка Uniscan
- Пример использования Uniscan
- Uniscan GUI
Установка Uniscan
# apt-get install uniscan
Вы можете использовать команду uniscan -h для отображения параметров справки и отображения использования.
# uniscan -h #################################### # Uniscan project # # http://uniscan.sourceforge.net/ # #################################### V. 6.2 OPTIONS: -h help -u <url> example: https://www.example.com/ -f <file> list of url's -b Uniscan go to background -q Enable Directory checks -w Enable File checks -e Enable robots.txt and sitemap.xml check -d Enable Dynamic checks -s Enable Static checks -r Enable Stress checks -i <dork> Bing search -o <dork> Google search -g Web fingerprint -j Server fingerprint usage: [1] perl ./uniscan.pl -u http://www.example.com/ -qweds [2] perl ./uniscan.pl -f sites.txt -bqweds [3] perl ./uniscan.pl -i uniscan [4] perl ./uniscan.pl -i "ip:xxx.xxx.xxx.xxx" [5] perl ./uniscan.pl -o "inurl:test" [6] perl ./uniscan.pl -u https://www.example.com/ -r
Пример использования Uniscan
Откройте новый терминал и введите следующую команду, чтобы начать сканирование отпечатков и сканирование целевого веб-сервера на наличие уязвимостей.
# uniscan.pl -u http://www.example.com/ -qweds
Замените URL-адрес целевым URL-адресом.
В этом уроке я буду использовать Uniscan, используя опции – qwedsgj
# uniscan.pl -u http://www.example.com/ -qwedsgj
Что делают эти опции.
-q Включить проверку каталога
-w Включить проверку файлов
-e Включить проверку robots.txt и sitemap.xml
-d Включить динамические проверки
-s Включить статические проверки
-g Веб-отпечаток
-j Отпечаток сервера
Uniscan GUI
Uniscan также имеет графический интерфейс для тех, кто предпочитает графику.
Для доступа к Uniscan-Gui мы можем использовать следующую команду из нового терминала.
# uniscan-gui
Пожалуйста, не спамьте и никого не оскорбляйте.
Это поле для комментариев, а не спамбокс.
Рекламные ссылки не индексируются!
Просмотров: 597
Давайте погрузимся еще глубже. Мы изучили «nmap», нашли открытые порты и сервисы, которые их используют. Мы даже узнали версию этих сервисов, но нам нужно больше информации, так как нам необходимо найти определенные уязвимости, которые можно эксплуатировать. Для этого нужно использовать сканер уязвимости, который называется «nessus».
Данный сканер не установлен на Kali Linux, поэтому нам необходимо его скачать и установить в систему. Делается это не очень сложно. Для начала нужно перейти на сайт «http://www.tenable.com/products/nessus/select-your-operating-system» и скачиваем Nessus под операционную систему, которая у Вас установлена:
Переключимся на root пользователя:
su
Запускаем установку скачанного файла, например:
dpkj –I Nessus-7.2.3-debian6_amd64.deb
Запускаем Nessus:
/etc/init.d/nessusd start
После этого Nessus можно открыть в браузере по ссылке https://IP:8834/
Для дальнейшей работы необходимо зарегистрироваться по ссылке https://www.tenable.com/products/nessus/activation-code.
Как я уже говорил, для начала нам нужно запустить «nessus», с помощью команды: /etc/init.d/nessusd start:
Сейчас сервис работает и наш ip и порт будет выглядеть как: «https://127.0.0.1:8834/#/».
Откроем страницу авторизации «Nessus»:
У Вас может отличаться внешний вид стартовой страницы, но изменения не критичны.
Авторизируемся с учетными данными, которые я вводил в процессе установки:
Мне нужно запустить новое сканирование:
В сканере есть множество опций, но мы остановимся на опции «Basic Network Scan» или «Базовое Сканирование Сети»:
Можем назвать данное сканирование «Metasploitable2», а в поле «Targets» устанавливаю ip-адрес Metasploitable2:
Далее сохраняем параметры сканирования, и помните, что сканирование нужно запускать вручную, так как оно не запускается автоматически.
Чтобы просмотреть процесс сканирования, нужно дважды кликнуть по элементу:
Также отсюда можно выйти с помощью вкладки «Back to My Scans»:
Можно перейти на вкладку «Vulnerabilities»:
На данном этапе сканирование у меня завершилось, но это занимает какое-то время, так что придется немного подождать. Справа есть делали сканирования:
Исходя из этих данных, мы видим, что было использовано «Basic Network Scan», а также другие дополнительные данные, такие как дата начала и завершения сканирования, время сканирования, статус и сканер. В моем случае сканирование заняло 8 минут. Уязвимости сгруппированы по уровню опасности от самого высокого уровня к самому низкому:
Критический – это самый высокий уровень опасности. Далее идут: высокий, средний, низкий и инфо. Не стоит игнорировать низкий уровень опасности, так как с помощью него можно взломать нашу цель.
Рассмотрим самые серьезные уязвимости. Чтобы просмотреть информацию об уязвимости, нужно просто кликнуть по ней, и в итоге, мы получим достаточное количество информации для ее эксплуатирования.
Поищем уязвимость FTP, и Nessus обнаружил, что на машине есть ftp-сервер. Однако, он не обнаружил то, что он является уязвимым, так как мы только что его взломали. Это происходит, возможно, из-за того, что либо сканирование было прервано, или сервис упал, а также сеть была ненадежной.
Это нам говорит о том, что не стоит полагаться на результат только одного инструмента.
Вот почему мы используем инструменты: «nmap», «nessus», и подключаемся вручную к каждому сервису, а также используем множество других инструментов.
Запомните, что если сканер не обнаружил какие-либо уязвимости, то это не значит, что этих уязвимостей нет на сервере.
#1 Kali Linux для начинающих. Урок 1 — Основы сетей.
#2 Kali Linux для начинающих. Урок 2 — Горячие клавиши. Часть 1
#3 Kali Linux для начинающих. Урок 2 — Горячие клавиши. Часть 2
#4 Kali Linux для начинающих. Терминал Kali Linux. Часть 1
#5 Kali Linux для начинающих. Терминал Kali Linux. Часть 2
#6 Kali Linux для начинающих. Урок 4 — Root Kali Linux. Часть 1
#7 Kali Linux для начинающих. Root Kali Linux — Часть 2
#8 Kali Linux для начинающих. Основные команды. Часть 1.
#9 Kali Linux для начинающих. Основные команды. Перемещение по директориям. Часть 2.
#10 Kali Linux для начинающих. Основные команды. Создание директорий. Часть 3
#11 Kali Linux для начинающих. Основные команды. Часть 4 — Просмотр содержимого директорий.
#12 Kali Linux для начинающих. Основные команды. Часть 5 — Просмотр содержимого файлов.
#13 Kali Linux для начинающих. Основные команды. Часть 6 — Копируем файлы и директории.
#14 Kali Linux для начинающих. Основные команды. Часть 7 — Перемещаем файлы и директории.
#15 Kali Linux для начинающих. Основные команды. Часть 8 — Удаляем файлы и директории.
#16 Kali Linux для начинающих. Управление пакетами.
#17 Kali Linux для начинающих. Откуда Kali скачивает софт.
#18 Kali Linux для начинающих. Изменения в Kali 2019 относительно APT.
#19 Kali Linux для начинающих. Архивация и сжатие. Часть 1.
#20 Kali Linux для начинающих. Архивация и сжатие. Часть 2.
#21 Kali Linux для начинающих. Архивация и сжатие. Часть 3.
#22 Kali Linux для начинающих. Специальные символы. Часть 1.
#23 Kali Linux для начинающих. Специальные символы. Часть 2
#24 Kali Linux для начинающих. Основы сетей.
#25 Kali Linux для начинающих. Администрирование. Редактирование файлов с помощью Nano.
#26 Kali Linux для начинающих. Превращаем Kali Linux в веб-сервер.
#27 Kali Linux для начинающих. Изменения в файлах конфигурации Kali Linux.
#28 Kali Linux для начинающих. Превращаем Kali Linux в SSH-сервер.
#29 Kali Linux для начинающих. Управление пользователями и группами.
#30 Kali Linux для начинающих. Работаем с правами пользователей.
#31 Kali Linux для начинающих. Разбираемся с процессами.
#32 Kali Linux для начинающих. Управляем процессами.
#33 Kali Linux для начинающих. Перенаправление и контроль вывода.
#34 Kali Linux для начинающих. Объединяем несколько команд в цепочку.
#35 Kali Linux для начинающих. Настраиваем цель.
#36 Kali Linux для начинающих. Сканируем порты с помощью Kali Linux.
#37 Kali Linux для начинающих. Сканируем порты с помощью графического интерфейса.
#38 Kali Linux для начинающих. Взламываем FTP.