Когда-то давно мы делились с тобой маленькими хаками для поиска различного рода файлов через Google. К примеру, запрос «"index of" + "mp3" -html -htm -php» позволял найти огромное количество директорий с mp3файлами. Но это было не самым интересным.

Главное, что с помощью подобных запросов (сейчас они собраны на www.exploit-db.com/google-dorks) можно было без труда найти оставленные открытыми админки, конфиги, базы данных и тому подобные вкусняшки. Тема актуальна и сейчас, но уже не сильно интересна. Теперь, когда все идет к тому, что облачные хранилища станут основным местом для хостинга файлов, было бы странно, если никто не попытался бы засунуть свой нос в чужие контейнеры с данными. Первым, кто об этом рассказал, стал британский исследователь DigiNinja, который пощупал сервис Amazon S3.

S3 расшифровывается как Simple Storage Server, это простое хранилище файлов от Amazon. Если совсем кратко, то этот сервис позволяет пользователям хранить сколько угодно файлов и выдерживать сколько угодно большую нагрузку. При этом клиент платит за используемое дисковое пространство (от $0,055 за Гб), количество запросов к ним ($0,01 за 10 000 запросов), исходящий трафик (от $0,050 за Гб). Пару слов о том, как устроено хранение файлов.

Любой файл находится внутри так называемого bucket’а (концептуальное понятие контейнера внутри Amazon S3), в котором может находиться неограниченное количество объектов. Например, если объект называется xtoolz/scanner.zip и находится в bucket’е xakep, то к нему можно обратиться, используя URL http://xakep.s3.amazonaws.com/xtoolz/scanner.zip. Доступ к bucket’у может быть открытым, а может быть ограничен.

Помимо этого можно дополнительно разрешить или запретить доступ к конкретному объекту. Например, если какой-то файл могли скачать все желающие, то у него должны быть права для чтения — «All».

Что сделал DigiNinja? Он создал в своем аккаунте S3 несколько bucket’ов, открытых и закрытых, с различными правами доступа к объектам, после чего изучил ответы сервера при обращении к ним.

Ответ для закрытого контейнера:

<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>7F3987394757439B</RequestId>
<HostId>kyMIhkpoWafjruFFairkfi m383jtznAnwiyKSTxv7+/
CIHqMBcqrXV2gr+EuALUp</HostId>
</Error>

Public bucket. Ответ для открытого bucket’а

<ListBucketResult xmlns="http://s3.amazonaws.com
/doc/2006-03-01/">
<Name>digipublic</Name>
<Prefi x></Prefi x>
<Marker></Marker>
<MaxKeys>1000</MaxKeys>
<IsTruncated>false</IsTruncated>
<Contents>
<Key>my_fi le</Key>
<LastModifi ed>2011-05-16T10:47:16.000Z</LastModifi ed>
<ETag>"51fff3c9087648822c0a21212907934a"</ETag>
<Size>6429</Size>
<StorageClass>STANDARD</StorageClass>
</Contents>
</ListBucketResult>

Для закрытого bucket’а сервер возвращает ошибку (Access Denied), а для открытого — список файлов. Теперь посмотри на URL, с помощью которого производится обращение к bucket’у (%bucket_name%.s3.amazonaws.com) — имя подставляется прямо в URL. Получается, мы без проблем можем взять wordlist и проверить существование bucket’ов с такими именами, заодно узнавая их статус. Для открытых контейнеров можно сразу получить еще и список файлов, правда, это не значит, что они доступны для скачивания (этому могут препятствовать права доступа к конкретным объектам). Но обращаясь к каждому из объектов, можно изучить ответ сервера: «403 Forbidden» (доступ запрещен) или «200 OK» (доступ разрешен).

Таким образом, легко составляется список файлов, доступных для непосредственно загрузки. В результате DigiNinja набросал на Ruby простой сценарий Bucket Finder (www.digininja.org/projects/bucket_finder.php), реализовав описанную идею. Ради эксперимента парень взял wordlist с наиболее часто используемыми именами пользователей (2226 слов) и с помощью этого скрипта прошелся по нему. В итоге нашлось 848 закрытых и 131 открытых bucket’ов. Для загрузки при этом было доступно 9683 файлов, среди которых оказались и пользовательские базы, которые в открытом доступе быть ну никак не должны.

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

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

    Подписаться

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