AWS - EFS Privesc

支持 HackTricks

EFS

更多关于 EFS 的 信息

请记住,为了挂载 EFS,您需要在 EFS 被暴露的子网络中并且有访问权限(安全组)。如果发生这种情况,默认情况下,您将始终能够挂载它,但是,如果它受到 IAM 策略的保护,您需要拥有此处提到的额外权限才能访问它。

elasticfilesystem:DeleteFileSystemPolicy|elasticfilesystem:PutFileSystemPolicy

拥有任何这些权限的攻击者可以 更改文件系统策略授予您访问权限,或仅仅 删除它 以便 授予默认访问

要删除策略:

aws efs delete-file-system-policy \
--file-system-id <value>

要更改它:

aws efs put-file-system-policy --file-system-id <fs-id> --policy file:///tmp/policy.json

// Give everyone trying to mount it read, write and root access
// policy.json:
{
"Version": "2012-10-17",
"Id": "efs-policy-wizard-059944c6-35e7-4ba0-8e40-6f05302d5763",
"Statement": [
{
"Sid": "efs-statement-2161b2bd-7c59-49d7-9fee-6ea8903e6603",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": [
"elasticfilesystem:ClientRootAccess",
"elasticfilesystem:ClientWrite",
"elasticfilesystem:ClientMount"
],
"Condition": {
"Bool": {
"elasticfilesystem:AccessedViaMountTarget": "true"
}
}
}
]
}

elasticfilesystem:ClientMount|(elasticfilesystem:ClientRootAccess)|(elasticfilesystem:ClientWrite)

拥有此权限的攻击者将能够挂载 EFS。如果默认情况下没有给予所有可以挂载 EFS 的人写权限,他将只有读取访问

sudo mkdir /efs
sudo mount -t efs -o tls,iam  <file-system-id/EFS DNS name>:/ /efs/

额外的权限elasticfilesystem:ClientRootAccesselasticfilesystem:ClientWrite可以在文件系统挂载后用于写入文件系统内部,并以root身份访问该文件系统。

潜在影响: 通过在文件系统中定位敏感信息进行间接权限提升。

elasticfilesystem:CreateMountTarget

如果攻击者在子网络中,且该EFS没有挂载目标。他可以利用此权限在他的子网中创建一个

# You need to indicate security groups that will grant the user access to port 2049
aws efs create-mount-target --file-system-id <fs-id> \
--subnet-id <value> \
--security-groups <value>

潜在影响: 通过在文件系统中定位敏感信息间接提升权限。

elasticfilesystem:ModifyMountTargetSecurityGroups

在攻击者发现 EFS 在他的子网络中有挂载目标但没有安全组允许流量的情况下,他可以通过修改所选安全组来改变这一点

aws efs modify-mount-target-security-groups \
--mount-target-id <value> \
--security-groups <value>

潜在影响: 通过在文件系统中定位敏感信息实现间接权限提升。

支持 HackTricks

Last updated