В этом рай­тапе я покажу, как исполь­зовать обход авто­риза­ции через SQL-инъ­екцию, затем мы про­экс­плу­ати­руем mPDF и повысим при­виле­гии на сер­вере через сис­тему Linux capabilities, а кон­крет­но — через воз­можность cap_sys_ptrace.

По­лиро­вать свои навыки мы будем при помощи тре­ниро­воч­ного стен­да Faculty с пло­щад­ки Hack The Box. Уро­вень слож­ности заяв­лен как сред­ний.

warning

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

 

Разведка

 

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

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

10.10.11.169 faculty.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).

Страница авторизации faculty.htb
Стра­ница авто­риза­ции faculty.htb
 

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

Поп­робу­ем поис­кать скры­тые катало­ги и фай­лы при помощи ffuf.

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

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

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

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

За­пус­каем с нуж­ными парамет­рами:

ffuf -u 'http://faculty.htb/FUZZ' -r -w php_files_common.txt -t 256
Результат сканирования PHP-файлов
Ре­зуль­тат ска­ниро­вания PHP-фай­лов

Ни­чего инте­рес­ного не находим, поэто­му прой­дем­ся по дос­тупным катало­гам.

ffuf -u 'http://faculty.htb/FUZZ' -r -w directory_2.3_medium.txt -t 256
Результат сканирования каталогов
Ре­зуль­тат ска­ниро­вания катало­гов

На­ходим каталог admin и пов­торя­ем ска­ниро­вание фай­лов в нем.

Результат сканирования PHP-файлов
Ре­зуль­тат ска­ниро­вания PHP-фай­лов
ffuf -u 'http://faculty.htb/admin/FUZZ' -r -w php_files_common.txt -t 256

Са­мая инте­рес­ная из най­ден­ных стра­ниц — авто­риза­ция для адми­нов.

Страница авторизации администратора
Стра­ница авто­риза­ции адми­нис­тра­тора
 

Точка входа

Ра­ботать с вебом я рекомен­дую через Burp Proxy. Пос­мотрим зап­рос и ответ при авто­риза­ции. Узна­ем, что в слу­чае невер­ной пары из логина и пароля в отве­те прос­то получим циф­ру 3.

Ответ сервера при авторизации
От­вет сер­вера при авто­риза­ции

Ес­ли есть фор­ма авто­риза­ции, зна­чит, нуж­но поп­робовать все вари­анты ее обхо­да. Я это делаю по сло­варю с помощью Burp Intruder.

Burp Intruder — вкладка Payload Positions
Burp Intruder — вклад­ка Payload Positions

На­ходим нес­коль­ко наг­рузок c вари­анта­ми отве­та 3. При этом ошиб­ка SQL рас­кры­вает путь к фай­лу.

Результат перебора
Ре­зуль­тат перебо­ра

Так­же при­сутс­твуtт ответ 1. Ско­рее все­го, это показа­тель успешной авто­риза­ции.

Результат перебора (продолжение)
Ре­зуль­тат перебо­ра (про­дол­жение)

Ис­поль­зуем най­ден­ную наг­рузку и заходим на сайт.

Главная страница авторизованного пользователя
Глав­ная стра­ница авто­ризо­ван­ного поль­зовате­ля

Пос­мотрим, что здесь есть инте­рес­ного. К при­меру, уяз­вимой может быть тех­нология фор­мирова­ния отче­та в фор­мате PDF.

Список курсов
Спи­сок кур­сов
Сгенерированный PDF-документ
Сге­нери­рован­ный PDF-документ

Сно­ва смот­рим цепоч­ку зап­росов в Burp Proxy. Видим, что отправ­ляет­ся зап­рос с парамет­ром pdf, где переда­ются закоди­рован­ные в Base64 дан­ные. Затем нас редирек­тит на стра­ницу /mpdf/tmp/<doc>.pdf.

Запрос на загрузку документа
Зап­рос на заг­рузку докумен­та

Burp Inspector поз­воля­ет нам авто­мати­чес­ки декоди­ровать эти дан­ные.

Декодирование данных
Де­коди­рова­ние дан­ных

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

Поиск эксплоита
По­иск экс­пло­ита
 

Точка опоры

Уяз­вимость в mPDF поз­воля­ет получать про­изволь­ные фай­лы с уда­лен­ного хос­та в качес­тве вло­жения в сге­нери­рован­ном PDF-докумен­те. Сос­тавим наг­рузку, исполь­зовав най­ден­ный экс­пло­ит. Для тес­та поп­робу­ем про­читать файл /etc/passwd.

Составление нагрузки
Сос­тавле­ние наг­рузки

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

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

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

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

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


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

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

    Подписаться

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