• Открыта запись на вторую часть курса по анонимности и безопасности в сети интернет "Paranoid II" от команды codeby. Анонимные роутеры, Подъём, настройка и администрирование Tor-ноды, Работа с железом ПК, Удаление аппаратных закладок, Минимизация рисков, Авторские разработки и многое другое. Подробнее ...

Статья Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.

larchik

larchik

Grey Team
07.06.2019
134
275
Здравствуй, codeby!

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

Определение веб-сервера.

Сегодня на рынке имеется множество разных производителей и версий веб-серверов, вот список некоторых:
Apache - свободный веб-сервер, наиболее часто используемый в UNIX-подобных операционных системах
nginx - свободный веб-сервер, разрабатываемый Игорем Сысоевым и на сегодняшний день соперничает по популярности с Apache
IIS от компании Microsoft, распространяемый с ОС семейства Windows
LiteSpeed Web Server — проприетарный веб-сервер, разрабатываемый с упором на быстродействие
Google Web Server — проприетарный веб-сервер комании Google, используемый в веб-инфраструктуре Google

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

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

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

Самая простая и основная форма идентификации веб-сервера - это посмотреть на заголовок «Server» в ответе сервера. Для теста будем использовать Netcat.

Рассмотрим следующий HTTP-запрос:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


Как видим, в заголовке Server указан Apache.


Запрос-ответ на другой сервер:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


На этот раз заголовок Server отдает больше информации. Видим, что версия Apache 2.4.12 и операционная система FreeBSD.


Microsoft IIS 7.5
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



nginx/1.12.2
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



LiteSpeed
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


Обратите внимание, что на сервер LiteSpeed кроме заголовка Server явно указывает заголовок X-Litespeed-Cache-Control.


Google Web Server (gws)
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



Netscape-Enterprise/6.0
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



Netscape-Enterprise/3.5-For-NetWare
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



Однако, данный способ помогает не всегда. У админа сервера есть возможность изменить значение заголовка Server, не показывать его вообще и другими способами скрыть версию веб-сервера. К примеру мы можем получить такой ответ:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


Тут поставщика сервера по заголовку определить невозможно.


Более совершенные методы основаны на различных особенностях поведения веб-серверов. Например, каждому веб-серверу свойственно устанавливать свой порядок HTTP-заголовков в ответе.
Еще раз посмотрите на все примеры, приведенные выше. В примере с nginx заголовок Server является первым, и расположен перед заголовком Date. В примере c Apache заголовок Server располагается вторым по порядку, после заголовка Date, точно так, как в примере, где сервер мы не смогли определить. И точно так, как в примере с Netscape-Enterprise/6.0. Пример Netscape-Enterprise/3.5-For-NetWare по порядку заголовков похож на nginx/1.12.2.

Как видим, не все так однозначно, поэтому переходим к следующему способу, основанному на отправке некорректных запросов.
В запросе изменим версию протокола на несуществующую - HTTP/3.0.

Так реагирует Apache:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



Посмотрите, как по разному реагирует один и тот же сервер на неправильный и правильный запросы:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



Так отреагировал на неверный запрос наш неизвестный зверь Unknown-Webserver. От него приходят два ответа:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


Изменим запрос - укажем несуществующий протокол JUNK, и теперь приходит один ответ:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



Реакция LiteSpeed на несуществующую версию протокола HTTP/3.0):
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



На несуществующий протокол JUNK/1.0 LiteSpeed ответит иначе:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


Анализируя полученную информацию, сравнивая ее с известными ответами различных серверов, пентестер строит и уточняет свои предположения.

Не обязательно использовать Netcat. Править HTTP-запросы и смотреть ответы сервера можно средствами браузера:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


Сервер codeby.net спрятан за cloudflare.


Само собой, что для получения тех же самых результатов существуют автоматизированные инструменты.
Например whatweb, который по умолчанию предустановлен в Kali:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


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



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

Они могут быть такими (Tengine/2.0.0):
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


такими (nginx/1.12.2):
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


и даже такими (Apache/2.4.18):
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


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



robots.txt

Файл robots.txt используется для того, что бы поисковые роботы и сканеры знали, какие веб-страницы можно индексировать, а какие нет.
Для примера файл robots.txt Google.com:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


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



Определение веб-приложений на сервере.

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

Например, имеется коммерческий сайт, на первый взгляд вполне «ухожен», да еще и IT-направленности. На домене аж четвертого уровня находим веб-приложение, написанное на языке Perl, расположенное на том же самом сервере, что и целевой сайт. Похоже, что админ чувствовал себя в безопасности, располагая на данном веб-сервере такое приложение, так как оно не планировалось для использования широким кругом лиц.
Хочется предупредить таких админов — это ложное чуство безопасности, по-другому называемое Security through obscurity.

Найденное приложение оказалось уязвимым к Ditectory Traversal и Local File Include. На скриншоте видно подключение файла /etc/passwd и вывод его содержимого в браузер:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


В прилжении были найдены и другие уязвимости. Например можно просматривать некоторые директории и файлы этого приложения через браузер:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


Обратите внимание на файл "password":
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


C этим паролем заходим в админку, а в админке есть возможность заливать произвольные файлы на сервер (в том числе исполняемые):
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



Есть уязвимости в логике - средствами приложения можно просматривать список файлов в произвольных директориях, загрузить и удалить файл в любой директории, например в /etc. Такой эффект достигался путем манипулярования значением параметра DIR в запросе (смотрите в адресную строку):
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


Оцените важность этапа разведки в тестировании на этом примере.


Как искать веб-приложения на сервере?
Для начала рассмотрим точки, где они могут находиться.

1. Неочевидные URL.
Очевидной точкой входа для веб-приложения является . Но хотя это самая распространенная ситуация, ничто не заставляет приложение запускаться именно со слэша «/».
Например, одно и то же доменное имя может быть связано с тремя веб-приложениями, такими как:
,
,
.

2. Нестандартные порты.
Хотя веб-приложения обычно работают на портах 80 (http) и 443 (https), это вовсе не обязательно. Фактически, веб-приложения могут работать на любых TCP-портах и на них можно ссылаться, указав номер порта следующим образом:

3. Виртуальные хосты.
DNS позволяет связать один ip-адрес с несколькими доменными именами.
Например, IP-адрес 192.168.1.100 может быть связан с именами , helpdesk.example.com, webmail.example.com. Не обязательно, чтобы все имена принадлежали одному домену example.com. Такой подход используется в виртуальном хостинге, который позволяет множеству сайтов располагаться на одном веб-сервере.


Теперь рассмотрим способы поиска приложений.

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


в этом примере каждая директория является входом в самостоятельное веб-приложение.


Так же могут помочь поисковые системы. Укажите в поисковом запросе поиск по сайту:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



Можно выполнить поиск вручную или по словарю с помощью сканеров по вероятным адресам для почты, административной панели, старой версии сайта и т.д. Пример для поиска почтового сервиса:
https://www.example.com/webmail, https://webmail.example.com/ или https://mail.example.com/

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

Для поиска приложений на нестандартных портах воспользуйтесь сканером nmap:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


Тут на портах 8000 и 8080 распологаются http-службы.
При переходе по адресу в браузере на порту 8000 сервер запрашивает http-get-авторизацию, а на порту 8080 какой-то сайт.
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


Желательно сканировать весь диапозон портов.

Другие примеры. На порту 20000 расположилась веб-почта, а на порту 8080 phpMyAdmin:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



Следующий способ поиска приложений основан на DNS zone transfers.
Передача зоны DNS (DNS zone transfers) - является одним из механизмов репликации баз DNS между серверами. Имела очень широкое распространение, но в настоящее время вытесняется другими механизмами репликации, в связи с чем имеет ограниченое применение при тестировании. Однако стоит попробовать.
Прежде всего, тестеры должны определить серверы имен, обслуживающие целевой ip-адрес, пусть это будет адрес «1.1.1.1». Если доменное имя известно для 1.1.1.1 (пусть это будет ), его серверы имен можно определить с помощью таких инструментов, как nslookup, host или dig.


В следующем примере показано, как идентифицировать серверы имен для yandex.ru с помощью команды host:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



Теперь мы попробуем запросить записи для yandex.ru на одном из его серверов DNS, и если нам повезет, сервер нам вернет этот список записей:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.


нам не повезло )


Можно попробовать выполнить обратный DNS-запрос. Отправляем IP, получаем имя:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



Тоже самое в nslookup:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



Тоже самое в dig:
Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.



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


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

Что касается веб-сервера - определив его версию, установите сервер той же версии на свой компьютер и изучите его структуру и особенности. Выполните поиск по базам уязвимостей (Metasploit Exploitation Framework и searchsploit — как искать и как использовать эксплойты или ). Изучите конфиги и значения по умолчанию, а затем проверьте их на тестируемом сервере, вдруг админ забыл что-то поменять. Некоторые демонстрационные и тестовые веб-приложения, поставляемые с веб-серверами, тоже имеют известные уязвимости, поэтому стоит их изучить и попытаться найти на тестируемом сервере.

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

А на сегодня всё, спасибо за внимание!
 

Вложения

  • 6,8 КБ Просмотры: 212
  • 5,6 КБ Просмотры: 139
  • 215,2 КБ Просмотры: 185
Последнее редактирование:
mobius0707

mobius0707

Happy New Year
13.07.2017
13
4
Позновательно, так держать!
 
  • Нравится
Реакции: mrtyrel
Ondrik8

Ondrik8

prodigy
Happy New Year
08.11.2016
1 006
2 989
Wappalyzer не проще установить? не? )) да, скажите, руками определять это кульно) 21 век, с помощью простых плагинов и дополнений, уже можно пентест делать, от сайта конечноже зависит, но все же)

ПС запятые ставил 5 минут , наверное правильно..?)
 
larchik

larchik

Grey Team
07.06.2019
134
275
Wappalyzer не проще установить? не? )) да, скажите, руками определять это кульно) 21 век, с помощью простых плагинов и дополнений, уже можно пентест делать, от сайта конечноже зависит, но все же)

ПС запятые ставил 5 минут , наверное правильно..?)
Я согласен полностью, что проще и быстрее все делать автоматически ) Но знать, как работают эти плагины и дополнения внутри хотя бы на уровне концепции - тоже может быть полезно. Вдруг мы окажемся на роутере, на котором кроме telnet и ping ничего нет, условно говоря, а углубить атаку хочется. Тогда, наверное, часть работы придется делать руками или автоматизировать самому с помощью скриптов. В общем, знания не бывают лишними ))
 
Ondrik8

Ondrik8

prodigy
Happy New Year
08.11.2016
1 006
2 989
я ждал такого ответа)) твой вариант мне в копилку залетел!
 
SearcherSlava

SearcherSlava

Red Team
10.06.2017
702
1 029
Здравы будьте, инфоопасные братья и сестры! Немного о robots.txt. Общеизвестны расширения htm, html, php, и т.д, а есть wbp, которое связано с CMS, и подсвечивает нам mediacache, разработанный фирмой Adobe и используемый в документообороте во всем мире. Иногда, используя выражение вида site: name mediacache, можно просматривать внутренние документы, аналогично обычным запросам в гугле с добавлением pdf, ppt xls, doc, docs, etc. Спасибо за внимание и понимание.
 
Ondrik8

Ondrik8

prodigy
Happy New Year
08.11.2016
1 006
2 989
Здравы будьте, инфоопасные братья и сестры! Немного о robots.txt. Общеизвестны расширения htm, html, php, и т.д, а есть wbp, которое связано с CMS, и подсвечивает нам mediacache, разработанный фирмой Adobe и используемый в документообороте во всем мире. Иногда, используя выражение вида site: name mediacache, можно просматривать внутренние документы, аналогично обычным запросам в гугле с добавлением pdf, ppt xls, doc, docs, etc. Спасибо за внимание и понимание.
дэк, это классика) есть еще файлы по интереснее например форматы баз-данных, файлы конфигурации и etc ) там гдде светятся креды админа, баз данных, ЛОГИ! )))) вот там все самое вкусное попадается)

здесь примеры последних "дорков" но никто не мешает их переделать под нужный нам сайт)

Пентест веб приложений: определение веб-сервера, изучение robots.txt, определение приложений на веб-сервере.
 
Последнее редактирование:
  • Нравится
Реакции: larchik
centr

centr

Премиум
31.01.2017
414
410

Вот это дополнение не помешает прикрепить в основную тему.
 
  • Нравится
Реакции: The Codeby
B

Bonifazzziy

New member
01.07.2019
1
1
Огромное!!! Огромнейшее Вам спасибо за Ваш неоценимый труд!!!!!!!
 
  • Нравится
Реакции: larchik
Мы в соцсетях:  ТелеграмВконтактеДзенФейсбукТвиттерЮтуб