Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Эдриан_Прутяну_Как_стать_хакером_сборник_практическиз_сценариев.pdf
Скачиваний:
18
Добавлен:
19.04.2024
Размер:
20.34 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

Глава 3

 

 

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Легкая добыча

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Часто клиенты обращаются к специалистам по информационной безопасности с просьбой выполнить тест на проникновение для приложения. Во многих случаях тестировщику предоставляется мало информации, если таковая вообще имеется,и приходится использовать подход «черный ящик».Это может затруднить процесс тестирования, особенно когда разведка на основе открытых источников не особо помогает, или интерфейс не интуитивен либо не удобен для пользователя,что происходит, когда вы имеете дело с API.

Всценарии, представленном в этой главе, мы сталкиваемся именно с такой проблемой. Вместо того чтобы детально изучать внутреннее устройство API

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

Вэтой главе рассмотрим следующие темы:

анализ состояния безопасности сервера приложений на предмет наличия альтернативных маршрутов для компрометации;

атаки на службы методом полного перебора;использование уязвимостей в смежных службах для компрометации

объекта атаки.

Анализ сети

Изпредыдущихглавмыузнали,чтофункциярабочегопространстваMetasploit может быть очень полезной. В следующем задании мы также будем использовать его. Сначала нам нужно запустить консоль из терминала с помощью команды msfconsole. Как только Metasploit завершит загрузку, появится привычное приглашение msf>.

root@kali:~# msfconsole

[*] StarTing the Metasploit Framework console...

msf >

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

C

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

 

o

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

Анализ сети  71 BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

Как и во всех проектах, связанных с Metasploit, начнем с создания рабочей

 

 

e

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

области.

msf > workspace -a ecorp

[*]Added workspace: ecorp

Вэтом сценарии нашей целью будет API, предоставляемый E Corp. («Корпорация зла»), внутреннее устройство которого неизвестно, а api.ecorp.local будет хостом, выбранным нами в качестве цели атаки.

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

Как всегда, Nmap – наш любимый инструмент для построения карты сети, и в сочетании с рабочим пространством Metasploit он становится еще более мощным.Спомощьюкомандыdb_nmap можнопросканироватьхостнапрямую из консоли. Опции Nmap, которые мы будем использовать для обнаружения открытых портов и запроса служб для получения дополнительной информации, подробно описаны далее.

-sV будет велеть Nmap выполнять сканирование версий любых идентифицированных служб,а -A предоставитнам возможностьснятьотпечатки хоста в попытке обнаружить операционную систему. Опция -T4 используется для того,чтобызаставитьNmapбытьболееагрессивнымприсканированиисети.Это повышает скорость сканирования при угрозе обнаружения системами обнаружения вторжений. Та же опция с цифрой поменьше, например -T1, сделает сканирование в некоторой степени более параноидальным. Хотя на это уйдет больше времени, оно позволит нам оставаться незамеченными еще дольше. Опция -Pn не даст Nmap выполнить пинг целевого объекта.Пингование на самом деле не требуется, если мы не сканируем широкий диапазон адресов и не ищем только те хосты, которые находятся в сети. Наконец, -p1- – это сокращенная форма -p1-65535, приказывающая Nmap сканировать все возможные

порты. Безымянный параметр– это наша цель, api.ecorp.local.

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

BUY 72  Глава 3.Легкая добыча

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

 

 

e

 

db_nmap -sV -A -T4 -Pn -p1- api.ecorp.local

 

 

 

 

msf >

 

 

 

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

[*]Nmap: Starting Nmap 7.40 ( https://nmap.org ) [...]

[*]Nmap: Nmap done: 1 IP address (1 host up) scanned in 206.07

seconds msf >

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Поскольку мы используем команду Metasploit db_nmap, результаты автоматически анализируются и записываются в базу данных нашего рабочего пространства.После завершения сканирования можем просмотреть записи в базе данных, введя команду services.

msf > services

 

Services

 

 

========

 

 

host

port proto name

state info

-------- ----- ---- ----- ----

10.0.5.198

80

tcp

http

open

Apache httpd 2.4.26

(Win32) OpenSSL/1.0.2l PHP/5.6.31

 

 

10.0.5.198

3306

tcp

mysql

open

MariaDB unauthorized

Похоже,чтодоинсталляцииMySQLможнодобраться,поэтомубылобыочень полезно получить к нему доступ. Nmap определил его как сервис MariaDB, который является разрабатываемым сообществом ответвлением от системы управления базами данных MySQL.Если нам очень повезет,то этот экземпляр окажется устаревшим и в нем, вполне вероятно, окажется какая-нибудь легко эксплуатируемая уязвимость, которая обеспечит нам мгновенный доступ. Чтобы выяснить это, используем номер версии базы данных и прогоним его по базе данных общеизвестных уязвимостей информационной безопасности (CVE) в надежде обнаружитьв открытомдоступе какой-нибудьпригодныйдля эксплуатации код.

Вместо того чтобы идти напрямую, через порт 80, атакуем приложение через открытые службы MySQL (MariaDB), как показано на рисунке.

Порт 3306

 

 

 

 

 

 

 

 

 

 

 

 

 

MySQL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

База

 

 

 

 

 

 

 

 

данных

 

 

Порт 80

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Злоумышленник

 

 

 

 

 

 

 

 

 

API сервера

 

 

 

 

 

 

 

 

 

 

 

 

приложений

 

 

Рис.3.1. Альтернативный способ компрометации

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

Ищем вход

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

E

 

 

 

 

X

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

Анализ сети  73 BUY

 

 

 

 

 

 

 

w Click

to

 

 

 

 

m

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

g

 

 

 

 

 

df

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Поскольку сканирование Nmap недало сведений о конкретной версии,можнобыстрозапуститьдетальныйтестверсиидляслужбыMySQL,используяпару команд Metasploit.

Сначала загружаем точно названный модуль вспомогательного сканера mysql_version. Команда use, за которой следует путь к модулю auxiliary/ scanner/mysql/mysql_version, загрузит модуль в текущем сеансе. Мы можем просмотреть дополнительную информацию о модуле mysql_version, выполнив команду show info, как показано на скриншоте.

Рис.3.2. Информация о модуле mysql_version

Basic options: здесь будут перечислены переменные, которые нам нужно обновить, чтобы модуль работал правильно. Параметры RHOSTS, RPORT и THREADS необходимы для данного конкретного сканера. RHOSTS, или удаленныехосты,иRPORT,илиудаленныйпорт,говорятсамизасебя.ВопцииTHREADS можноиспользоватьчислопобольше,чтобыувеличитьскоростьсканирования, но,таккакмынацеленытольконаодинудаленныйхост,api.ecorp.local,нам хватит одного потока сканирования.

После загрузки модуля можем установить требуемую переменную RHOSTS для соответствующей цели. Поскольку объект атаки уже просканирован с помощью команды db_nmap, а результаты находятся в рабочей области ecorp, используем команду services для автоматической установки переменной RHOSTS для всех найденных серверов MySQL.

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Глава 3.Легкая добыча

 

 

w Click

to

BUY 74 

 

 

 

 

 

 

 

 

m

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

df

 

 

 

 

e

 

 

services -s mysql -R

 

 

 

 

msf auxiliary(mysql_version) >

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

Services

 

 

 

 

 

 

 

========

 

 

 

 

 

 

 

host

port proto name

state

info

-------- ----- ---- ----- ----

10.0.5.198 3306 tcp mysql open MariaDB unauthorized

RHOSTS => 10.0.5.198

msf auxiliary(mysql_version) >

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Команда services принимает несколько опций для лучшей фильтрации и получения результатов.

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

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

Если мы знаем, что будем атаковать тот же хост, используя другие модули Metasploit, то неплохо бы установить для глобальной переменной RHOSTS то же значение. Это обеспечит автоматическое заполнение значения RHOSTS при переключении модулей. Можно сделать это с помощью команды setg.

msf auxiliary(mysql_version) > setg RHOSTS 10.0.5.198 RHOSTS => 10.0.5.198

msf auxiliary(mysql_version) >

Теперь осталось только запустить модуль mysql_version в надежде получить какую-нибудь полезную информацию, как показано на скриншоте.

Рис.3.3. Запуск модуля mysql_version