Категория > Новости > HTB Overflow. Упражняемся в атаке padding oracle и эксплуатируем баг в ExifTool - «Новости»

HTB Overflow. Упражняемся в атаке padding oracle и эксплуатируем баг в ExifTool - «Новости»


13-04-2022, 00:02. Автор: Johnson
Hack The Box, оце­нен­ная как слож­ная. Ее про­хож­дение дей­стви­тель­но ока­залось нес­коль­ко запутан­ным.

warning


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


Читайте также - Ведущие сайты знакомств в России и на всей территории СНГ,
объединяющие тысячи людей каждый день, joli.


 

Разведка


 

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


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


10.10.11.119 overflow.htb

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



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


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


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


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

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


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

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


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



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


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


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




  • -w — сло­варь (я исполь­зую сло­вари из набора SecLists);


  • -t — количес­тво потоков;


  • -u — URL;


  • -fc — исклю­чить из резуль­тата отве­ты с кодом 403.


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


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

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


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

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


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

Точка входа


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


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

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


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

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


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

Padding oracle


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


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



Перейти обратно к новости