В этом рай­тапе я покажу, как экс­плу­ати­ровать Adminer, OpenTSDB и OpenCATS. Для повыше­ния при­виле­гий будем исполь­зовать ком­бинацию уяз­вимос­тей и неп­равиль­ных кон­фигура­ций ПО: уяз­вимость про­изволь­ной записи фай­лов OpenCATS для кон­фигура­ции whois, whois для получе­ния и инъ­екции коман­ды тер­минала ОС в Fail2ban и Fail2ban для ее акти­вации. Все это — в рам­ках про­хож­дения слож­ной машины AdmirerToo с пло­щад­ки Hack The Box.

warning

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

 

Разведка

До­бав­ляем IP-адрес машины в /etc/hosts для удобс­тва:

10.10.11.137 admirertoo.htb

И запус­каем ска­ниро­вание пор­тов.

Справка: сканирование портов

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

На­ибо­лее извес­тный инс­тру­мент для ска­ниро­вания — это Nmap. Улуч­шить резуль­таты его работы ты можешь при помощи сле­дующе­го скрип­та.

#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1

Он дей­ству­ет в два эта­па. На пер­вом про­изво­дит­ся обыч­ное быс­трое ска­ниро­вание, на вто­ром — более тща­тель­ное ска­ниро­вание, с исполь­зовани­ем име­ющих­ся скрип­тов (опция -A).

Результат работы скрипта
Ре­зуль­тат работы скрип­та

Скрипт нашел все­го два откры­тых пор­та: 22 — служ­ба OpenSSH 7.9p1 и 80 — веб‑сер­вер Apache 2.4.38.

На­чина­ем тра­дици­онно с веба.

Главная страница сайта
Глав­ная стра­ница сай­та

Пер­вым делом прос­каниру­ем сайт на наличие скры­тых ресур­сов.

Справка: сканирование веба c ffuf

Од­но из пер­вых дей­ствий при тес­тирова­нии безопас­ности веб‑при­ложе­ния — это ска­ниро­вание методом перебо­ра катало­гов, что­бы най­ти скры­тую информа­цию и недос­тупные обыч­ным посети­телям фун­кции. Для это­го мож­но исполь­зовать прог­раммы вро­де dirsearch и DIRB.

Я пред­почитаю лег­кий и очень быс­трый ffuf. При запус­ке ука­зыва­ем сле­дующие парамет­ры:

  • -w — сло­варь (я исполь­зую сло­вари из набора SecLists);
  • -t — количес­тво потоков;
  • -u — URL;
  • -fc — исклю­чить из резуль­тата отве­ты с кодом 403.

За­пус­каем ffuf:

ffuf -u http://admirertoo.htb/FUZZ -t 256 -w files_interesting.txt -fc 403
Результат сканирования каталогов с помощью ffuf
Ре­зуль­тат ска­ниро­вания катало­гов с помощью ffuf

Ни­чего най­ти не уда­лось. Зато ког­да я попытал­ся перей­ти на точ­но не сущес­тву­ющую стра­ницу, я получил ссыл­ку на домен admirer-gallery.htb.

Ошибка Not Found
Ошиб­ка Not Found

До­бавим най­ден­ный домен в файл /etc/hosts и пов­торим ска­ниро­вание на новом домене. Так най­дем новый под­домен!

10.10.11.137 admirertoo.htb admirer-gallery.htb
ffuf -u http://admirer-gallery.htb -t 256 -w subdomains-top1million-110000.txt -H 'Host: FUZZ.admirer-gallery.htb' -fs 14099
Результат сканирования поддоменов
Ре­зуль­тат ска­ниро­вания под­доменов

Его тоже добав­ляем в /etc/hosts и получа­ем дос­туп к панели авто­риза­ции Adminer.

10.10.11.137 admirertoo.htb admirer-gallery.htb db.admirer-gallery.htb
Страница авторизации Adminer
Стра­ница авто­риза­ции Adminer

Adminer — это лег­ковес­ный инс­тру­мент адми­нис­три­рова­ния СУБД, что‑то вро­де лег­кого вари­анта phpMyAdmin. Так как авто­риза­ция про­исхо­дит по нажатию на кноп­ку, зна­чит, учет­ные дан­ные уже дол­жны быть в исходном коде стра­ницы.

Исходный код страницы
Ис­ходный код стра­ницы

Так мы находим имя поль­зовате­ля и пароль. Но сама панель Adminer ничего, кро­ме номера вер­сии, нам не рас­кры­вает.

Рабочая панель Adminer
Ра­бочая панель Adminer
 

Точка входа

Раз мы зна­ем номер вер­сии, сто­ит поис­кать сущес­тву­ющие экс­пло­иты. Делать это я рекомен­дую при помощи Google.

Поиск эксплоитов для Adminer 4.7.8
По­иск экс­пло­итов для Adminer 4.7.8

Так мы находим инс­трук­цию с опи­сани­ем уяз­вимос­ти (PDF). Этот баг поз­волит нам прос­каниро­вать внут­ренние ресур­сы, а имен­но пор­ты. Как ука­зано в статье, запус­тим скрипт‑редирек­тор.

python2 redirect.py -p 80 http://127.0.0.1

За­тем я решил переб­рать воз­можные СУБД. Их спи­сок есть в до­кумен­тации Adminer, а для перебо­ра я исполь­зовал Burp.

Список поддерживаемых СУБД
Спи­сок под­держи­ваемых СУБД
Запрос на сервер
Зап­рос на сер­вер

Вмес­то server встав­ляем СУБД, а вмес­то localhost — свой локаль­ный IP-адрес. Для некото­рых СУБД получим ответ с записью () admirer_ro..., а в дру­гих слу­чаях сов­сем ничего.

Ответ сервера
От­вет сер­вера

Тог­да я нашел исходни­ки Adminer на GitHub и пос­мотрел, как ука­зыва­ются раз­ные модули.

Список модулей
Спи­сок модулей

И пер­вый же модуль elastic дела­ет зап­рос на наш хост.

Запрос на сервер
Зап­рос на сер­вер
Логи редиректора
Ло­ги редирек­тора

А в бра­узе­ре получа­ем код HTML-стра­ницы с сер­вера. Это зна­чит, что мы добились от сер­вера выпол­нения про­изволь­ного зап­роса на дру­гой ресурс.

Ответ сервера
От­вет сер­вера
 

Точка опоры

Те­перь нам нуж­но най­ти внут­ренние сер­висы и получить какую‑нибудь информа­цию от них. Искать их ска­ниро­вани­ем через най­ден­ную уяз­вимость — дело дол­гое и тру­доем­кое, поэто­му нач­нем с поис­ка пор­тов, под­клю­чение к которым филь­тру­ется. Для это­го выпол­ним SYN-ска­ниро­вание.

nmap -p- -sS admirertoo.htb
Результат сканирования портов
Ре­зуль­тат ска­ниро­вания пор­тов

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Подписаться
Уведомить о
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии