В этой статье я покажу, как про­водить ата­ку padding oracle и экс­плу­ати­ровать сай­ты через SQL-инъ­екцию. Затем мы получим дос­туп к машине через уяз­вимость в ExifTool и повысим при­виле­гии на хос­те через перепол­нение буфера в поль­зователь­ском при­ложе­нии.

По­лиго­ном нам пос­лужит Overflow — машина с пло­щад­ки Hack The Box, оце­нен­ная как слож­ная. Ее про­хож­дение дей­стви­тель­но ока­залось нес­коль­ко запутан­ным.

warning

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

 

Разведка

 

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

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

10.10.11.119 overflow.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.6p1;
  • 25 — служ­ба Postfix SMTP;
  • 80 — веб‑сер­вер Apache 2.4.29.

К SSH дос­тупа мы пока не име­ем, что делать с SMTP-сер­вером на дан­ном эта­пе, тоже неяс­но, поэто­му прос­матри­ваем веб.

Главная страница overflow.htb
Глав­ная стра­ница overflow.htb

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

Страница Profile
Стра­ница Profile
Страница Blog
Стра­ница Blog
 

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

Ни­чего инте­рес­ного не обна­ружив, я решил прос­каниро­вать катало­ги и сай­ты. Это поможет нам най­ти скры­тый адми­нис­тра­тором кон­тент.

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

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

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

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

На­бира­ем коман­ду

ffuf -u http://overflow.htb/home/FUZZ -t 256 -w php_files_common.txt
Результат сканирования PHP-файлов с помощью ffuf
Ре­зуль­тат ска­ниро­вания PHP-фай­лов с помощью ffuf

Мы наш­ли файл logs.php. Так­же я прос­каниро­вал кор­невой каталог сай­та и получил допол­нитель­но дирек­торию config, которая пока что нам ничего не дает.

Результат сканирования каталогов с помощью ffuf
Ре­зуль­тат ска­ниро­вания катало­гов с помощью ffuf

При попыт­ке зап­росить содер­жимое logs.php получа­ем сооб­щение, что нам зак­рыт дос­туп.

Страница logs.php
Стра­ница logs.php
 

Точка входа

Пе­рехо­дим к более глу­боко­му ана­лизу тех­нологий сай­та. И обра­тим вни­мание на стран­ную пос­ледова­тель­ность в cookie — auth.

Перехваченный запрос на сервер
Пе­рех­вачен­ный зап­рос на сер­вер

Я поп­робовал про­вер­нуть раз­ные манипу­ляции с этой стро­кой: декоди­рова­ние, час­тичное изме­нение, допол­нение и уре­зание. В резуль­тате я нат­кнул­ся на код отве­та 302 и редирект на стра­ницу logot.php с парамет­ром err=1.

Ответ сервера
От­вет сер­вера
Запрос после редиректа
Зап­рос пос­ле редирек­та

От­крыв эту стра­ницу в бра­узе­ре, обна­ружим сооб­щение «Invalid padding», что сра­зу натал­кива­ет на мысль об ата­ке padding oracle.

Сообщение об ошибке
Со­обще­ние об ошиб­ке
 

Padding oracle

Это ата­ка на шиф­рование CBC, при котором сооб­щение раз­бива­ется на бло­ки дли­ной X бай­тов и каж­дый блок ксо­рит­ся с пре­дыду­щим зашиф­рован­ным бло­ком. Затем резуль­тат шиф­рует­ся. Что очень важ­но, шиф­рование выпол­няет­ся бло­ками фик­сирован­ного раз­мера.

Что­бы гаран­тировать точ­ное раз­мещение откры­того тек­ста в одном или нес­коль­ких бло­ках, час­то исполь­зует­ся допол­нение (padding). Это допол­нение может быть выпол­нено нес­коль­кими спо­соба­ми (самый рас­простра­нен­ный — PKCS7). В PKCS7 допол­нение будет сос­тоять из одно­го и того же чис­ла: количес­тва недос­тающих бай­тов.

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

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

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

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

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


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

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

    Подписаться

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