Веб-приложения и серверы для успешных взломов

Веб-приложения и серверы для взломов

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

Общие рамки и технологии

Прошли времена простых веб-сайтов с использованием HTML, CSS и ванильного JavaScript. Сегодня на рынке доминируют фреймворки, обеспечивающие надежный и модульный подход к современной веб-разработке. А с более сложными веб-приложениями приходит больше данных, поэтому сейчас существует больше типов баз данных, чем когда-либо. MySQL, SQL Server и Oracle все еще существуют, но набирают популярность новые игроки, такие как Redis, PostgreSQL и MongoDB.

Что касается фреймворков, то, возможно, они на основе JavaScript являются самыми популярными. React, Angular и Node продолжают широко использоваться, а также Meteor, Ember и Backbone. На арене PHP у вас есть Symfony, Cake и Laravel. Django и Flask — проверенные временем фреймворки, построенные на Python, и, конечно же, Microsoft ASP.NET и Ruby on Rails.

Netcat

Netcat — это популярный сетевой инструмент, используемый для устранения неполадок и связи через TCP/IP. Большинству хакеров сразу приходит на ум использование его для обратных оболочек, но его также можно использовать для отпечатков пальцев веб-серверов. Чтобы инициировать соединение, просто укажите хост и порт, к которому вы хотите подключиться:

~# nc google.com 80

█

GET / HTTP/1.1
Host: google.com

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

GET / HTTP/1.1
Host: google.com

Дважды нажмите Enter, и мы должны увидеть ответ:

HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset=UTF-8
Date: Mon, 04 May 2021 15:57:50 GMT
Expires: Wed, 03 Jun 2021 15:57:50 GMT
Cache-Control: public, max-age=2592000
Server: gws
Content-Length: 219
X-XSS-Protection: 0
X-Frame-Options: SAMEORIGIN

...

Мы видим, что это перенаправление 301 (поскольку Google использует HTTPS), но мы также можем видеть тип сервера и некоторую информацию заголовка

.WhatWeb

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

~# whatweb

.$$$     $.                                   .$$$     $.
$$$$     $$. .$$$  $$$ .$$$$$$.  .$$$$$$$$$$. $$$$     $$. .$$$$$$$. .$$$$$$.
$ $$     $$$ $ $$  $$$ $ $$$$$$. $$$$$ $$$$$$ $ $$     $$$ $ $$   $$ $ $$$$$$.
$ `$     $$$ $ `$  $$$ $ `$  $$$ $$' $ `$ `$$ $ `$     $$$ $ `$      $ `$  $$$'
$. $     $$$ $. $$$$$$ $. $$$$$$ `$  $. $  :' $. $     $$$ $. $$$$   $. $$$$$.
$::$  .  $$$ $::$  $$$ $::$  $$$     $::$     $::$  .  $$$ $::$      $::$  $$$$
$;;$ $$$ $$$ $;;$  $$$ $;;$  $$$     $;;$     $;;$ $$$ $$$ $;;$      $;;$  $$$$
$$$$$$ $$$$$ $$$$  $$$ $$$$  $$$     $$$$     $$$$$$ $$$$$ $$$$$$$$$ $$$$$$$$$'

WhatWeb - Next generation web scanner version 0.5.1.
Developed by Andrew Horton (urbanadventurer) and Brendan Coles (bcoles)
Homepage: https://www.morningstarsecurity.com/research/whatweb

Usage: whatweb [options] <URLs>

  <TARGETs>                     Enter URLs, hostnames, IP addresses, filenames or
                                IP ranges in CIDR, x.x.x-x, or x.x.x.x-x.x.x.x
                                format.
  --input-file=FILE, -i         Read targets from a file.

  --aggression, -a=LEVEL        Set the aggression level. Default: 1.
  1. Stealthy                   Makes one HTTP request per target and also
                                follows redirects.
  3. Aggressive                 If a level 1 plugin is matched, additional
                                requests will be made.

  --list-plugins, -l            List all plugins.
  --info-plugins, -I=[SEARCH]   List all plugins with detailed information.
                                Optionally search with a keyword.

  --verbose, -v                 Verbose output includes plugin descriptions.

Note: This is the short usage help. For the complete usage help use -h or --help.

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

~# whatweb -h

.$$$     $.                                   .$$$     $.
$$$$     $$. .$$$  $$$ .$$$$$$.  .$$$$$$$$$$. $$$$     $$. .$$$$$$$. .$$$$$$.
$ $$     $$$ $ $$  $$$ $ $$$$$$. $$$$$ $$$$$$ $ $$     $$$ $ $$   $$ $ $$$$$$.
$ `$     $$$ $ `$  $$$ $ `$  $$$ $$' $ `$ `$$ $ `$     $$$ $ `$      $ `$  $$$'
$. $     $$$ $. $$$$$$ $. $$$$$$ `$  $. $  :' $. $     $$$ $. $$$$   $. $$$$$.
$::$  .  $$$ $::$  $$$ $::$  $$$     $::$     $::$  .  $$$ $::$      $::$  $$$$
$;;$ $$$ $$$ $;;$  $$$ $;;$  $$$     $;;$     $;;$ $$$ $$$ $;;$      $;;$  $$$$
$$$$$$ $$$$$ $$$$  $$$ $$$$  $$$     $$$$     $$$$$$ $$$$$ $$$$$$$$$ $$$$$$$$$'

WhatWeb - Next generation web scanner version 0.5.1.
Developed by Andrew Horton (urbanadventurer) and Brendan Coles (bcoles).
Homepage: https://www.morningstarsecurity.com/research/whatweb

Usage: whatweb [options] <URLs>

TARGET SELECTION:
  <TARGETs>                     Enter URLs, hostnames, IP addresses, filenames or
                                IP ranges in CIDR, x.x.x-x, or x.x.x.x-x.x.x.x
                                format.
  --input-file=FILE, -i         Read targets from a file. You can pipe
                                hostnames or URLs directly with -i /dev/stdin.

TARGET MODIFICATION:
  --url-prefix                  Add a prefix to target URLs.
  --url-suffix                  Add a suffix to target URLs.
  --url-pattern                 Insert the targets into a URL.
                                e.g. example.com/%insert%/robots.txt

AGGRESSION:
The aggression level controls the trade-off between speed/stealth and
reliability.
  --aggression, -a=LEVEL        Set the aggression level. Default: 1.
  1. Stealthy                   Makes one HTTP request per target and also
                                follows redirects.
  3. Aggressive                 If a level 1 plugin is matched, additional
                                requests will be made.
  4. Heavy                      Makes a lot of HTTP requests per target. URLs
                                from all plugins are attempted.

HTTP OPTIONS:
  --user-agent, -U=AGENT        Identify as AGENT instead of WhatWeb/0.5.1.
  --header, -H                  Add an HTTP header. eg "Foo:Bar". Specifying a
                                default header will replace it. Specifying an
                                empty value, e.g. "User-Agent:" will remove it.
  --follow-redirect=WHEN        Control when to follow redirects. WHEN may be
                                `never', `http-only', `meta-only', `same-site',
                                or `always'. Default: always.
  --max-redirects=NUM           Maximum number of redirects. Default: 10.

...

EXAMPLE USAGE:
* Scan example.com.
  ./whatweb example.com

* Scan reddit.com slashdot.org with verbose plugin descriptions.
  ./whatweb -v reddit.com slashdot.org

* An aggressive scan of wired.com detects the exact version of WordPress.
  ./whatweb -a 3 www.wired.com

* Scan the local network quickly and suppress errors.
  whatweb --no-errors 192.168.0.0/24

* Scan the local network for https websites.
  whatweb --no-errors --url-prefix https:// 192.168.0.0/24

* Scan for crossdomain policies in the Alexa Top 1000.
  ./whatweb -i plugin-development/alexa-top-100.txt \
  --url-suffix /crossdomain.xml -p crossdomain_xml

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

~# whatweb google.com

/usr/lib/ruby/vendor_ruby/target.rb:188: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/target.rb:188: warning: URI.escape is obsolete
http://google.com [301 Moved Permanently] Country[UNITED STATES][US], HTTPServer[gws], IP[172.217.6.14], RedirectLocation[http://www.google.com/], Title[301 Moved], X-Frame-Options[SAMEORIGIN], X-XSS-Protection[0]
http://www.google.com/ [200 OK] Cookies[1P_JAR,NID], Country[UNITED STATES][US], HTML5, HTTPServer[gws], HttpOnly[NID], IP[172.217.4.36], Script, Title[Google], X-Frame-Options[SAMEORIGIN], X-XSS-Protection[0]

Он выдает пару ошибок (которые можно игнорировать) и выдает некоторую информацию о веб-сервере, включая коды состояния HTTP, информацию о файлах cookie и IP-адрес. Это, безусловно, полезно, но вывод немного сложно читать — мы можем использовать опцию -v, чтобы получить подробный вывод в формате, который намного приятнее для глаз:

~# whatweb google.com -v

/usr/lib/ruby/vendor_ruby/target.rb:188: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/target.rb:188: warning: URI.escape is obsolete
WhatWeb report for http://google.com
Status    : 301 Moved Permanently
Title     : 301 Moved
IP        : 172.217.6.14
Country   : UNITED STATES, US

Summary   : X-Frame-Options[SAMEORIGIN], X-XSS-Protection[0], RedirectLocation[http://www.google.com/], HTTPServer[gws]

Detected Plugins:
[ HTTPServer ]
        HTTP server header string. This plugin also attempts to
        identify the operating system from the server header.

        String       : gws (from server string)

[ RedirectLocation ]
        HTTP Server string location. used with http-status 301 and
        302

        String       : http://www.google.com/ (from location)

[ X-Frame-Options ]
        This plugin retrieves the X-Frame-Options value from the
        HTTP header. - More Info:
        http://msdn.microsoft.com/en-us/library/cc288472%28VS.85%29.
        aspx

        String       : SAMEORIGIN

[ X-XSS-Protection ]
        This plugin retrieves the X-XSS-Protection value from the
        HTTP header. - More Info:
        http://msdn.microsoft.com/en-us/library/cc288472%28VS.85%29.
        aspx

        String       : 0

HTTP Headers:
        HTTP/1.1 301 Moved Permanently
        Location: http://www.google.com/
        Content-Type: text/html; charset=UTF-8
        Date: Mon, 04 May 2021 16:09:45 GMT
        Expires: Wed, 03 Jun 2021 16:09:45 GMT
        Cache-Control: public, max-age=2592000
        Server: gws
        Content-Length: 219
        X-XSS-Protection: 0
        X-Frame-Options: SAMEORIGIN
        Connection: close

WhatWeb report for http://www.google.com/
Status    : 200 OK
Title     : Google
IP        : 172.217.4.36
Country   : UNITED STATES, US

Summary   : X-Frame-Options[SAMEORIGIN], X-XSS-Protection[0], Cookies[1P_JAR,NID], HttpOnly[NID], Script, HTML5, HTTPServer[gws]

Detected Plugins:
[ Cookies ]
        Display the names of cookies in the HTTP headers. The
        values are not returned to save on space.

        String       : 1P_JAR
        String       : NID

[ HTML5 ]
        HTML version 5, detected by the doctype declaration

[ HTTPServer ]
        HTTP server header string. This plugin also attempts to
        identify the operating system from the server header.

        String       : gws (from server string)

[ HttpOnly ]
        If the HttpOnly flag is included in the HTTP set-cookie
        response header and the browser supports it then the cookie
        cannot be accessed through client side script - More Info:
        http://en.wikipedia.org/wiki/HTTP_cookie

        String       : NID

[ Script ]
        This plugin detects instances of script HTML elements and
        returns the script language/type.

[ X-Frame-Options ]
        This plugin retrieves the X-Frame-Options value from the
        HTTP header. - More Info:
        http://msdn.microsoft.com/en-us/library/cc288472%28VS.85%29.
        aspx

        String       : SAMEORIGIN

[ X-XSS-Protection ]
        This plugin retrieves the X-XSS-Protection value from the
        HTTP header. - More Info:
        http://msdn.microsoft.com/en-us/library/cc288472%28VS.85%29.
        aspx

        String       : 0

HTTP Headers:
        HTTP/1.1 200 OK
        Date: Mon, 04 May 2021 16:09:47 GMT
        Expires: -1
        Cache-Control: private, max-age=0
        Content-Type: text/html; charset=ISO-8859-1
        P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
        Content-Encoding: gzip
        Server: gws
        Content-Length: 5762
        X-XSS-Protection: 0
        X-Frame-Options: SAMEORIGIN
        Set-Cookie: 1P_JAR=2021-05-04-16; expires=Wed, 03-Jun-2021 16:09:47 GMT; path=/; domain=.google.com; Secure
        Set-Cookie: NID=203=fEPs6hoaoVclld1HAxHMHF2N4gT5yNy6kBVL-abAzpg1fqqB4Yk4PJGOgdveogjY_ThytkYwmmLc4oVHA95jaQRujiByZ96QiPkheajk5hkPzL1LZyCF5kX_L3uHnLi9H9JpbEYk6FrjPNWMIOZjANYd7fpPaAj1emJPDwc-Clk; expires=Tue, 03-Nov-2021 16:09:47 GMT; path=/; domain=.google.com; HttpOnly
        Connection: close

Этот вывод не только более подробен и удобен для чтения, но и более полезен при использовании в скрипте. Мы также можем сохранить вывод в файл. Чтобы записать более короткий вывод, используйте параметр —log-brief, за которым следует имя файла для записи:

~# whatweb google.com --log-brief brief.txt

/usr/lib/ruby/vendor_ruby/target.rb:188: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/target.rb:188: warning: URI.escape is obsolete
http://google.com [301 Moved Permanently] Country[UNITED STATES][US], HTTPServer[gws], IP[172.217.8.174], RedirectLocation[http://www.google.com/], Title[301 Moved], X-Frame-Options[SAMEORIGIN], X-XSS-Protection[0]
http://www.google.com/ [200 OK] Cookies[1P_JAR,NID], Country[UNITED STATES][US], HTML5, HTTPServer[gws], HttpOnly[NID], IP[172.217.4.36], Script, Title[Google], X-Frame-Options[SAMEORIGIN], X-XSS-Protection[0]

И чтобы записать подробный вывод, используйте параметр —log-verbose:

~# whatweb google.com --log-verbose verbose.txt

/usr/lib/ruby/vendor_ruby/target.rb:188: warning: URI.escape is obsolete
/usr/lib/ruby/vendor_ruby/target.rb:188: warning: URI.escape is obsolete
http://google.com [301 Moved Permanently] Country[UNITED STATES][US], HTTPServer[gws], IP[172.217.6.14], RedirectLocation[http://www.google.com/], Title[301 Moved], X-Frame-Options[SAMEORIGIN], X-XSS-Protection[0]
http://www.google.com/ [200 OK] Cookies[1P_JAR,NID], Country[UNITED STATES][US], HTML5, HTTPServer[gws], HttpOnly[NID], IP[172.217.4.36], Script, Title[Google], X-Frame-Options[SAMEORIGIN], X-XSS-Protection[0]

Wappalyzer

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

Чтобы получить Wappalyzer, перейдите к диспетчеру расширений в Firefox и найдите его в строке поиска:

Веб-приложения и серверы для взломов

Далее нажмите кнопку «Добавить в Firefox»:

Веб-приложения и серверы для взломов

И примите требования разрешения:

Веб-приложения и серверы для взломов

Появится всплывающее уведомление, подтверждающее, что Wappalyzer был добавлен в Firefox — обязательно установите флажок «Разрешить запуск этого расширения в приватных окнах»:

Веб-приложения и серверы для взломов

Теперь, когда он успешно установлен, он перенаправляет нас на домашнюю страницу Wappalyzer. Теперь вы заметите новый значок в правой части строки URL:

Веб-приложения и серверы для взломов

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

В сети

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

Первый сайт, который мы будем использовать, — это BuiltWith:

Просто введите цель, и она создаст для нас технологический профиль:

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

Следующим сайтом для снятия отпечатков пальцев, который мы рассмотрим, является W3Techs:

Опять же, просто введите URL-адрес, и он даст нам обзор используемых веб-технологий:

W3Techs даже включает некоторую статистику местоположения посетителей, и если мы прокрутим вниз, мы увидим более подробную информацию:

Заключение

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Click to rate this post!
[Total: 0 Average: 0]

Leave a reply:

Your email address will not be published.