👨🦳 Сканирование сайтов на наличие интересных каталогов и файлов с помощью Gobuster — Information Security Squad

👨🦳 Сканирование сайтов на наличие интересных каталогов и файлов с помощью Gobuster

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

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

Для этого есть много инструментов, но не все они созданы одинаково.

Gobuster, сканер каталогов, написанный на Go, определенно стоит изучить.

Традиционные справочные сканеры брутфорса, такие как DirBuster и DIRB, работают просто отлично, но часто могут быть медленными и подвержены ошибкам.

Gobuster представляет собой реализацию этих инструментов на Go и предлагается в удобном формате командной строки.

Основное преимущество Gobuster перед другими сканерами каталогов — скорость.

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

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

Однако одним из недостатков Gobuster является отсутствие рекурсивного поиска в каталогах.

Для каталогов глубиной более одного уровня, к сожалению, потребуется еще одно сканирование.

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

Gobuster предлагает простой интерфейс командной строки, который довольно просто работает.
У него есть несколько полезных опций, но не так много, чтобы увязнуть в деталях.
В общем, это отличный инструмент, который эффективен и быстр.
В этом уроке мы рассмотрим его с DVWA (Damn Vulnerable Web App) в качестве цели и Kali Linux в качестве атакующей машины. Вы можете следовать за ними или использовать аналогичную конфигурацию тестирования.

Установка Gobuster

Первое, что мы можем сделать, это создать рабочий каталог, чтобы все было аккуратно, а затем перейти в него.
~# mkdir gobuster
~# cd gobuster/
Далее нам нужно установить Gobuster, поскольку он не включен в Kali по умолчанию.
Это рабочий каталог, чтобы все было аккуратно, а затем перейдите в него.
~/gobuster# apt-get install gobuster

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  gobuster
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/1,532 kB of archives.
After this operation, 4,963 kB of additional disk space will be used.
Selecting previously unselected package gobuster.
(Reading database ... 412624 files and directories currently installed.)
Preparing to unpack .../gobuster_2.0.1-1_amd64.deb ...
Unpacking gobuster (2.0.1-1) ...
Setting up gobuster (2.0.1-1) ...
Processing triggers for man-db (2.8.5-2) ...

Затем просто введите «gobuster» в терминал, чтобы запустить инструмент.

~/gobuster# gobuster

2019/05/06 11:43:08 [!] 2 errors occurred:
    * WordList (-w): Must be specified (use `-w -` for stdin)
    * Url/Domain (-u): Must be specified
Мы видим, что система дает нам пару ошибок.
Для корректной работы необходимы как минимум два параметра (-u для URL-адреса и -w для списка слов). Мы также можем отобразить меню справки с флагом -h.
~/gobuster# gobuster -h

Usage of gobuster:
  -P string
        Password for Basic Auth (dir mode only)
  -U string
        Username for Basic Auth (dir mode only)
  -a string
        Set the User-Agent string (dir mode only)
  -c string
        Cookies to use for the requests (dir mode only)
  -cn
        Show CNAME records (dns mode only, cannot be used with '-i' option)
  -e    Expanded mode, print full URLs
  -f    Append a forward-slash to each directory request (dir mode only)
  -fw
        Force continued operation when wildcard found
  -i    Show IP addresses (dns mode only)
  -k    Skip SSL certificate verification
  -l    Include the length of the body in the output (dir mode only)
  -m string
        Directory/File mode (dir) or DNS mode (dns) (default "dir")
  -n    Don't print status codes
  -np
        Don't display progress
  -o string
        Output file to write results to (defaults to stdout)
  -p string
        Proxy to use for requests [http(s)://host:port] (dir mode only)
  -q    Don't print the banner and other noise
  -r    Follow redirects
  -s string
        Positive status codes (dir mode only) (default "200,204,301,302,307,403")
  -t int
        Number of concurrent threads (default 10)
  -to duration
        HTTP Timeout in seconds (dir mode only) (default 10s)
  -u string
        The target URL or Domain
  -v    Verbose output (errors)
  -w string
        Path to the wordlist
  -x string
        File extension(s) to search for (dir mode only)

Установите несколько дополнительных списков слов

Списки слов на Kali находятся в каталоге /usr/share/wordlists.
~/gobuster# ls /usr/share/wordlists/

dirb  dirbuster  dnsmap.txt  fasttrack.txt  fern-wifi  metasploit  nmap.lst  

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

На GitHub есть целый репозиторий полезных списков слов, который называется SecLists.

Список слов «common.txt» содержит большое количество общих имен каталогов.

Мы можем загрузить необработанный файл в наш текущий каталог, используя утилиту wget.
~/gobuster# wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/common.txt

--2019-05-06 11:46:40--  https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/common.txt
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.148.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.148.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 35744 (35K) 
Saving to: ‘common.txt’

common.txt                                            100%[======================================================================================================================>]  34.91K  --.-KB/s    in 0.03s

2019-05-06 11:46:40 (1.24 MB/s) - ‘common.txt’ saved [35744/35744]
В качестве альтернативы, если мы хотим установить весь репозиторий SecLists, мы можем сделать это с помощью менеджера пакетов.
~/gobuster# apt-get install seclists

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  seclists
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/221 MB of archives.
After this operation, 795 MB of additional disk space will be used.
Selecting previously unselected package seclists.
(Reading database ... 412629 files and directories currently installed.)
Preparing to unpack .../seclists_2019.1-0kali1_all.deb ...
Unpacking seclists (2019.1-0kali1) ...
Setting up seclists (2019.1-0kali1) ...
Это установит полный список SecLists в каталог /usr/share.
Он содержит тонну контента, и если вы ищете набор переходов по списку слов, SecLists, вероятно, будут последним, что вам когда-либо понадобится.
/usr/share/seclists# ls

Discovery  Fuzzing  IOCs  Miscellaneous  Passwords  Pattern-Matching  Payloads  README.md  Usernames  Web-Shells

Сканирование каталогов и файлов

Теперь, когда все настроено и установлено, мы готовы использовать Gobuster. Давайте запустим его на нашу цель с параметрами по умолчанию.
~/gobuster# gobuster -u http://10.10.0.50/dvwa/ -w common.txt

=====================================================
Gobuster v2.0.1              OJ Reeves (@TheColonial)
=====================================================
[+] Mode         : dir
[+] Url/Domain   : http://10.10.0.50/dvwa/
[+] Threads      : 10
[+] Wordlist     : common.txt
[+] Status codes : 200,204,301,302,307,403
[+] Timeout      : 10s
=====================================================
2019/05/06 11:50:25 Starting gobuster
=====================================================
/.htaccess (Status: 403)
/.htpasswd (Status: 403)
/.hta (Status: 403)
/README (Status: 200)
/config (Status: 301)
/docs (Status: 301)
/about (Status: 302)
/external (Status: 301)
/favicon.ico (Status: 200)
/cmd (Status: 200)
/index (Status: 302)
/index.php (Status: 302)
/php.ini (Status: 200)
/instructions (Status: 302)
/logout (Status: 302)
/robots (Status: 200)
/robots.txt (Status: 200)
/login (Status: 200)
/phpinfo (Status: 302)
/phpinfo.php (Status: 302)
/setup (Status: 200)
/security (Status: 302)
=====================================================
2019/05/06 11:50:38 Finished
=====================================================
Мы видим, что он дает нам некоторую информацию об инструменте в баннере, а затем запускает процесс обнаружения каталогов.

Он возвращает имена каталогов и файлов, а также их коды состояния.

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

~/gobuster# gobuster -u http://10.10.0.50/dvwa/ -w common.txt -l

=====================================================
Gobuster v2.0.1              OJ Reeves (@TheColonial)
=====================================================
[+] Mode         : dir
[+] Url/Domain   : http://10.10.0.50/dvwa/
[+] Threads      : 10
[+] Wordlist     : common.txt
[+] Status codes : 200,204,301,302,307,403
[+] Show length  : true
[+] Timeout      : 10s
=====================================================
2019/05/06 11:52:41 Starting gobuster
=====================================================
/.hta (Status: 403) [Size: 292]
/.htaccess (Status: 403) [Size: 297]
/.htpasswd (Status: 403) [Size: 297]
/README (Status: 200) [Size: 4934]
/config (Status: 301) [Size: 319]
/docs (Status: 301) [Size: 317]
/external (Status: 301) [Size: 321]
/favicon.ico (Status: 200) [Size: 1406]
2019/05/06 11:52:52 [!] Get http://10.10.0.50/dvwa/about: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
/php.ini (Status: 200) [Size: 148]
2019/05/06 11:52:54 [!] Get http://10.10.0.50/dvwa/cmd: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
/robots (Status: 200) [Size: 26]
/robots.txt (Status: 200) [Size: 26]
2019/05/06 11:52:59 [!] Get http://10.10.0.50/dvwa/index: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
2019/05/06 11:52:59 [!] Get http://10.10.0.50/dvwa/index.php: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
2019/05/06 11:52:59 [!] Get http://10.10.0.50/dvwa/instructions: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
2019/05/06 11:53:00 [!] Get http://10.10.0.50/dvwa/login: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
2019/05/06 11:53:00 [!] Get http://10.10.0.50/dvwa/logout: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
/phpinfo.php (Status: 302) [Size: 0]
/phpinfo (Status: 302) [Size: 0]
/security (Status: 302) [Size: 0]
/setup (Status: 200) [Size: 3549]
=====================================================
2019/05/06 11:53:01 Finished
=====================================================
Обычно, если что-то имеет нулевые байты, это даже не стоит изучать.
Это может сэкономить массу времени, особенно при работе с большим веб-сайтом или большим количеством каталогов.
Если мы хотим, чтобы отображались только определенные коды состояния, мы можем сделать это, используя флаг -s, за которым следует нужный код.
~/gobuster# gobuster -u http://10.10.0.50/dvwa/ -w common.txt -s 200

=====================================================
Gobuster v2.0.1              OJ Reeves (@TheColonial)
=====================================================
[+] Mode         : dir
[+] Url/Domain   : http://10.10.0.50/dvwa/
[+] Threads      : 10
[+] Wordlist     : common.txt
[+] Status codes : 200
[+] Timeout      : 10s
=====================================================
2019/05/06 11:54:16 Starting gobuster
=====================================================
/README (Status: 200)
/favicon.ico (Status: 200)
/cmd (Status: 200)
/php.ini (Status: 200)
/login (Status: 200)
/robots (Status: 200)
/robots.txt (Status: 200)
/setup (Status: 200)
=====================================================
2019/05/06 11:54:27 Finished
=====================================================
Используйте запятые для указания нескольких кодов.
~/gobuster# gobuster -u http://10.10.0.50/dvwa/ -w common.txt -s 200,301

=====================================================
Gobuster v2.0.1              OJ Reeves (@TheColonial)
=====================================================
[+] Mode         : dir
[+] Url/Domain   : http://10.10.0.50/dvwa/
[+] Threads      : 10
[+] Wordlist     : common.txt
[+] Status codes : 200,301
[+] Timeout      : 10s
=====================================================
2019/05/06 11:54:58 Starting gobuster
=====================================================
/README (Status: 200)
/config (Status: 301)
/docs (Status: 301)
/external (Status: 301)
/favicon.ico (Status: 200)
/cmd (Status: 200)
/php.ini (Status: 200)
/login (Status: 200)
/robots (Status: 200)
/robots.txt (Status: 200)
/setup (Status: 200)
=====================================================
2019/05/06 11:55:10 Finished
=====================================================
Допустим, мы просто хотели быстрый способ просмотра каталогов без лишней информации баннеров и кодов состояния. Используйте флаг -q, чтобы скрыть баннер, и флаг -n, чтобы скрыть коды состояния.
~/gobuster# gobuster -u http://10.10.0.50/dvwa/ -w common.txt -q -n

/.hta
/.htpasswd
/.htaccess
/README
/config
/docs
/external
/favicon.ico
/about
/cmd
/php.ini
/index
/index.php
/instructions
/logout
/robots
/robots.txt
/login
/phpinfo.php
/phpinfo
/setup
/security
Еще одна полезная функция — возможность сохранять результаты в файл. Используйте флаг -o, чтобы указать выходной файл.
~/gobuster# gobuster -u http://10.10.0.50/dvwa/ -w common.txt -o results
Теперь результаты сохранены и могут быть просмотрены позже.
~/gobuster# cat results

/.hta (Status: 403)
/.htaccess (Status: 403)
/.htpasswd (Status: 403)
/README (Status: 200)
/config (Status: 301)
/docs (Status: 301)
/external (Status: 301)
/favicon.ico (Status: 200)
/about (Status: 302)
/cmd (Status: 200)
/php.ini (Status: 200)
/instructions (Status: 302)
/index (Status: 302)
/logout (Status: 302)
/index.php (Status: 302)
/login (Status: 200)
/robots (Status: 200)
/robots.txt (Status: 200)
/phpinfo (Status: 302)
/phpinfo.php (Status: 302)
/security (Status: 302)
/setup (Status: 200)

Завершение

В этом уроке мы узнали о Gobuster, сканере переборов каталогов, написанном на языке программирования Go.

Сначала мы узнали, как установить инструмент, а также некоторые полезные словари, которых нет в Kali по умолчанию.

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

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

¯\_(ツ)_/¯

Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40