AWS - RDS Privesc
RDS - Servicio de base de datos relacional
Para obtener más información sobre RDS, consulta:
rds:ModifyDBInstance
rds:ModifyDBInstance
Con ese permiso, un atacante puede modificar la contraseña del usuario maestro y el inicio de sesión dentro de la base de datos:
Necesitarás poder contactar a la base de datos (generalmente solo son accesibles desde redes internas).
Impacto potencial: Encontrar información sensible dentro de las bases de datos.
rds-db:connect
Según la documentación un usuario con este permiso podría conectarse a la instancia de la base de datos.
Abuso de permisos IAM del rol RDS
Postgresql (Aurora)
Si al ejecutar SELECT datname FROM pg_database;
encuentras una base de datos llamada rdsadmin
sabrás que estás dentro de una base de datos postgresql de AWS.
Primero puedes verificar si esta base de datos ha sido utilizada para acceder a algún otro servicio de AWS. Podrías verificar esto observando las extensiones instaladas:
Si encuentras algo como aws_s3
puedes asumir que esta base de datos tiene algún tipo de acceso sobre S3 (hay otras extensiones como aws_ml
y aws_lambda
).
Además, si tienes permisos para ejecutar aws rds describe-db-clusters
puedes ver si el clúster tiene algún Rol IAM adjunto en el campo AssociatedRoles
. Si hay alguno, puedes asumir que la base de datos fue preparada para acceder a otros servicios de AWS. Basándote en el nombre del rol (o si puedes obtener los permisos del rol) podrías adivinar qué acceso adicional tiene la base de datos.
Ahora, para leer un archivo dentro de un bucket necesitas conocer la ruta completa. Puedes leerlo con:
Si tuvieras credenciales de AWS en bruto también podrías usarlas para acceder a datos de S3 con:
Postgresql no necesita cambiar ninguna variable de grupo de parámetros para poder acceder a S3.
Mysql (Aurora)
Dentro de un mysql, si ejecutas la consulta SELECT User, Host FROM mysql.user;
y hay un usuario llamado rdsadmin
, puedes asumir que estás dentro de una base de datos mysql de AWS RDS.
Dentro del mysql ejecuta show variables;
y si las variables como aws_default_s3_role
, aurora_load_from_s3_role
, aurora_select_into_s3_role
tienen valores, puedes asumir que la base de datos está preparada para acceder a datos de S3.
Además, si tienes permisos para ejecutar aws rds describe-db-clusters
puedes verificar si el clúster tiene algún rol asociado, lo que generalmente significa acceso a los servicios de AWS).
Ahora, para leer un archivo dentro de un bucket necesitas conocer la ruta completa. Puedes leerlo con:
rds:AddRoleToDBCluster
, iam:PassRole
rds:AddRoleToDBCluster
, iam:PassRole
Un atacante con los permisos rds:AddRoleToDBCluster
e iam:PassRole
puede agregar un rol especificado a una instancia de RDS existente. Esto podría permitir al atacante acceder a datos sensibles o modificar los datos dentro de la instancia.
Impacto Potencial: Acceso a datos sensibles o modificaciones no autorizadas a los datos en la instancia de RDS. Tenga en cuenta que algunas bases de datos requieren configuraciones adicionales como Mysql, que necesita especificar el ARN del rol en los grupos de parámetros también.
rds:CreateDBInstance
rds:CreateDBInstance
Solo con este permiso, un atacante podría crear una nueva instancia dentro de un clúster que ya existe y tiene un rol IAM adjunto. No podrá cambiar la contraseña del usuario principal, pero podría exponer la nueva instancia de la base de datos a Internet:
rds:CreateDBInstance
, iam:PassRole
rds:CreateDBInstance
, iam:PassRole
TODO: Probar
Un atacante con los permisos rds:CreateDBInstance
e iam:PassRole
puede crear una nueva instancia de RDS con un rol especificado adjunto. El atacante luego puede potencialmente acceder a datos sensibles o modificar los datos dentro de la instancia.
Algunos requisitos del rol/perfil de instancia para adjuntar (de aquí):
El perfil debe existir en tu cuenta.
El perfil debe tener un rol IAM que Amazon EC2 tiene permisos para asumir.
El nombre del perfil de instancia y el nombre del rol IAM asociado deben comenzar con el prefijo
AWSRDSCustom
.
Impacto potencial: Acceso a datos sensibles o modificaciones no autorizadas en los datos de la instancia de RDS.
rds:AddRoleToDBInstance
, iam:PassRole
rds:AddRoleToDBInstance
, iam:PassRole
Un atacante con los permisos rds:AddRoleToDBInstance
e iam:PassRole
puede agregar un rol especificado a una instancia de RDS existente. Esto podría permitir al atacante acceder a datos sensibles o modificar los datos dentro de la instancia.
La instancia de la base de datos debe estar fuera de un clúster para esto.
Impacto potencial: Acceso a datos sensibles o modificaciones no autorizadas en la instancia de RDS.
Última actualización