ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Этичный хакинг или пентестинг (https://forum.antichat.xyz/forumdisplay.php?f=209)
-   -   Мастерство Анализа: Глубокое Погружение в Безопасность Веб-Приложений (https://forum.antichat.xyz/showthread.php?t=568172)

larchik 24.06.2019 16:18

Здравствуй, античат !

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

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

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

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

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

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

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

Рассмотрим следующий HTTP-запрос:

https://forum.antichat.xyz/attachments/4847322/2.png

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

Запрос-ответ на другой сервер:

https://forum.antichat.xyz/attachments/4847322/3.png

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

Microsoft IIS 7.5

https://forum.antichat.xyz/attachments/4847322/3.png

nginx/1.12.2

https://forum.antichat.xyz/attachments/4847322/4.png

LiteSpeed

https://forum.antichat.xyz/attachments/4847322/5.png

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

Google Web Server (gws)

https://forum.antichat.xyz/attachments/4847322/6.png

Netscape-Enterprise/6.0

https://forum.antichat.xyz/attachments/4847322/7.png

Netscape-Enterprise/3.5-For-NetWare

https://forum.antichat.xyz/attachments/4847322/7.png

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

https://forum.antichat.xyz/attachments/4847322/8.png

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

Более совершенные методы основаны на различных особенностях поведения веб-серверов. Например, каждому веб-серверу свойственно устанавливать свой порядок 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:

https://forum.antichat.xyz/attachments/4847322/9.png

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

https://forum.antichat.xyz/attachments/4847322/10.png

Так отреагировал на неверный запрос наш неизвестный зверь Unknown-Webserver. От него приходят два ответа:

https://forum.antichat.xyz/attachments/4847322/11.png

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

https://forum.antichat.xyz/attachments/4847322/11.png

Реакция LiteSpeed на несуществующую версию протокола HTTP/3.0):

https://forum.antichat.xyz/attachments/4847322/12.png

На несуществующий протокол JUNK/1.0 LiteSpeed ответит иначе:

https://forum.antichat.xyz/attachments/4847322/12.png

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

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

https://forum.antichat.xyz/attachments/4847322/13.png

Сервер античат спрятан за cloudflare.

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

https://forum.antichat.xyz/attachments/4847322/15.png

Если вы по какой-то причине не хотите напрямую связываться с целевым сервером, можете использовать онлайн-сервисы, к примеру 2ip.ru:

https://forum.antichat.xyz/attachments/4847322/14.png

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

Они могут быть такими (Tengine/2.0.0):

https://forum.antichat.xyz/attachments/4847322/16.png

такими (nginx/1.12.2):

https://forum.antichat.xyz/attachments/4847322/17.png

и даже такими (Apache/2.4.18):

https://forum.antichat.xyz/attachments/4847322/18.png

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

robots.txt

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

https://forum.antichat.xyz/attachments/4847322/18.png

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

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

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

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

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

https://forum.antichat.xyz/attachments/4847322/30.png

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

https://forum.antichat.xyz/attachments/4847322/32.png

Обратите внимание на файл "password":

https://forum.antichat.xyz/attachments/4847322/31.png

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

https://forum.antichat.xyz/attachments/4847322/34.png

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

https://forum.antichat.xyz/attachments/4847322/36.png

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

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

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

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

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

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

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

https://forum.antichat.xyz/attachments/4847322/18.png

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

Так же могут помочь поисковые системы. Укажите в поисковом запросе поиск по сайту:

https://forum.antichat.xyz/attachments/4847322/18.png

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

Код:

https://www.example.com/webmail, https://webmail.example.com/ или https://mail.example.com/
Учтите обратную систуацию — веб-приложения с одним доменом, но разными поддоменами, могут располагаться на разных серверах.

Для поиска приложений на нестандартных портах воспользуйтесь сканером nmap:

https://forum.antichat.xyz/attachments/4847322/18.png

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

https://forum.antichat.xyz/attachments/4847322/18.png

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

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

https://forum.antichat.xyz/attachments/4847322/18.png

https://forum.antichat.xyz/attachments/4847322/18.png

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

Прежде всего, тестеры должны определить серверы имен, обслуживающие целевой ip-адрес, пусть это будет адрес «1.1.1.1». Если доменное имя известно для 1.1.1.1 (пусть это будет www.example.com), его серверы имен можно определить с помощью таких инструментов, как nslookup, host или dig.


В следующем примере показано, как идентифицировать серверы имен для yandex.ru с помощью команды host:

https://forum.antichat.xyz/attachments/4847322/18.png

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

https://forum.antichat.xyz/attachments/4847322/18.png

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

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

https://forum.antichat.xyz/attachments/4847322/18.png

Тоже самое в nslookup:

https://forum.antichat.xyz/attachments/4847322/18.png

Тоже самое в dig:

https://forum.antichat.xyz/attachments/4847322/18.png

Вы можете воспользоваться онлайн сервисами, такими, как 2ip.ru или ipinfo.io. Часто подобные службы возвращают частично разные или неполные данные, поэтому лучше использовать несколько таких сервисов.

https://forum.antichat.xyz/attachments/4847322/18.png

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

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

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

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

mobius0707 26.06.2019 07:57

Позновательно, так держать!

Ondrik8 01.07.2019 16:53

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

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

larchik 01.07.2019 17:13

Цитата:


Ondrik8 сказал(а):

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

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


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

Ondrik8 01.07.2019 18:12

я ждал такого ответа)) твой вариант мне в копилку залетел!

SearcherSlava 01.07.2019 21:07

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

Ondrik8 02.07.2019 10:21

Цитата:


SearcherSlava сказал(а):

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


дэк, это классика) есть еще файлы по интереснее например форматы баз-данных, файлы конфигурации и etc ) там гдде светятся креды админа, баз данных, ЛОГИ! )))) вот там все самое вкусное попадается)

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

https://forum.antichat.xyz/attachmen...91e064203b.png

centr 10.07.2019 04:47

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

Сегодня научимся определять поставщика и версию веб-сервера, искать веб-приложения на сервере и взглянем на robots.txt.

codeby.net


Вот это дополнение не помешает прикрепить в основную тему.

Bonifazzziy 07.10.2019 00:20

Огромное!!! Огромнейшее Вам спасибо за Ваш неоценимый труд!!!!!!!


Время: 11:54