Перечисление и эксфильтрация бакетов AWS S3

Перечисление и эксфильтрация бакетов AWS S3

Продолжим тему поиска уязвимостей AWS S3. В предыдущей статье мы говорили о получение содержимого бакетов AWS с помощью AWS CLI. Сегодня рассмотрим перечисление и эксфильтрация бакетов AWS S3.

Еще по теме: Взлом удаленного хоста через Git

Перечисление и эксфильтрация бакетов AWS S3

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

AWS CLI

На­чина­ем всег­да с перечис­ления дос­тупных бакетов:

По­иск бакетов
По­иск бакетов

Те­перь можем изу­чить все ACL, нас­тро­енные на бакет:

Нап­ример:

Прос­мотр ACL
Прос­мотр ACL

Нес­ложно догадать­ся, что Grantee — объ­ект, которо­му выда­ются пра­ва.

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

Нап­ример:

Ес­ли логиро­вания нет, вывода не будет.

От­сутс­твие логиро­вания
От­сутс­твие логиро­вания

Ес­ли же логиро­вание при­сутс­тву­ет, AWS CLI уве­домит нас об этом.

Ло­гиро­вание сущес­тву­ет
Ло­гиро­вание сущес­тву­ет

В дан­ном слу­чае все логи дос­тупа к бакету buckettestlogging будут лежать в бакете siteru.

Обя­затель­но пос­мотри и полити­ку, при­вязан­ную к бакету:

Нап­ример:

Изу­чаем полити­ки, при­вязан­ные к бакету
Изу­чаем полити­ки, при­вязан­ные к бакету

По­лити­ки быва­ют сле­дующие:

  • BlockPublicAcls — если true, то пре­дот­вра­щает соз­дание любых ACL или изме­нение сущес­тву­ющих ACL, дающих пуб­личный дос­туп к бакету;
  • IgnorePublicAcls — если true, то любые дей­ствия с обще­дос­тупны­ми ACL будут игно­риро­вать­ся; это не помешать их соз­дать, но пре­дот­вра­тит пос­ледс­твия;
  • BlockPublicPolicy — если true, то ста­вит­ся зап­рет на соз­дание или изме­нение полити­ки, которая раз­реша­ет пуб­личный дос­туп;
  • RestrictedPublicBuckets — если true, то к бакету смо­гут получить дос­туп лишь авто­ризо­ван­ные поль­зовате­ли. Собс­твен­но, из‑за это­го парамет­ра я и совето­вал тебе ука­зывать дан­ные любой учет­ной записи AWS.

На­конец, получа­ем все объ­екты в опре­делен­ном бакете:

При­мер:

Спи­сок объ­ектов
Спи­сок объ­ектов

Так­же ты можешь получить информа­цию об ACL кон­крет­ного объ­екта:

При­мер:

Эксфильтрация

Что­бы дос­тать дан­ные из бакета, нам тре­бует­ся дос­туп на чте­ние (READ).

Спо­собы получе­ния дос­тупа к объ­ектам
Спо­собы получе­ния дос­тупа к объ­ектам

Да­вай пов­торим прой­ден­ное. Как ты уже понял, самый час­тый мис­конфиг — всем поль­зовате­лям пре­дос­тавля­ются пра­ва на чте­ние. В таком слу­чае мы можем най­ти адрес бакета и про­читать его содер­жимое даже без аутен­тифика­ции. Так­же быва­ет, что пра­ва на чте­ние есть лишь у авто­ризо­ван­ных поль­зовате­лей либо у одно­го кон­крет­ного поль­зовате­ля. В таком слу­чае мы смо­жем получить дос­туп к содер­жимому через API или CLI. Наконец, дос­туп к бакету мож­но получить, исполь­зуя спе­циаль­но сге­нери­рован­ную вре­мен­ную ссыл­ку.

По­лез­но так­же смот­реть раз­меры бакета и опись содер­жимого:

При­мер:

Раз­меры бакета
Раз­меры бакета

Как ска­чивать отдель­ный объ­ект с помощью get-object либо весь бакет с помощью sync, мы уже разоб­рали. Теперь обра­тим вни­мание на вре­мен­ную ссыл­ку для ска­чива­ния объ­ектов. Любой, кто име­ет валид­ные учет­ные дан­ные и дос­туп к бакету, может соз­дать ее:

При­мер:

По­луче­ние вре­мен­ной ссыл­ки на ска­чива­ние объ­екта
По­луче­ние вре­мен­ной ссыл­ки на ска­чива­ние объ­екта

В следующей статье поговорим о повышении привилегий при пентесте AWS S3 Buckets.

РЕКОМЕНДУЕМ:

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

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

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