Атака Padding oracle с помощью скрипта PadBuster

Атака Padding oracle PadBuster

Сегодня на примере виртуальной машины Overflow с пло­щад­ки HTB, рассмотрим скрипт PadBuster, который используется для реализации атаки Padding oracle.

Еще по теме: Как реализовать атаку DCSync

Атака Padding oracle

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

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

Нап­ример, если в откры­том тек­сте отсутс­тву­ют два бай­та, то запол­нение будет:

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

Атака Padding oracle с помощью скрипта PadBuster

При анализе сайта уязвимой машины Overflow HTB мое внимание привлекла стран­ная пос­ледова­тель­ность в cookie — auth.

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

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

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

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

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

Для работы будем исполь­зовать скрипт PadBuster. Я перере­гис­три­ровал поль­зовате­ля, получил куки и ука­зал их это­му чудо‑скрип­ту для работы.

За­пуск скрипта PadBuster
За­пуск скрипта PadBuster

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

Вскры­тие исходно­го тек­ста
Вскры­тие исходно­го тек­ста

В ито­ге мы получа­ем откры­тый текст, зашиф­рован­ный в cookie: user=ralf. Теперь мы понима­ем фор­мат дан­ных для аутен­тифика­ции. Сер­вер рас­шифро­выва­ет куки и опре­деля­ет текуще­го поль­зовате­ля.

Но эта ата­ка помога­ет не толь­ко вскрыть зашиф­рован­ные дан­ные, но и заново зашиф­ровать свои! Так мы можем ука­зать PadBuster, что нуж­но зашиф­ровать подоб­ную стро­ку для поль­зовате­ля Admin.

Но­вые переза­шиф­рован­ные дан­ные
Но­вые переза­шиф­рован­ные дан­ные

Спус­тя некото­рое вре­мя мы получим куки, при­менив которые под­клю­чим­ся от име­ни адми­нис­тра­тора.

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

Фор­ма авто­риза­ции Made Simple
Фор­ма авто­риза­ции Made Simple

Так как никаких учет­ных дан­ных у нас нет, нуж­но про­верить сущес­тву­ющие экс­пло­иты, а для это­го узнать вер­сию про­дук­та. Исходни­ки Made Simple откры­ты, и мож­но под­смот­реть путь к фай­лу с опи­сани­ем обновле­ний:

Атака Padding oracle. Вер­сия Made Simple
Вер­сия Made Simple

В этом фай­ле пос­ледней упо­мина­ется вер­сия 2.2.8. Ути­лита searchsploit для поис­ка экс­пло­итов в базе Exploit-DB помога­ет най­ти PoC экс­плу­ата­ции SQL Injection для вер­сии мень­ше 2.2.10.

По­иск экс­пло­итов с помощью searchsploit
По­иск экс­пло­итов с помощью searchsploit

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

Padding oracle atack. Ло­ги сай­та
Ло­ги сай­та

В самих логах ничего полез­ного не находим. Одна­ко если пос­мотреть на зап­рос в Burp, то сам спо­соб зап­роса прив­лека­ет вни­мание.

Padding oracle atack. Зап­рос логов в Burp
Зап­рос логов в Burp

Стра­ница logs.php при­нима­ет параметр name.

На этом все. Теперь вы знаете, как использовать PadBuster для реализации атаки Padding oracle.

Полезные ссылки:

ВКонтакте
OK
Telegram
WhatsApp
Viber

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *