AWS - RDS Privesc
RDS - İlişkisel Veritabanı Servisi
RDS hakkında daha fazla bilgi için:
https://github.com/carlospolop/hacktricks-cloud/blob/tr/pentesting-cloud/aws-security/aws-hizmetleri/aws-veritabanlari/aws-iliskisel-veritabani-rds-enum.mdrds:ModifyDBInstance
rds:ModifyDBInstance
Bu izinle bir saldırgan, ana kullanıcının şifresini değiştirebilir ve veritabanına giriş yapabilir:
Veritabanına bağlantı kurabilmeniz gerekecek (genellikle yalnızca iç ağlardan erişilebilirler).
Potansiyel Etki: Veritabanları içinde hassas bilgiler bulunabilir.
rds-db:connect
Belgelere göre, bu izne sahip bir kullanıcı DB örneğine bağlanabilir.
RDS Rolü IAM izinlerini Kötüye Kullanma
Postgresql (Aurora)
SELECT datname FROM pg_database;
komutunu çalıştırarak rdsadmin
adında bir veritabanı bulursanız, içinde bir AWS postgresql veritabanı olduğunu bilirsiniz.
İlk olarak, bu veritabanının başka bir AWS hizmetine erişmek için kullanılıp kullanılmadığını kontrol edebilirsiniz. Bunun için yüklü uzantılara bakabilirsiniz:
Eğer aws_s3
gibi bir şey bulursanız, bu veritabanının S3 üzerinde bir tür erişimi olduğunu varsayabilirsiniz (aws_ml
ve aws_lambda
gibi diğer uzantılar da vardır).
Ayrıca, aws rds describe-db-clusters
komutunu çalıştırma izniniz varsa, kümenin bağlı bir IAM Rolü olup olmadığını AssociatedRoles
alanında görebilirsiniz. Eğer varsa, veritabanının diğer AWS hizmetlerine erişim için hazırlandığını varsayabilirsiniz. Rolün adı (veya rolün izinleri elde edilebilirse) temel alarak, veritabanının ne tür ek erişime sahip olabileceğini tahmin edebilirsiniz.
Şimdi, bir kovada bir dosyayı okumak için tam yolunu bilmelisiniz. Aşağıdaki komutla okuyabilirsiniz:
Eğer ham AWS kimlik bilgilerine sahipseniz, bunları kullanarak aşağıdaki komutu kullanarak S3 verilerine erişebilirsiniz:
Postgresql, S3' e erişebilmek için herhangi bir parametre grubu değişkenini değiştirmeye ihtiyaç duymaz.
Mysql (Aurora)
Bir mysql içinde, SELECT User, Host FROM mysql.user;
sorgusunu çalıştırırsanız ve rdsadmin
adında bir kullanıcı varsa, bir AWS RDS mysql db içinde olduğunuzu varsayabilirsiniz.
Mysql içinde show variables;
komutunu çalıştırın ve aws_default_s3_role
, aurora_load_from_s3_role
, aurora_select_into_s3_role
gibi değişkenlerin değerleri varsa, veritabanının S3 verilerine erişmek için hazırlandığını varsayabilirsiniz.
Ayrıca, aws rds describe-db-clusters
komutunu çalıştırma izniniz varsa, kümenin herhangi bir ilişkili rolü olup olmadığını kontrol edebilirsiniz, bu genellikle AWS hizmetlerine erişim anlamına gelir).
Şimdi, bir kovada bir dosya okumak için tam yolunu bilmeniz gerekmektedir. Aşağıdaki komutla okuyabilirsiniz:
rds:AddRoleToDBCluster
, iam:PassRole
rds:AddRoleToDBCluster
, iam:PassRole
rds:AddRoleToDBCluster
ve iam:PassRole
izinlerine sahip bir saldırgan, mevcut bir RDS örneğine belirtilen bir rol ekleyebilir. Bu, saldırganın hassas verilere erişmesine veya örnekteki verileri değiştirmesine olanak tanıyabilir.
Potansiyel Etki: RDS örneğindeki hassas verilere erişim veya yetkisiz veri değişiklikleri. Unutmayın ki bazı veritabanları ek yapılandırmalar gerektirir, örneğin Mysql, parametre gruplarında rol ARN'sini belirtmek gerekmektedir.
rds:CreateDBInstance
rds:CreateDBInstance
Sadece bu izinle bir saldırgan, zaten var olan ve bir IAM rolüne sahip olan bir küme içinde yeni bir örnek oluşturabilir. Ana kullanıcı şifresini değiştiremeyecek, ancak yeni veritabanı örneğini internete açabilir:
rds:CreateDBInstance
, iam:PassRole
rds:CreateDBInstance
, iam:PassRole
TODO: Test
rds:CreateDBInstance
ve iam:PassRole
izinlerine sahip bir saldırgan, belirtilen bir rolle ilişkilendirilmiş yeni bir RDS örneği oluşturabilir. Saldırgan daha sonra potansiyel olarak örnekteki hassas verilere erişebilir veya verileri değiştirebilir.
Rol/önek ilişkilendirme için bazı gereksinimler (buradan):
Profil hesabınızda mevcut olmalıdır.
Profilin, Amazon EC2'nin varsayılan olarak yetkilendirilmiş olduğu bir IAM rolü olmalıdır.
Örnek profil adı ve ilişkili IAM rol adı
AWSRDSCustom
önekiyle başlamalıdır.
Potansiyel Etki: RDS örneğindeki hassas verilere erişim veya yetkisiz veri değişiklikleri.
rds:AddRoleToDBInstance
, iam:PassRole
rds:AddRoleToDBInstance
, iam:PassRole
rds:AddRoleToDBInstance
ve iam:PassRole
izinlerine sahip bir saldırgan, belirtilen bir rolü mevcut bir RDS örneğine ekleyebilir. Bu, saldırganın örnekteki hassas verilere erişmesine veya verileri değiştirmesine olanak tanıyabilir.
Bu işlem, DB örneğinin bir küme dışında olması gerekmektedir.
Potansiyel Etki: RDS örneğindeki hassas verilere erişim veya yetkisiz veri değişiklikleri.
Last updated